From 882baffa17443e83840e4a18d73c06153d0bf073 Mon Sep 17 00:00:00 2001 From: zhaoxiaolin Date: Wed, 21 Feb 2024 16:03:31 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E7=94=9F=E4=BA=A7=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E5=9B=9E=E4=BC=A0+=E5=B7=B2=E6=B4=BE=E5=8F=91?= =?UTF-8?q?=E7=9A=84=E8=AE=A2=E5=8D=95=E4=B8=8D=E5=86=8D=E8=BF=9B=E8=A1=8C?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ProOrderServiceImpl.java | 193 ++++++++---------- .../impl/ProOrderWorkorderServiceImpl.java | 1 + 2 files changed, 91 insertions(+), 103 deletions(-) diff --git a/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderServiceImpl.java b/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderServiceImpl.java index 349ee1b6d..23ebea08d 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderServiceImpl.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderServiceImpl.java @@ -108,23 +108,23 @@ public class ProOrderServiceImpl implements IProOrderService { } } } - //校验各工序设备是否已选择 - List processes = proOrderMapper.getRouteProcess(splitOrderDTO.getRouteCode()); - if (splitOrderDTO.getProdLineCodeArray().length == 0) { + //校验各工序设备是否已选择 + List processes= proOrderMapper.getRouteProcess(splitOrderDTO.getRouteCode()); + if(splitOrderDTO.getProdLineCodeArray().length == 0){ checkout = false; return error(500, "必须选择工单生产设备!"); - } else { + }else{ String codeArray = JSONArray.toJSONString(splitOrderDTO.getProdLineCodeArray()); - for (int i = 0; i < processes.size(); i++) { - if (codeArray.indexOf(processes.get(i).getValue()) < 0) { + for(int i=0;i wetDetails = new ArrayList<>(); //设备-根据工单获取实际规划设备路线 String[][] lineCodes = splitOrderDTO.getProdLineCodeArray();//proRfidProcessDetailMapper.getActuaEquips(rfidInfo); ProWetMaterialPlanDetail wetDetail = null; - for (int c1 = 0; c1 < lineCodes.length; c1++) { - if (lineCodes[c1][1].startsWith("L")) {//L1-8湿料罐 + for(int c1= 0;c1 0) { + if (proOrder.getChildren() != null && proOrder.getChildren().size()>0) { ProOrderDTO newProOrder = (ProOrderDTO) proOrder.getChildren().get(0); // 更新换算值 conver = (newProOrder.getQuantity() / quantity); @@ -367,12 +367,12 @@ public class ProOrderServiceImpl implements IProOrderService { StringBuilder prodLineName = new StringBuilder(""); StringBuilder equipCods = new StringBuilder("'"); JSONArray codeArray = JSONArray.parseArray(proOrderWorkorder.getProdLineCode()); - for (int c = 0; c < codeArray.size(); c++) { + for(int c=0;c equipMap = proOrderMapper.getEquipInfoByCodes(equipCods.substring(1));//设备字典 + Map equipMap = proOrderMapper.getEquipInfoByCodes(equipCods.substring(1));//设备字典 for (int c = 0; c < codeArray.size(); c++) { String equipCode = codeArray.getJSONArray(c).getString(1); prodLineName.append(equipMap.get(equipCode).getLabel() + ","); @@ -387,7 +387,7 @@ public class ProOrderServiceImpl implements IProOrderService { // 格式化数据 for (ProOrderWorkorderBatch batchCode : batchCodeList) { batchCodes.add(new StringBuilder(batchCode.getBatchCode()).append(";")); - batchNums.add(new StringBuilder(batchCode.getBatchQuantity() + "").append(";")); + batchNums.add(new StringBuilder(batchCode.getBatchQuantity()+"").append(";")); } // 将查询结果设置到当前工单对象 proOrderWorkorder.setShiftDesc(shiftDesc); @@ -434,40 +434,32 @@ public class ProOrderServiceImpl implements IProOrderService { // //获取当前所选工厂 HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); String key = "#header.poolName"; - sapqo.setWerk(request.getHeader(key.substring(8)).replace("ds_", "")); + sapqo.setWerk(request.getHeader(key.substring(8)).replace("ds_","")); SapProOrder maxCreateTime = proOrderMapper.getMaxCreatetime(); - if (maxCreateTime == null) { + if(maxCreateTime == null ){ sapqo.setErdat(DateFormatUtils.format(new Date(), "yyyyMMdd"));//S_ERDAT(创建日期) 例如:20230923 - } else { + }else{ sapqo.setErdat(maxCreateTime.getCreateTimeStr());//S_ERDAT(创建日期) 例如:20230923 } -// //添加调用sap日志 -// SysSapLog sysSapLog = new SysSapLog(); -// sysSapLog.setId(IdUtils.fastSimpleUUID()); -// sysSapLog.setMesssge(sapqo.toString()); -// sysSapLog.setMethod("syncSAP"); -// sysSapLog.setReqcode("请求"); -// sysSapLog.setCreateTime(DateUtils.getNowDate()); -// proOrderMapper.addSapLog(sysSapLog); - logger.info("手动订单同步:【参数】" + JSONObject.toJSONString(sapqo)); - //取>=20230923的sap数据 + logger.info("手动订单同步:【参数】"+ JSONObject.toJSONString(sapqo)); + //取>=20230923的sap数据 R> rSapProOrder = remoteSapService.shopOrderSync(sapqo);//sap只能同步指定日期的数据 List newOrders = rSapProOrder.getData(); - if (CollectionUtils.isEmpty(newOrders)) { - System.out.println("无" + sapqo.getErdat() + "之后的最新订单"); - } else { + if(CollectionUtils.isEmpty(newOrders)){ + System.out.println("无"+sapqo.getErdat()+"之后的最新订单"); + }else { syncSAPFunc(newOrders, "Job"); } } - public String syncSAPFunc(List newOrders, String syncUser) { + public String syncSAPFunc(List newOrders,String syncUser){ String failOrder = ""; ProOrder proOrder = null; - for (SapProOrder sapProOrder : newOrders) { - if ("LJ88".equals(sapProOrder.getOrderType())) { + for (SapProOrder sapProOrder:newOrders) { + if("LJ88".equals(sapProOrder.getOrderType())){ //工单生产后整个订单就被锁定//订单存在就更新,不存在就插入 proOrder = new ProOrder(); BeanUtils.copyProperties(sapProOrder, proOrder); @@ -479,38 +471,38 @@ public class ProOrderServiceImpl implements IProOrderService { return failOrder; } - public String syncImportFunc(List newOrders) { + public String syncImportFunc(List newOrders){ String failOrder = ""; - for (ProOrder proOrder : newOrders) { + for (ProOrder proOrder:newOrders) { //prodType->@Excel(name = "产品类型", readConverterExp = "white=白坯,prod=成品") proOrder.setCreateBy(SecurityUtils.getUsername()); proOrder.setSyncUser("import"); proOrder.setPlanFactoryCode(proOrder.getFactoryCode()); String msg = syncFunc(proOrder); - if (StringUtils.isNotBlank(msg)) { - failOrder += msg + ","; + if(StringUtils.isNotBlank(msg)){ + failOrder += msg+","; } } return failOrder; } @Transactional(rollbackFor = Exception.class) - public String syncFunc(ProOrder proOrder) { + public String syncFunc(ProOrder proOrder){ String failOrder = ""; //pro_order_workorder Date nowDate = DateUtils.getNowDate(); ProOrder orderExit = proOrderMapper.selectProOrderByOrderCode(proOrder.getOrderCode()); - if (orderExit == null) {//不存在就插入 + if (orderExit==null) {//不存在就插入 proOrder.setId(IdUtils.fastSimpleUUID()); proOrder.setCreateTime(nowDate); proOrderMapper.insertProOrder(proOrder); - logger.info("=======订单" + proOrder.getOrderCode() + "同步成功"); + logger.info("=======订单"+proOrder.getOrderCode()+"同步成功"); } else {//存在,如果没活动更新,否则不允许更新,关闭订单 proOrder.setId(orderExit.getId()); proOrder.setQuantitySplit(0L); ProOrderWorkorder owork = new ProOrderWorkorder(); owork.setOrderCode(proOrder.getOrderCode()); - owork.setStatusArray("'w2','w3','w4'");//已派发w1未派w0活动w2报工w3暂停w4 + owork.setStatusArray("'w1','w2','w3','w4'");//已派发w1未派w0活动w2报工w3暂停w4 List workOrders = proOrderWorkorderMapper.selectProOrderWorkorderList(owork); if (CollectionUtils.isEmpty(workOrders)) {//更新 proOrder.setUpdateTime(nowDate); @@ -526,10 +518,10 @@ public class ProOrderServiceImpl implements IProOrderService { //删除工单pro_order_workorder proOrderWorkorderMapper.deleteProOrderWorkorderByOrderIds(ids); } - logger.info("=======订单" + proOrder.getOrderCode() + "同步成功"); - } else { + logger.info("=======订单"+proOrder.getOrderCode()+"同步成功"); + }else{ failOrder = proOrder.getOrderCode(); - logger.info("=======订单" + failOrder + "同步失败"); + logger.info("=======订单"+failOrder+"同步忽略,订单已经派发"); } } return failOrder; @@ -568,11 +560,11 @@ public class ProOrderServiceImpl implements IProOrderService { @Transactional public AjaxResult importOrder(List orderList) { BaseProduct bpqo = null; - for (ProOrder order : orderList) { - if (StringUtils.isBlank(order.getOrderType())) { + for(ProOrder order:orderList){ + if(StringUtils.isBlank(order.getOrderType())){ order.setOrderType("LJ01"); } - String factoryCode = ServletUtils.getRequest().getHeader("PoolName").replace("ds_", ""); + String factoryCode = ServletUtils.getRequest().getHeader("PoolName").replace("ds_",""); order.setPlanFactoryCode(factoryCode); order.setFactoryCode(factoryCode); order.setCreateBy(SecurityUtils.getUsername()); @@ -582,7 +574,7 @@ public class ProOrderServiceImpl implements IProOrderService { bpqo = new BaseProduct(); bpqo.setProductCode(order.getProdCode()); List bp = baseProductMapper.selectBaseProductList(bpqo); - if (!CollectionUtils.isEmpty(bp)) { + if(!CollectionUtils.isEmpty(bp)){ order.setProdDesc(bp.get(0).getProductDescZh()); } } @@ -592,8 +584,8 @@ public class ProOrderServiceImpl implements IProOrderService { // 如果数据校验成功 if (checkResult.isSuccess()) { String info = syncImportFunc(orderList); - return success("信息导入完成。其中导入失败订单:" + info); - } else { + return success("信息导入完成。其中导入失败订单:"+info); + }else{ return checkResult; } } @@ -627,7 +619,6 @@ public class ProOrderServiceImpl implements IProOrderService { /** * 获取班次信息list - * * @return */ @Override @@ -638,7 +629,6 @@ public class ProOrderServiceImpl implements IProOrderService { /** * 通过订单物料code查询工艺list - * * @param prodCode * @return */ @@ -650,41 +640,40 @@ public class ProOrderServiceImpl implements IProOrderService { /** * 通过工艺编码获取设备信息list - * * @param routeCode * @return */ @Override @DS("#header.poolName") public List getProEquipment(String routeCode) { - List level = proOrderMapper.getRouteProcess(routeCode); - List level2 = proOrderMapper.getRouteProcessEquips(level); - Map equipMap = new HashMap<>();//设备字典 - if (!CollectionUtils.isEmpty(level2)) { + List level= proOrderMapper.getRouteProcess(routeCode); + List level2= proOrderMapper.getRouteProcessEquips(level); + Map equipMap = new HashMap<>();//设备字典 + if(!CollectionUtils.isEmpty(level2)){ List oldCodes = level2.stream() .filter(value -> StringUtils.isNotEmpty(value.getValue())) .map(value -> value.getValue()).collect(Collectors.toList()); - String equipCods = oldCodes.stream().reduce((sum, num) -> sum + "," + num).get(); - equipMap = proOrderMapper.getEquipInfoByCodes(equipCods.replace(",", "','")); + String equipCods = oldCodes.stream().reduce((sum,num) -> sum+","+num).get(); + equipMap = proOrderMapper.getEquipInfoByCodes(equipCods.replace(",","','")); } - if (equipMap.isEmpty()) { + if(equipMap.isEmpty()){ return null; } List children = null; - for (CascaderDTO level1 : level) { + for(CascaderDTO level1:level){ children = new ArrayList<>();//最终结果 List childrens = level2.stream() - .filter(dto -> dto.getLabel().equals(level1.getValue())) + .filter(dto ->dto.getLabel().equals(level1.getValue())) .collect(Collectors.toList()); - for (CascaderDTO child : childrens) { + for(CascaderDTO child:childrens){ String[] equipstr = child.getValue().split(","); - for (String equipcode : equipstr) { - if (equipMap.get(equipcode) != null) { + for(String equipcode:equipstr){ + if(equipMap.get(equipcode) != null){ children.add(equipMap.get(equipcode)); } } } - if (!CollectionUtils.isEmpty(children)) { + if(!CollectionUtils.isEmpty(children)){ level1.setChildren(children); } } @@ -694,7 +683,6 @@ public class ProOrderServiceImpl implements IProOrderService { /** * 通过母订单Code查询级联订单信息并封装 - * * @param orderCode * @return */ @@ -717,7 +705,7 @@ public class ProOrderServiceImpl implements IProOrderService { proOrderList.add(childProOrderList.get(0)); tempCode.setLength(0); tempCode.append(childProOrderList.get(0).getOrderCode()); - } else { + }else { break; } } @@ -726,13 +714,13 @@ public class ProOrderServiceImpl implements IProOrderService { ProOrder proOrderVO = new ProOrder(); // 处理列表 - for (int i = proOrderList.size() - 1; i > 0; i--) { + for (int i = proOrderList.size()-1; i > 0; i--) { List setList = new ArrayList<>(); setList.add(proOrderList.get(i)); - proOrderList.get(i - 1).setChildren(setList); + proOrderList.get(i-1).setChildren(setList); } - BeanUtils.copyProperties(proOrderList.get(0), proOrderVO); + BeanUtils.copyProperties(proOrderList.get(0),proOrderVO); return success(proOrderVO); } @@ -750,11 +738,11 @@ public class ProOrderServiceImpl implements IProOrderService { // sapqo.setCreateTime(calendar.getTime()); // SapShopOrderQuery sapqo = new SapShopOrderQuery(); - sapqo.setWerk(poolName.replace("ds_", "")); + sapqo.setWerk(poolName.replace("ds_","")); SapProOrder maxCreateTime = proOrderMapper.getMaxCreatetime(); - if (maxCreateTime == null) { + if(maxCreateTime == null ){ sapqo.setErdat(DateFormatUtils.format(new Date(), "yyyyMMdd"));//S_ERDAT(创建日期) 例如:20230923 - } else { + }else{ sapqo.setErdat(maxCreateTime.getCreateTimeStr());//S_ERDAT(创建日期) 例如:20230923 } @@ -769,9 +757,9 @@ public class ProOrderServiceImpl implements IProOrderService { R> rSapProOrder = remoteSapService.shopOrderSync(sapqo); List newOrders = rSapProOrder.getData(); - if (CollectionUtils.isEmpty(newOrders)) { - System.out.println("无" + sapqo.getErdat() + "之后的最新订单"); - } else { + if(CollectionUtils.isEmpty(newOrders)){ + System.out.println("无"+sapqo.getErdat()+"之后的最新订单"); + }else { syncSAPFunc(newOrders, "Job"); } } @@ -943,7 +931,7 @@ public class ProOrderServiceImpl implements IProOrderService { if (proOrder.getQuantity().longValue() == proOrder.getQuantitySplit().longValue()) { // 已拆分 proOrder.setStatus("o2"); - } else { + }else { // 拆分中 proOrder.setStatus("o1"); } @@ -1094,11 +1082,10 @@ public class ProOrderServiceImpl implements IProOrderService { } return success(); } - - public static void main(String args[]) { + public static void main(String args[]){ String arrayStr = "[[\"GX01\",\"LG1\"],[\"GX01\",\"LG2\"],[\"GX02\",\"S1\"],[\"GX02\",\"S2\"],[\"GX03\",\"HF01\"],[\"GX04\",\"SPJ01\"]]"; JSONArray jsonArray = JSONArray.parseArray(arrayStr); - for (int c = 0; c < jsonArray.size(); c++) { + for(int c=0;c