来料加工订单

This commit is contained in:
潘荣晟
2026-01-25 16:57:10 +08:00
parent dad22ec7ec
commit ea02e5af4e
8 changed files with 142 additions and 51 deletions

View File

@@ -18,4 +18,5 @@ public interface ErrorCodeConstants {
ErrorCode Sales_ORDER_NOT_EXISTS = new ErrorCode(1_008_000_030, "销售订单不存在"); ErrorCode Sales_ORDER_NOT_EXISTS = new ErrorCode(1_008_000_030, "销售订单不存在");
ErrorCode Sales_ORD_DTL_NOT_EXISTS = new ErrorCode(1_008_001_040, "销售订单明细不存在"); ErrorCode Sales_ORD_DTL_NOT_EXISTS = new ErrorCode(1_008_001_040, "销售订单明细不存在");
ErrorCode ORDER_DONT_SUBMIT = new ErrorCode(1_008_000_050, "该订单不支持审批"); ErrorCode ORDER_DONT_SUBMIT = new ErrorCode(1_008_000_050, "该订单不支持审批");
ErrorCode MTRL_CODE_NOT_EXISTS = new ErrorCode(1_008_000_150, "中铜物料不存在");
} }

View File

@@ -155,5 +155,7 @@ public class EntrustOrderOrderController implements BusinessControllerMarker {
entrustOrderOrderService.closeOrder(ids); entrustOrderOrderService.closeOrder(ids);
return success(true); return success(true);
} }
//委托加工订单提交erp
} }

View File

@@ -61,9 +61,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.ArrayList; import java.util.*;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.zip.ZipEntry; import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream; import java.util.zip.ZipOutputStream;
@@ -1569,8 +1567,8 @@ public class ContractServiceImpl implements ContractService {
} }
// 生成ERP合同映射表 // 生成ERP合同映射表
// ErpContractSaveReqVO erpContractVO = getErpContract(contractMainDO); TODO ERP暂时返回成功 ErpContractSaveReqVO erpContractVO = getErpContract(contractMainDO); //TODO ERP暂时返回成功
ErpContractSaveReqVO erpContractVO = new ErpContractSaveReqVO(); //ErpContractSaveReqVO erpContractVO = new ErpContractSaveReqVO();
// 调用ERP模块 // 调用ERP模块
JSONObject erpResult = sendToErp(erpContractVO); JSONObject erpResult = sendToErp(erpContractVO);
@@ -1818,16 +1816,16 @@ public class ContractServiceImpl implements ContractService {
JSONObject erpResult = new JSONObject(); JSONObject erpResult = new JSONObject();
// TODO 暂时返回成功 // TODO 暂时返回成功
erpResult.putOnce("success", true); // erpResult.putOnce("success", true);
erpResult.putOnce("data", "success"); // erpResult.putOnce("data", "success");
/*HashMap<String, String> result = erpContractService.submitErp(erpContractVO); Map<String, String> result = erpContractService.submitErp(erpContractVO);
if ("E".equals(result.get("flag"))) { if ("E".equals(result.get("flag"))) {
erpResult.putOnce("success", false); erpResult.putOnce("success", false);
erpResult.putOnce("errMsg", result.get("resStr")+":"+result.get("E_RESP")); erpResult.putOnce("errMsg", result.get("resStr")+":"+result.get("E_RESP"));
} else { } else {
erpResult.putOnce("success", true); erpResult.putOnce("success", true);
erpResult.putOnce("data", result); erpResult.putOnce("data", result);
}*/ }
return erpResult; return erpResult;
} }

View File

