From 41e1e139a344c194c06cb56965771dec0df9670b Mon Sep 17 00:00:00 2001 From: liss <1780094091@qq.com> Date: Wed, 24 Sep 2025 18:23:21 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=9F=E4=BA=A7=E8=AE=A2=E5=8D=95=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E7=9B=B4=E6=8E=A5=E8=B0=83=E7=94=A8ASP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../erp/ErpProductiveOrderServiceImpl.java | 94 +++++++++++++++++-- 1 file changed, 85 insertions(+), 9 deletions(-) diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpProductiveOrderServiceImpl.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpProductiveOrderServiceImpl.java index 14bf5bc..e04c1f5 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpProductiveOrderServiceImpl.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpProductiveOrderServiceImpl.java @@ -8,6 +8,7 @@ import com.zt.plat.module.erp.common.enums.OftenEnum; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpProductiveOrderPageReqVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpProductiveOrderRespVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpProductiveOrderSaveReqVO; +import com.zt.plat.module.erp.dal.dataobject.erp.ErpContractDO; import com.zt.plat.module.erp.dal.dataobject.erp.ErpProductiveOrderDO; import com.zt.plat.module.erp.dal.dataobject.erp.ErpProductiveOrderDO; import com.zt.plat.module.erp.dal.mysql.erp.ErpProductiveOrderMapper; @@ -20,6 +21,8 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -71,12 +74,12 @@ public class ErpProductiveOrderServiceImpl implements ErpProductiveOrderService } @Override - public void deleteErpProductiveOrderListByIds(List ids) { + public void deleteErpProductiveOrderListByIds(List ids) { // 校验存在 validateErpProductiveOrderExists(ids); // 删除 erpProductiveOrderMapper.deleteByIds(ids); - } + } private void validateErpProductiveOrderExists(List ids) { List list = erpProductiveOrderMapper.selectByIds(ids); @@ -98,7 +101,80 @@ public class ErpProductiveOrderServiceImpl implements ErpProductiveOrderService @Override public PageResult getErpProductiveOrderPage(ErpProductiveOrderPageReqVO pageReqVO) { - return erpProductiveOrderMapper.selectPage(pageReqVO); + OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.生产订单; + String funcnr = funcnrEnum.getFuncnr(); + Map req = new HashMap<>(); + + // 构建查询参数 + req.put("BUKRS", pageReqVO.getCompanyNumber()); + req.put("WERKS", pageReqVO.getFactoryNumber()); + + // 处理日期参数 + if (pageReqVO.getStartDate() != null) { + req.put("BEGDA", pageReqVO.getStartDate()[0].format(DateTimeFormatter.ofPattern("yyyyMMdd"))); + } + if (pageReqVO.getEndDate() != null) { + req.put("ENDDA", pageReqVO.getEndDate()[0].format(DateTimeFormatter.ofPattern("yyyyMMdd"))); + } + + // 调用ERP接口获取数据 + JSONArray dataArray = erpConfig.fetchDataFromERP(funcnr, req); + if (dataArray == null || dataArray.isEmpty()) { + // 返回空结果而不是抛出异常 + return new PageResult<>(new ArrayList<>(), 0L); + } + + List list = new ArrayList<>(); + for (int i = 0; i < dataArray.size(); i++) { + JSONObject dataJson = dataArray.getJSONObject(i); + if (dataJson != null) { + ErpProductiveOrderDO orderDO = new ErpProductiveOrderDO(); + + // 基本信息 + orderDO.setCompanyNumber(dataJson.getString("BUKRS")); + orderDO.setFactoryNumber(dataJson.getString("WERKS").trim()); + orderDO.setFactoryName(dataJson.getString("NAME1")); + orderDO.setOrderNumber(dataJson.getString("AUFNR")); + + // 日期处理 + String plannedStartDate = dataJson.getString("GLTRP"); + String actualStartDate = dataJson.getString("GSTRP"); + + if (plannedStartDate != null && !plannedStartDate.equals("0000-00-00")) { + try { + orderDO.setStartDate(LocalDateTime.parse(plannedStartDate)); + } catch (Exception e) { + // 忽略日期解析错误 + } + } + + if (actualStartDate != null && !actualStartDate.equals("0000-00-00")) { + try { + orderDO.setEndDate(LocalDateTime.parse(actualStartDate)); + } catch (Exception e) { + // 忽略日期解析错误 + } + } + + // 物料和工艺信息 + orderDO.setMainMaterialNumber(dataJson.getString("STLBEZ")); + orderDO.setUnit(dataJson.getString("GMEIN")); + orderDO.setMaterialDescription(dataJson.getString("MAKTX")); + orderDO.setProcessingList(dataJson.getString("L_AFVC")); + orderDO.setProcessingNumber(dataJson.getString("VORNR")); + orderDO.setProcessingDescription(dataJson.getString("LTXA1")); + orderDO.setObjectNumber(dataJson.getString("OBJID")); + orderDO.setWorkCenterNumber(dataJson.getString("ARBPL")); + orderDO.setWorkCenterDescription(dataJson.getString("KTEXT")); + orderDO.setCostcenterNumber(dataJson.getString("KOSTL")); + orderDO.setCostcenterName(dataJson.getString("TEXT_C")); + + list.add(orderDO); + } + } + + // 返回分页结果 + return new PageResult<>(list, (long) list.size()); } @Override @@ -106,7 +182,7 @@ public class ErpProductiveOrderServiceImpl implements ErpProductiveOrderService @XxlJob("getErpProductiveOrderTask") public void callErpRfcInterface() { try { - OftenEnum.FuncnrEnum funcnrEnum =OftenEnum.FuncnrEnum.生产订单; + OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.生产订单; String funcnr = funcnrEnum.getFuncnr(); Map req = new HashMap<>(); @@ -135,7 +211,7 @@ public class ErpProductiveOrderServiceImpl implements ErpProductiveOrderService } // 2. 处理公司数据,区分新增和更新 - ProcessingResult result = processData(dataArrayALL,funcnrEnum); + ProcessingResult result = processData(dataArrayALL, funcnrEnum); // 3. 批量保存数据 saveData(result); @@ -151,7 +227,7 @@ public class ErpProductiveOrderServiceImpl implements ErpProductiveOrderService */ private ProcessingResult processData(JSONArray dataArray, OftenEnum.FuncnrEnum funcnr) { String key = "erp" + funcnr.getFuncnr(); - Map> numbers = erpConfig.numbers(dataArray, key,funcnr.getDatakey()); + Map> numbers = erpConfig.numbers(dataArray, key, funcnr.getDatakey()); List allnumbers = numbers.get("all"); List comnumbers = numbers.get("com"); List toUpdate = new ArrayList<>(); @@ -177,7 +253,7 @@ public class ErpProductiveOrderServiceImpl implements ErpProductiveOrderService } } - return new ProcessingResult(toUpdate, toInsert,key,allnumbers); + return new ProcessingResult(toUpdate, toInsert, key, allnumbers); } /** @@ -191,7 +267,7 @@ public class ErpProductiveOrderServiceImpl implements ErpProductiveOrderService if (!result.toUpdate.isEmpty()) { erpProductiveOrderMapper.updateBatch(result.toUpdate); } - erpConfig.updateRedisCache(result.key,result.allnumbers); + erpConfig.updateRedisCache(result.key, result.allnumbers); } /** @@ -203,7 +279,7 @@ public class ErpProductiveOrderServiceImpl implements ErpProductiveOrderService private final String key; private final List allnumbers; - public ProcessingResult(List toUpdate, List toInsert,String key,List allnumbers) { + public ProcessingResult(List toUpdate, List toInsert, String key, List allnumbers) { this.toUpdate = toUpdate; this.toInsert = toInsert; this.key = key;