生产订单查询直接调用ASP

This commit is contained in:
liss
2025-09-24 18:23:21 +08:00
parent 4073af58ef
commit 41e1e139a3

View File

@@ -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<Long> ids) {
public void deleteErpProductiveOrderListByIds(List<Long> ids) {
// 校验存在
validateErpProductiveOrderExists(ids);
// 删除
erpProductiveOrderMapper.deleteByIds(ids);
}
}
private void validateErpProductiveOrderExists(List<Long> ids) {
List<ErpProductiveOrderDO> list = erpProductiveOrderMapper.selectByIds(ids);
@@ -98,7 +101,80 @@ public class ErpProductiveOrderServiceImpl implements ErpProductiveOrderService
@Override
public PageResult<ErpProductiveOrderDO> getErpProductiveOrderPage(ErpProductiveOrderPageReqVO pageReqVO) {
return erpProductiveOrderMapper.selectPage(pageReqVO);
OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.生产订单;
String funcnr = funcnrEnum.getFuncnr();
Map<String, Object> 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<ErpProductiveOrderDO> 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<String, Object> 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<String,List<String>> numbers = erpConfig.numbers(dataArray, key,funcnr.getDatakey());
Map<String, List<String>> numbers = erpConfig.numbers(dataArray, key, funcnr.getDatakey());
List<String> allnumbers = numbers.get("all");
List<String> comnumbers = numbers.get("com");
List<ErpProductiveOrderDO> 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<String> allnumbers;
public ProcessingResult(List<ErpProductiveOrderDO> toUpdate, List<ErpProductiveOrderDO> toInsert,String key,List<String> allnumbers) {
public ProcessingResult(List<ErpProductiveOrderDO> toUpdate, List<ErpProductiveOrderDO> toInsert, String key, List<String> allnumbers) {
this.toUpdate = toUpdate;
this.toInsert = toInsert;
this.key = key;