@@ -5,10 +5,15 @@ import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.zt.plat.framework.common.exception.ErrorCode;
import com.zt.plat.framework.common.pojo.CommonResult; import com.zt.plat.framework.common.pojo.CommonResult;
import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.pojo.PageResult;
import com.zt.plat.framework.common.util.object.BeanUtils; import com.zt.plat.framework.common.util.object.BeanUtils;
import com.zt.plat.framework.security.core.util.SecurityFrameworkUtils; import com.zt.plat.framework.security.core.util.SecurityFrameworkUtils;
import com.zt.plat.module.base.api.materialinfomation.MaterialInfomationApi;
import com.zt.plat.module.base.api.materialinfomation.dto.MaterialInfomationPageReqDTO;
import com.zt.plat.module.base.api.materialinfomation.dto.MaterialInfomationRespDTO;
import com.zt.plat.module.base.api.materialinfomation.dto.MaterialInfomationSimplePageReqDTO;
import com.zt.plat.module.bpm.api.task.BpmProcessInstanceApi; import com.zt.plat.module.bpm.api.task.BpmProcessInstanceApi;
import com.zt.plat.module.bpm.api.task.BpmTaskApi; import com.zt.plat.module.bpm.api.task.BpmTaskApi;
import com.zt.plat.module.bpm.api.task.dto.*; import com.zt.plat.module.bpm.api.task.dto.*;
@@ -30,6 +35,7 @@ import com.zt.plat.module.contractorder.util.constants.ProcessDefinitionKeyConst
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpOrderSaveReqVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpOrderSaveReqVO;
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpOrderUpdateReqVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpOrderUpdateReqVO;
import com.zt.plat.module.erp.service.erp.ErpOrderService; import com.zt.plat.module.erp.service.erp.ErpOrderService;
import com.zt.plat.module.erp.service.erp.WarehouseFactoryService;
import com.zt.plat.module.system.api.sequence.SequenceApi; import com.zt.plat.module.system.api.sequence.SequenceApi;
import com.zt.plat.module.system.api.user.AdminUserApi; import com.zt.plat.module.system.api.user.AdminUserApi;
import com.zt.plat.module.system.api.user.dto.AdminUserRespDTO; import com.zt.plat.module.system.api.user.dto.AdminUserRespDTO;
@@ -61,7 +67,8 @@ import static com.zt.plat.module.contractorder.enums.purchaseorder.ErrorCodeCons
public class PurchaseOrderServiceImpl implements PurchaseOrderService { public class PurchaseOrderServiceImpl implements PurchaseOrderService {
@Resource @Resource
private ErpOrderService erpOrderService; private ErpOrderService erpOrderService;
@Resource
private MaterialInfomationApi materialInfomationApi;
@Resource @Resource
private PurchaseOrderMapper purchaseOrderMapper; private PurchaseOrderMapper purchaseOrderMapper;
@Resource @Resource
@@ -86,7 +93,8 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
@Resource @Resource
private SystemRelativityMapper systemRelativityMapper; private SystemRelativityMapper systemRelativityMapper;
@Resource
private WarehouseFactoryService warehouseFactoryService;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public PurchaseOrderRespVO createPurchaseOrder(PurchaseOrderSaveReqVO createReqVO) { public PurchaseOrderRespVO createPurchaseOrder(PurchaseOrderSaveReqVO createReqVO) {
@@ -282,15 +290,32 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
JSONArray jsonArray = JSONArray.from(actsCtgrDtlList); JSONArray jsonArray = JSONArray.from(actsCtgrDtlList);
erpOrderSaveReqVO.setAccts(jsonArray); erpOrderSaveReqVO.setAccts(jsonArray);
// 3. 处理行项目信息(Item) // 3. 处理行项目信息(Item)
List<PrchOrdDtlDO> details = purchaseOrderWithDetailsVO.getOrderDetails(); List<PrchOrdDtlDO> details = prchOrdDtlMapper.selectList(PrchOrdDtlDO::getOrdId,order.getId());
if (details != null && !details.isEmpty()) { if (details != null && !details.isEmpty()) {
List<ErpOrderSaveReqVO.Item> items = new ArrayList<>(); List<ErpOrderSaveReqVO.Item> items = new ArrayList<>();
List<ErpOrderSaveReqVO.Itex> itexes=new ArrayList<>();
for (PrchOrdDtlDO detail : details) { for (PrchOrdDtlDO detail : details) {
ErpOrderSaveReqVO.Item item = new ErpOrderSaveReqVO.Item(); ErpOrderSaveReqVO.Item item = new ErpOrderSaveReqVO.Item();
MaterialInfomationPageReqDTO infomationPageReqDTO=new MaterialInfomationPageReqDTO();
infomationPageReqDTO.setPageSize(10000);
infomationPageReqDTO.setCode(detail.getMtrlNum());
CommonResult<PageResult<MaterialInfomationRespDTO>> materialInfomationPage = materialInfomationApi.getMaterialInfomationPage(infomationPageReqDTO);
if (materialInfomationPage.getData()==null || materialInfomationPage.getData().getList().isEmpty()){
throw exception(MTRL_CODE_NOT_EXISTS);
}
MaterialInfomationRespDTO materialInfomationRespDTO = materialInfomationPage.getData().getList().get(0);
Map<String, Object> flatAttributes = materialInfomationRespDTO.getFlatAttributes();
//获取中铜物料编码
String mtrlZhongtongCode = flatAttributes.getOrDefault("mtrlZhongtongCode", "").toString();
if (mtrlZhongtongCode.isEmpty()){
throw exception(MTRL_CODE_NOT_EXISTS);
}
//查询库位绑定编码
// 3.1 行项目基本信息 // 3.1 行项目基本信息
item.setPo_item(detail.getLineNum() != null ? detail.getLineNum().intValue() : null); // 行项目 -> 行号 item.setPo_item(detail.getLineNum() != null ? detail.getLineNum().intValue() : null); // 行项目 -> 行号
item.setMaterial(detail.getMtrlNum()); // 物料编码 -> 物料号 item.setMaterial(mtrlZhongtongCode); // 物料编码 -> 物料号
item.setPlant(detail.getRcvFactNum()); // 收货工厂编码 -> 工厂 item.setPlant(detail.getRcvFactNum()); // 收货工厂编码 -> 工厂
item.setStge_loc(detail.getRcvWrhNum()); // 收货库位编码 -> 库存地点 item.setStge_loc(detail.getRcvWrhNum()); // 收货库位编码 -> 库存地点
item.setQuantity(detail.getQty()); // 暂估数量 -> 数量 item.setQuantity(detail.getQty()); // 暂估数量 -> 数量
@@ -309,7 +334,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
item.setVendrbatch(String.valueOf(detail.getOutLineNum())); // 外部行项目号 -> 外部行项目号 item.setVendrbatch(String.valueOf(detail.getOutLineNum())); // 外部行项目号 -> 外部行项目号
item.setNote_xq(detail.getRmkUnt()); // 备注信息-需求单位 -> 备注信息-需求单位 item.setNote_xq(detail.getRmkUnt()); // 备注信息-需求单位 -> 备注信息-需求单位
item.setNote_wl(detail.getRmkMtrl()); // 备注信息-物料详细 -> 备注信息-物料详细 item.setNote_wl(detail.getRmkMtrl()); // 备注信息-物料详细 -> 备注信息-物料详细
item.setGr_basediv("1");//TODO GR发票校验
// 处理交货起止日期(格式:YYYYMMDD-YYYYMMDD) // 处理交货起止日期(格式:YYYYMMDD-YYYYMMDD)
StringBuilder vendMat = new StringBuilder(); StringBuilder vendMat = new StringBuilder();
if (detail.getBgnDt() != null) { if (detail.getBgnDt() != null) {
@@ -320,14 +345,13 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
vendMat.append(detail.getDdlDt().format(DateTimeFormatter.ofPattern("yyyyMMdd"))); vendMat.append(detail.getDdlDt().format(DateTimeFormatter.ofPattern("yyyyMMdd")));
} }
item.setVend_mat(vendMat.toString()); item.setVend_mat(vendMat.toString());
// 3.2 行项目扩展信息(Itex) // 3.2 行项目扩展信息(Itex)
ErpOrderSaveReqVO.Itex itex = new ErpOrderSaveReqVO.Itex(); ErpOrderSaveReqVO.Itex itex = new ErpOrderSaveReqVO.Itex();
itex.setZmatnr(detail.getSaleMtrlNum()); // 销售物料号 -> 销售物料号 itex.setZmatnr(detail.getSaleMtrlNum()); // 销售物料号 -> 销售物料号
itex.setZaufnr(detail.getInOrd()); // 统计型内部订单 -> 统计型内部订单 itex.setZaufnr(detail.getInOrd()); // 统计型内部订单 -> 统计型内部订单
itex.setZpurty(detail.getPrchCtgr()); // 采购类别 -> 采购类别 itex.setZpurty(detail.getPrchCtgr()); // 采购类别 -> 采购类别
itex.setZmenge(detail.getOrigWet()); // 原料湿重 -> 原料湿重 itex.setZmenge(detail.getOrigWet()); // 原料湿重 -> 原料湿重
item.setItex(itex); itexes.add(itex);
// 3.4 委托加工物料信息(Comp) - 简化处理实际需解析JSON // 3.4 委托加工物料信息(Comp) - 简化处理实际需解析JSON
// List<ErpOrderSaveReqVO.Comp> comps = new ArrayList<>(); // List<ErpOrderSaveReqVO.Comp> comps = new ArrayList<>();
@@ -344,33 +368,57 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
items.add(item); items.add(item);
} }
erpOrderSaveReqVO.setItems(items); erpOrderSaveReqVO.setItems(items);
erpOrderSaveReqVO.setItex(itexes);
} }
//todo 4. 推送ERP并处理返回结果 //todo 4. 推送ERP并处理返回结果
// String result = erpOrderService.submitOrderToErp061(erpOrderSaveReqVO);
log.info("订单推送成功,订单id【{}】", order.getId()); String result = erpOrderService.submitOrderToErp061(erpOrderSaveReqVO);
String result="3333"; Long localOrderId = purchaseOrderWithDetailsVO.getPurchaseOrder().getId();
// 解析ERP返回的ID log.info("订单推送ERP请求完成本地订单ID【{}】ERP返回原始结果【{}】", localOrderId, result);
JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(Map.of("id",R())));
String erpId = jsonObject.getString("id"); // 初始化更新对象设置基础订单ID
if (result != null) { //todo 需要改为真实返回的数据 PurchaseOrderDO upVo = new PurchaseOrderDO();
JSONObject job = JSONObject.parseObject(JSONObject.toJSONString(Map.of("salesdocument",R()))); upVo.setId(localOrderId);
String id = job.containsKey("id")?jsonObject.getString("id"):null; String erpId = null; // ERP订单号(PO_NUMBER)
if (id != null) { try {
PurchaseOrderDO upVo = new PurchaseOrderDO(); if (StringUtils.isNotBlank(result)) {
upVo.setId(purchaseOrderWithDetailsVO.getPurchaseOrder().getId()); // 解析顶层JSON对象原代码冗余解析问题修复
upVo.setOrderSAPNumber(id); JSONObject rootJson = JSONObject.parseObject(result);
upVo.setErpStatus(OrderStatusEnum.FIND.getCode()); String eResp = rootJson.getString("E_RESP");
purchaseOrderMapper.updateById(upVo); if (StringUtils.isNotBlank(eResp)) {
}else { // 解析E_RESP为JSON对象获取PO_NUMBER
PurchaseOrderDO upVo = new PurchaseOrderDO(); JSONObject eRespJson = JSONObject.parseObject(eResp);
upVo.setId(purchaseOrderWithDetailsVO.getPurchaseOrder().getId()); erpId = eRespJson.getString("PO_NUMBER");
upVo.setOrderSAPNumber(id); }
upVo.setErpStatus(OrderStatusEnum.RLBK.getCode());
upVo.setCause("ERP返回结果为空");//TODO 这里先写死
purchaseOrderMapper.updateById(upVo);
} }
// 3. 根据ERP订单号是否有效设置本地订单更新属性
if (StringUtils.isNotBlank(erpId)) {
// ERP返回有效订单号更新为成功状态
upVo.setOrderSAPNumber(erpId);
upVo.setErpStatus(OrderStatusEnum.FIND.getCode()); // 推送成功状态
log.info("订单推送ERP成功本地订单ID【{}】ERP订单号【{}】,已更新本地状态", localOrderId, erpId);
} else {
upVo.setOrderSAPNumber(null);
upVo.setErpStatus(OrderStatusEnum.RLBK.getCode());
String failCause = StringUtils.isBlank(result) ? "ERP接口返回结果为空/纯空白"
: StringUtils.isBlank(JSONObject.parseObject(result).getString("E_RESP")) ? "ERP返回E_RESP字段为空/纯空白"
: "ERP返回E_RESP中未包含有效PO_NUMBER订单号";
upVo.setCause(failCause);
log.warn("订单推送ERP失败本地订单ID【{}】,失败原因【{}】", localOrderId, failCause);
}
purchaseOrderMapper.updateById(upVo);
}catch (Exception e) {
upVo.setOrderSAPNumber(null);
upVo.setErpStatus(OrderStatusEnum.RLBK.getCode()); // 异常时强制置为失败状态
upVo.setCause("ERP返回结果解析/处理异常:" + e.getMessage());
// 异常时仍需更新数据库,保证订单状态一致性
purchaseOrderMapper.updateById(upVo);
log.error("订单推送ERP发生异常本地订单ID【{}】,异常信息如下", localOrderId, e);
} }
}); });
return "ERP推送成功"; return "ERP推送成功";

