feat 修改到货单过账关联采购订单发送sap消息

This commit is contained in:
Amjacks 2025-03-27 16:41:05 +08:00
parent 645e8ea629
commit 3810db4375
8 changed files with 71 additions and 48 deletions

View File

@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.cim.idm.constants.ReceiveTypeEnums;
import com.cim.idm.model.DeliveryDto;
import com.cim.idm.model.MaterialReceiveRequest;
import com.cim.idm.model.PageDto;
import com.cim.idm.service.IDeliveryService;
import com.cim.idm.utils.AjaxResult;
@ -17,6 +18,7 @@ import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@RestController
@RequestMapping("/delivery")
@ -56,10 +58,11 @@ public class DeliveryController {
// 单据名称集合
List<String> nameList = new ArrayList<>();
// 判定是否是到库单
String typeByKey = deliveryService.getTypeByKey(siteName, receiveRequestName);
String typeByKey = deliveryService.getByKey(siteName, receiveRequestName).getReceiveRequestType();
if (typeByKey.equals(ReceiveTypeEnums.DK.getCode())) {
// 到库单找出该单据下的所有的采购单
nameList = deliveryService.getReceiveByDelivery(siteName, receiveRequestName);
nameList = deliveryService.getReceiveByDelivery(siteName, receiveRequestName)
.stream().map(MaterialReceiveRequest::getReceiveRequestName).collect(Collectors.toList());
} else {
// 采购单
nameList.add(receiveRequestName);

View File

@ -2,12 +2,14 @@ package com.cim.idm.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.cim.idm.constants.ReceiveTypeEnums;
import com.cim.idm.framework.IDMFrameServiceProxy;
import com.cim.idm.framework.data.EventInfo;
import com.cim.idm.model.MaterialReceiveRequest;
import com.cim.idm.model.MaterialreceiveActDto;
import com.cim.idm.model.TrackOutBoDto;
import com.cim.idm.mwmsextend.materialpacking.service.MaterialPackingServiceImpl;
import com.cim.idm.service.IDeliveryService;
import com.cim.idm.service.impl.QMSServiceImpl;
import com.cim.idm.service.impl.ToSAPServiceImpl;
import com.cim.idm.utils.AjaxResult;
@ -21,7 +23,6 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@ -29,17 +30,20 @@ import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal;
import java.sql.Timestamp;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import com.cim.idm.service.Impl.SDKMaterialPackingServiceImpl;
import javax.annotation.Resource;
@RestController
@RequestMapping("/MaterialReceiveAct")
@EnableAutoConfiguration
public class MaterialReceiveActController {
@Resource
private IDeliveryService deliveryService;
private static Log log = LogFactory.getLog(MaterialReceiveActController.class);
private EventInfo makeEventInfo;
@ -521,38 +525,51 @@ public class MaterialReceiveActController {
@RequestMapping(value = "/commitToERP", method = RequestMethod.POST)
public AjaxResult commitToERP(@RequestBody JSONObject in ) {
TrackOutBoDto boxs = JSON.toJavaObject(in, TrackOutBoDto.class);
String commitDate = boxs.getCommitDate();
MaterialreceiveActDto box = boxs.getMaterialreceiveAct();
String user = boxs.getUser();
String receiveRequestName = box.getReceiveRequestName();
String siteName = box.getSiteName();
String opCode = boxs.getOpCode();
String erpFactory = box.getErpFactory();
try {
//调用QMS
qMSServiceImpl.PreIQCInfoSend(receiveRequestName, "SDK",opCode, erpFactory);
} catch (CustomException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return AjaxResult.me().setSuccess(false).setMessage(e.toString());
TrackOutBoDto trackOutBoDto = JSON.toJavaObject(in, TrackOutBoDto.class);
String user = trackOutBoDto.getUser();
String opCode = trackOutBoDto.getOpCode();
String commitDate = trackOutBoDto.getCommitDate();
String name = trackOutBoDto.getReceiveRequestName();
String site = trackOutBoDto.getSiteName();
// 采购单
List<MaterialReceiveRequest> requests = new ArrayList<>();
// 判定单据类型
MaterialReceiveRequest byKey = deliveryService.getByKey(site, name);
if (byKey.getReceiveRequestType().equals(ReceiveTypeEnums.DK.getCode())) {
// 到货单
requests = deliveryService.getReceiveByDelivery(site, name);
} else {
requests.add(byKey);
}
// 采购单处理
for (MaterialReceiveRequest request : requests) {
String receiveRequestName = request.getReceiveRequestName();
String siteName = request.getSiteName();
String erpFactory = request.getSTOCKORGNO();
try {
//调用QMS
qMSServiceImpl.PreIQCInfoSend(receiveRequestName, "SDK",opCode, erpFactory);
} catch (CustomException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return AjaxResult.me().setSuccess(false).setMessage(e.toString());
}
String undoid;
try {
undoid = SendERPStockIn(receiveRequestName, siteName, user, opCode,commitDate,opCode);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return AjaxResult.me().setSuccess(false).setMessage(e.toString());
}//发送过账
makeEventInfo = new EventInfoUtil().makeEventInfo("NormalStockInForSDK", user, "NormalStockInForSDK");
//更新入库凭证
SDKMaterialPackingServiceImpl.updateUndoIdByReceive(receiveRequestName, undoid, makeEventInfo);
//更新库存状态
SDKMaterialPackingServiceImpl.SaveUnDoInfo( undoid,commitDate);
SDKMaterialPackingServiceImpl.updateStockState( makeEventInfo, undoid,opCode);
String undoid;
try {
undoid = SendERPStockIn(receiveRequestName, siteName, user, opCode,commitDate,opCode);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return AjaxResult.me().setSuccess(false).setMessage(e.toString());
}//发送过账
makeEventInfo = new EventInfoUtil().makeEventInfo("NormalStockInForSDK", user, "NormalStockInForSDK");
//更新入库凭证
SDKMaterialPackingServiceImpl.updateUndoIdByReceive(receiveRequestName, undoid, makeEventInfo);
//更新库存状态
SDKMaterialPackingServiceImpl.SaveUnDoInfo( undoid,commitDate);
SDKMaterialPackingServiceImpl.updateStockState( makeEventInfo, undoid,opCode);
}
return AjaxResult.me().setResultObj(null);
}

View File

@ -51,12 +51,12 @@ public interface DeliveryDao {
/**
* 根据 key 获取值
*/
String getTypeByKey(@Param("siteName") String siteName,
MaterialReceiveRequest getByKey(@Param("siteName") String siteName,
@Param("receiveRequestName") String receiveRequestName);
/**
* 根据到库单获取采购单名称
*/
List<String> getReceiveByDelivery(@Param("siteName") String siteName,
List<MaterialReceiveRequest> getReceiveByDelivery(@Param("siteName") String siteName,
@Param("receiveRequestName") String receiveRequestName);
}

View File

@ -20,6 +20,7 @@ public class MaterialReceiveRequest {
private String commitDate;
private String opCode;
private String type;
private String STOCKORGNO;
private String MaterialPackingName;
private String materialSpecName;
private String materialQuantity;

View File

@ -5,8 +5,10 @@ import lombok.Data;
@Data
public class TrackOutBoDto {
private String user;
private String siteName;
private String commitDate;
private String opCode;
private String receiveRequestName;
private MaterialreceiveActDto materialreceiveAct;
}

View File

@ -37,12 +37,12 @@ public interface IDeliveryService {
* @param receiveRequestName 单据名称
* @return 类型
*/
String getTypeByKey(String siteName, String receiveRequestName);
MaterialReceiveRequest getByKey(String siteName, String receiveRequestName);
/**
* 根据到库单获取采购单名称
* @param receiveRequestName 到库单
* @return 采购单名称列表
*/
List<String> getReceiveByDelivery(String siteName, String receiveRequestName);
List<MaterialReceiveRequest> getReceiveByDelivery(String siteName, String receiveRequestName);
}

View File

@ -61,12 +61,12 @@ public class DeliveryServiceImpl implements IDeliveryService {
}
@Override
public String getTypeByKey(String siteName, String receiveRequestName) {
return deliveryDao.getTypeByKey(siteName, receiveRequestName);
public MaterialReceiveRequest getByKey(String siteName, String receiveRequestName) {
return deliveryDao.getByKey(siteName, receiveRequestName);
}
@Override
public List<String> getReceiveByDelivery(String siteName, String receiveRequestName) {
public List<MaterialReceiveRequest> getReceiveByDelivery(String siteName, String receiveRequestName) {
return deliveryDao.getReceiveByDelivery(siteName, receiveRequestName);
}
}

View File

@ -117,15 +117,15 @@
) TTT
</select>
<select id="getTypeByKey" resultType="String">
SELECT RECEIVEREQUESTTYPE
<select id="getByKey" resultType="com.cim.idm.model.MaterialReceiveRequest">
SELECT *
FROM MATERIALRECEIVEREQUEST
WHERE SITENAME = #{siteName}
AND RECEIVEREQUESTNAME = #{receiveRequestName}
</select>
<select id="getReceiveByDelivery" resultType="String">
SELECT RECEIVEREQUESTNAME
<select id="getReceiveByDelivery" resultType="com.cim.idm.model.MaterialReceiveRequest">
SELECT *
FROM MATERIALRECEIVEREQUEST
WHERE SITENAME = #{siteName}
AND DELIVERYNAME = #{receiveRequestName}