View File

@@ -10,6 +10,9 @@ import com.zt.plat.framework.common.pojo.CommonResult;
import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.pojo.PageResult;
import com.zt.plat.framework.common.util.object.BeanUtils; import com.zt.plat.framework.common.util.object.BeanUtils;
import com.zt.plat.framework.security.core.util.SecurityFrameworkUtils; import com.zt.plat.framework.security.core.util.SecurityFrameworkUtils;
import com.zt.plat.module.base.api.materialinfomation.MaterialInfomationApi;
import com.zt.plat.module.base.api.materialinfomation.dto.MaterialInfomationPageReqDTO;
import com.zt.plat.module.base.api.materialinfomation.dto.MaterialInfomationRespDTO;
import com.zt.plat.module.bpm.api.task.BpmProcessInstanceApi; import com.zt.plat.module.bpm.api.task.BpmProcessInstanceApi;
import com.zt.plat.module.bpm.api.task.BpmTaskApi; import com.zt.plat.module.bpm.api.task.BpmTaskApi;
import com.zt.plat.module.bpm.api.task.dto.*; import com.zt.plat.module.bpm.api.task.dto.*;
@@ -81,6 +84,8 @@ public class SalesOrderServiceImpl implements SalesOrderService {
@Resource @Resource
private ContractService contractService; private ContractService contractService;
@Resource
private MaterialInfomationApi materialInfomationApi;
@@ -192,18 +197,46 @@ public class SalesOrderServiceImpl implements SalesOrderService {
head.setDivision(salesOrderDO.getPdtGrpCdg());// 产品组 head.setDivision(salesOrderDO.getPdtGrpCdg());// 产品组
head.setReq_date_h(salesOrderDO.getVoucherDate()); // 交货日期 head.setReq_date_h(salesOrderDO.getVoucherDate()); // 交货日期
head.setSales_grp(salesOrderDO.getPurchaseGroup()); // 销售组 head.setSales_grp(salesOrderDO.getPurchaseGroup()); // 销售组
// head.setSales_off(salesOrderDO.getSaleOrgzName()); // 销售办事处
head.setCust_grp1("10"); // 客户组
head.setPurch_no_c(salesOrderDO.getContractNumber());
head.setName(salesOrderDO.getContractName());
// head.setRef_1();
// head.setPurch_date();
// head.setOrd_reason();
head.setCurrency(salesOrderDO.getCurrencyNumber()); // 货币码
// head.setTaxclass(1);
erpSalesOrderSaveReqVO.setHead(head); erpSalesOrderSaveReqVO.setHead(head);
// 销售订单明细 // 销售订单明细
List<ErpSalesOrderSaveReqVO.Item> items = new ArrayList<>(); List<ErpSalesOrderSaveReqVO.Item> items = new ArrayList<>();
for (SalesOrderDetailRespVO salesOrderDetailRespVO : salesOrderDetailByOrderId) { for (SalesOrderDetailRespVO salesOrderDetailRespVO : salesOrderDetailByOrderId) {
MaterialInfomationPageReqDTO infomationPageReqDTO=new MaterialInfomationPageReqDTO();
infomationPageReqDTO.setPageSize(10000);
infomationPageReqDTO.setCode(salesOrderDetailRespVO.getMaterialNumber());
CommonResult<PageResult<MaterialInfomationRespDTO>> materialInfomationPage = materialInfomationApi.getMaterialInfomationPage(infomationPageReqDTO);
if (materialInfomationPage.getData()==null || materialInfomationPage.getData().getList().isEmpty()){
throw exception(MTRL_CODE_NOT_EXISTS);
}
MaterialInfomationRespDTO materialInfomationRespDTO = materialInfomationPage.getData().getList().get(0);
Map<String, Object> flatAttributes = materialInfomationRespDTO.getFlatAttributes();
//获取中铜物料编码
String mtrlZhongtongCode = flatAttributes.getOrDefault("mtrlZhongtongCode", "").toString();
if (mtrlZhongtongCode.isEmpty()){
throw exception(MTRL_CODE_NOT_EXISTS);
}
ErpSalesOrderSaveReqVO.Item item = new ErpSalesOrderSaveReqVO.Item(); ErpSalesOrderSaveReqVO.Item item = new ErpSalesOrderSaveReqVO.Item();
item.setItem_categ(String.valueOf(salesOrderDetailRespVO.getLineNumber())); item.setItem_categ(String.valueOf(salesOrderDetailRespVO.getLineNumber()));
item.setMaterial(salesOrderDetailRespVO.getMaterialNumber()); item.setMaterial(mtrlZhongtongCode);
item.setPlant(salesOrderDetailRespVO.getFactoryNumber()); item.setPlant(salesOrderDetailRespVO.getFactoryNumber());
item.setStore_loc(salesOrderDetailRespVO.getShippingPlace()); item.setStore_loc(salesOrderDetailRespVO.getShippingPlace());
item.setSales_unit(salesOrderDetailRespVO.getUnit()); item.setSales_unit(salesOrderDetailRespVO.getUnit());
item.setDlvschduse(salesOrderDetailRespVO.getInvoiceType()); item.setDlvschduse(salesOrderDetailRespVO.getInvoiceType());
item.setTarget_qty(salesOrderDetailRespVO.getQuantity()); item.setTarget_qty(salesOrderDetailRespVO.getQuantity());
item.setItm_number(Math.toIntExact(salesOrderDetailRespVO.getLineNumber()));
item.setItem_categ(salesOrderDetailRespVO.getProjectCategory());
item.setShip_point(salesOrderDetailRespVO.getShippingPlace()); // 装运地点
item.setAcct_assgt(salesOrderDetailRespVO.getMetalAcctasscatGroup());//todo 物料科目分配组
items.add(item); items.add(item);
} }
erpSalesOrderSaveReqVO.setItems(items); erpSalesOrderSaveReqVO.setItems(items);
@@ -235,8 +268,7 @@ public class SalesOrderServiceImpl implements SalesOrderService {
} }
}); });
erpSalesOrderSaveReqVO.setConds(conds); erpSalesOrderSaveReqVO.setConds(conds);
// String result = erpOrderService.submitOrderToErp091(erpSalesOrderSaveReqVO); String result = erpOrderService.submitOrderToErp091(erpSalesOrderSaveReqVO);
String result="3333";
if (result != null) { if (result != null) {
JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(Map.of("salesdocument",R()))); JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(Map.of("salesdocument",R())));
String salesdocument = jsonObject.containsKey("salesdocument")?jsonObject.getString("salesdocument"):null; String salesdocument = jsonObject.containsKey("salesdocument")?jsonObject.getString("salesdocument"):null;

View File

@@ -35,6 +35,9 @@ public class ErpOrderSaveReqVO {
@NotEmpty(message = "采购订单行项目列表不能为空") @NotEmpty(message = "采购订单行项目列表不能为空")
private List<Item> items; private List<Item> items;
@Valid
private List<Itex> itex; // 行项目扩展信息
private JSONArray accts; // 科目分配信息(科目分配类别为K或P时使用) private JSONArray accts; // 科目分配信息(科目分配类别为K或P时使用)
@Valid @Valid
private List<Comp> comps; // 委托加工物料信息(委托加工订单时使用) private List<Comp> comps; // 委托加工物料信息(委托加工订单时使用)
@@ -165,8 +168,6 @@ public class ErpOrderSaveReqVO {
@Schema(description = "交货起止日期(格式:YYYYMMDD-YYYYMMDD)") @Schema(description = "交货起止日期(格式:YYYYMMDD-YYYYMMDD)")
private String vend_mat; // IDNLF CHAR22 private String vend_mat; // IDNLF CHAR22
@Valid
private Itex itex; // 行项目扩展信息
} }

View File

@@ -1,6 +1,8 @@
package com.zt.plat.module.erp.service.erp; package com.zt.plat.module.erp.service.erp;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.zt.plat.framework.security.core.util.SecurityFrameworkUtils; import com.zt.plat.framework.security.core.util.SecurityFrameworkUtils;
import com.zt.plat.module.erp.api.ErpExternalApi; import com.zt.plat.module.erp.api.ErpExternalApi;
import com.zt.plat.module.erp.api.dto.ErpSubmitReqDTO; import com.zt.plat.module.erp.api.dto.ErpSubmitReqDTO;
@@ -33,23 +35,26 @@ public class ErpOrderServiceImpl implements ErpOrderService {
req.put("exte", createVo.getExte()); req.put("exte", createVo.getExte());
req.put("acct", createVo.getAccts()); req.put("acct", createVo.getAccts());
reqDTO.setReq(req); reqDTO.setReq(req);
return submitToErp(reqDTO); return submitToErp(reqDTO);
} }
private ErpSubmitReqDTO buildBaseReqDTO(ErpOrderSaveReqVO vo, String funcnr) { private ErpSubmitReqDTO buildBaseReqDTO(ErpOrderSaveReqVO vo, String funcnr) {
ErpSubmitReqDTO reqDTO = new ErpSubmitReqDTO(); ErpSubmitReqDTO reqDTO = new ErpSubmitReqDTO();
// reqDTO.setFuncnr(funcnr);
// reqDTO.setBskey(vo.getOrderNo());
// reqDTO.setUsrid(String.valueOf(SecurityFrameworkUtils.getLoginUserId()));
// reqDTO.setUsrnm((SecurityFrameworkUtils.getLoginUserNickname()));
reqDTO.setFuncnr(funcnr); reqDTO.setFuncnr(funcnr);
reqDTO.setBskey(vo.getOrderNo()); reqDTO.setBskey(vo.getOrderNo());
reqDTO.setUsrid(String.valueOf(SecurityFrameworkUtils.getLoginUserId())); reqDTO.setUsrid("100048799");
reqDTO.setUsrnm((SecurityFrameworkUtils.getLoginUserNickname())); reqDTO.setUsrnm("夏丽丽");
return reqDTO; return reqDTO;
} }
private String submitToErp(ErpSubmitReqDTO reqDTO) { private String submitToErp(ErpSubmitReqDTO reqDTO) {
Map<String, String> response = erpExternalApi.submitDataToErp(reqDTO); Map<String, String> response = erpExternalApi.submitDataToErp(reqDTO);
return response.get("resStr"); return JSONObject.toJSONString(response);
} }
@@ -86,10 +91,11 @@ public class ErpOrderServiceImpl implements ErpOrderService {
Map<String, Object> req = new HashMap<>(); Map<String, Object> req = new HashMap<>();
req.put("head", createVo.getHead()); req.put("head", createVo.getHead());
req.put("item", createVo.getItems()); req.put("item", createVo.getItems());
req.put("conds", createVo.getConds()); req.put("conds", JSONArray.parseArray(createVo.getConds().toString()));
req.put("partn_es", createVo.getPartn_es()); req.put("partn_es", createVo.getPartn_es());
req.put("partn_numb", createVo.getPartn_numb()); req.put("partn_numb", createVo.getPartn_numb());
reqDTO.setReq(req); reqDTO.setReq(req);
String reqJson = com.alibaba.fastjson2.JSON.toJSONString(reqDTO);
return submitToErp(reqDTO); return submitToErp(reqDTO);
} }
@@ -107,8 +113,11 @@ public class ErpOrderServiceImpl implements ErpOrderService {
ErpSubmitReqDTO reqDTO = new ErpSubmitReqDTO(); ErpSubmitReqDTO reqDTO = new ErpSubmitReqDTO();
reqDTO.setFuncnr(funcnr); reqDTO.setFuncnr(funcnr);
reqDTO.setBskey(vo.getOrderNo()); reqDTO.setBskey(vo.getOrderNo());
reqDTO.setUsrid(String.valueOf(SecurityFrameworkUtils.getLoginUserId())); reqDTO.setUsrid("100048799");
reqDTO.setUsrnm((SecurityFrameworkUtils.getLoginUserNickname())); reqDTO.setUsrnm("夏丽丽");
// reqDTO.setBskey(vo.getOrderNo());
// reqDTO.setUsrid(String.valueOf(SecurityFrameworkUtils.getLoginUserId()));
// reqDTO.setUsrnm((SecurityFrameworkUtils.getLoginUserNickname()));
return reqDTO; return reqDTO;
} }
} }

View File

@@ -82,7 +82,7 @@ public class ErpConfig {
if (succeed && "S".equals(dataObject.getString("E_FLAG"))) { if (succeed && "S".equals(dataObject.getString("E_FLAG"))) {
String flag = "S"; String flag = "S";
JSONArray E_RESP = dataObject.containsKey("E_DATA") ? dataObject.getJSONArray("E_DATA") : null; JSONArray E_RESP = dataObject.containsKey("E_DATA") ? dataObject.getJSONArray("E_DATA") : null;
String E_MSG = dataObject.containsKey("E_MSG") ? dataObject.getString("E_MSG") : null; String E_MSG = dataObject.containsKey("E_MSG") ? dataObject.getString("E_MSG") : "";
resMap.put("E_RESP", E_RESP); resMap.put("E_RESP", E_RESP);
resMap.put("resStr", E_MSG); resMap.put("resStr", E_MSG);
resMap.put("flag", flag); resMap.put("flag", flag);