add:新增业助功能

This commit is contained in:
郭飞 2025-05-19 17:58:03 +08:00
parent a3c5d53f38
commit c1a212376a
5 changed files with 167 additions and 23 deletions

View File

@ -134,15 +134,8 @@ public class MaterialPacking extends FieldAccessor implements DataInfo<MaterialP
private String lastHoldUser; //最近一次冻结人
private String preOqaResult; // 质检前状态
private String SALESHIPREQUESTNAME; // 销售订单号
public String getSALESHIPREQUESTNAME() {
return SALESHIPREQUESTNAME;
}
public void setSALESHIPREQUESTNAME(String SALESHIPREQUESTNAME) {
this.SALESHIPREQUESTNAME = SALESHIPREQUESTNAME;
}
private String saleShipRequestName; // 销售订单号
private String saleShipRequestDetailName; // 销售订单号行项
public String getLastHoldUser() {
return lastHoldUser;
@ -1021,6 +1014,22 @@ public class MaterialPacking extends FieldAccessor implements DataInfo<MaterialP
this.POCATEGORY = POCATEGORY;
}
public String getSaleShipRequestName() {
return saleShipRequestName;
}
public void setSaleShipRequestName(String saleShipRequestName) {
this.saleShipRequestName = saleShipRequestName;
}
public String getSaleShipRequestDetailName() {
return saleShipRequestDetailName;
}
public void setSaleShipRequestDetailName(String saleShipRequestDetailName) {
this.saleShipRequestDetailName = saleShipRequestDetailName;
}
public static class Field {
public static final String messageID = "messageId";
}

View File

@ -5595,6 +5595,109 @@ public class ToSAPServiceImpl {
return undoId;
}
// 业助更新过账
public String careerAssistance(List<String> sapBoxList,String siteName, String user,String SALESHIPREQUESTNAME,String SALESHIPREQUESTDETAILNAME,String commitDate) {
String moveType= "";
String rcode;
String undoId = "";
String rmsg = null;
//依据采购订单查询待入库的物料(MATERIALPACKING)
StringBuffer sql = new StringBuffer();
sql.append("SELECT m.MATERIALSPECNAME ,").append(SystemPropHelper.CR)
.append(" m.ERPFACTORY ,").append(SystemPropHelper.CR)
.append(" m.ERPLOCATION ,").append(SystemPropHelper.CR)
.append(" m.PACKINGGRADE, ").append(SystemPropHelper.CR)
.append(" m.UNIT ,").append(SystemPropHelper.CR)
.append(" m.POSTSTATUS ,").append(SystemPropHelper.CR)
.append(" m.MESSAGEID ,").append(SystemPropHelper.CR)
.append(" m.SALESHIPREQUESTNAME ,").append(SystemPropHelper.CR)
.append(" m.SALESHIPREQUESTDETAILNAME ,").append(SystemPropHelper.CR)
.append(" sum(m.MATERIALQUANTITY) MATERIALQUANTITY").append(SystemPropHelper.CR)
.append(" FROM MATERIALPACKING m ").append(SystemPropHelper.CR)
// .append(" WHERE m.RECEIVEACTNO = :RECEIVEACTNO AND m.SITENAME = :SITENAME ").append(SystemPropHelper.CR)
.append(" WHERE m.MATERIALPACKINGNAME IN (:BOXLIST) AND m.SITENAME = :SITENAME").append(SystemPropHelper.CR)
.append("GROUP BY m.MATERIALSPECNAME ,m.ERPFACTORY ,m.ERPLOCATION ,m.PACKINGGRADE,m.UNIT ");
Map<String, Object> hashMap = new HashMap<String, Object>();
hashMap.put("SITENAME", siteName);
hashMap.put("BOXLIST", sapBoxList);
List<Map<String, Object>> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql.toString(), hashMap);
try {
Map<String,Object> bodyData = new HashMap<>();
bodyData.put("BKTXT", user);
List<Map<String,Object>> itemData = new ArrayList<>();
for (Map<String, Object> mm : queryForList) {
moveType = mm.get("POSTSTATUS").toString();
//UMWRK 收货工厂
//LGORT 发货库存地点
//UMLOG 收货库存地点
//MATNR 发货物料号
//UMMAT 收货物料
Map<String,Object> item = new HashMap<>();
item.put("MATNR", mm.get("MATERIALSPECNAME"));
item.put("LGORT", mm.get("ERPLOCATION"));
item.put("WERKS", mm.get("ERPFACTORY"));
item.put("BWART",moveType);
item.put("MENGE", mm.get("MATERIALQUANTITY"));
item.put("MEINS", mm.get("UNIT"));
String insmk = "";
// if("NG".equals(pqcResult) ){
// insmk = "3";
// }
// String insmk = StringUtils.equals(mm.get("OQARESULTSTATE").toString(),"END")?"":"X";
item.put("INSMK", insmk);
if("411E".equals(moveType) || "413E".equals(moveType)) {
item.put("MAT_KDAUF", mm.get("SALESHIPREQUESTNAME")); // 发货销售订单编码
item.put("MAT_KDPOS", mm.get("SALESHIPREQUESTDETAILNAME")); // 发货销售订单项目编码
} else if("413".equals(moveType) || "413E".equals(moveType)) {
item.put("UMMAT_KDAUF", SALESHIPREQUESTNAME); // 发货销售订单编码
item.put("UMMAT_KDPOS", SALESHIPREQUESTDETAILNAME); // 发货销售订单项目编码
}
itemData.add(item);
}
// TimeStampUtil.getCurrentTime("yyyyMMdd")
String sendData = ToSAPMessageUtil.mm067(user, bodyData, itemData,commitDate);
String sapreturn = toSAPMessageUtil.sendHttpPost(toSAPMessageUtil.materialChangeLocationUrl,"",sendData);
org.json.JSONObject receiveJsonObject = new org.json.JSONObject(sapreturn);
org.json.JSONObject returnJsonObject = (org.json.JSONObject) receiveJsonObject.get("RETURN");
rcode = returnJsonObject.get("STATUS").toString();
rmsg = returnJsonObject.get("MSGTXT").toString();
if ("S".equals(rcode)) {
undoId = returnJsonObject.get("MBLNR").toString()+"_"+returnJsonObject.get("MJAHR").toString();//将物料凭证号与凭证年度拼在一起
}
//将log写到表里
ErpMessageLog erplog = new ErpMessageLog();
erplog.setEventUser("");
erplog.setServerName("WmsToErp");
erplog.setEventName("iqcResultFeekback");
erplog.setInterfaceTime(TimeStampUtil.getCurrentTime(TimeStampUtil.FORMAT_DEFAULT));
erplog.setMessageId(UUID.randomUUID().toString());
erplog.setSendMsg(sendData);
erplog.setSendMsg2(sendData);
erplog.setSendMsg(sendData);
erplog.setReturnMsg2(sapreturn);
erplog.setResultCode(rcode);
MessageLogUtil.writeMessageLog(erplog);
} catch (Exception e) {
log.info(e.getMessage(), e);
throw new RuntimeException("SAP返回" + rmsg);
}
if (!"S".equals(rcode)) {
throw new RuntimeException("SAP返回" + rmsg);
}
return undoId;
}
public String qmsResultFeekback(String siteName,String user, List<String> boxList) throws Exception{

View File

@ -3,9 +3,11 @@ package com.cim.idm.service.Impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.cim.idm.dao.CostCenterDao;
import com.cim.idm.exception.GlobalException;
import com.cim.idm.model.CostCenter;
import com.cim.idm.model.po.MaterialReceiveRequest;
import com.cim.idm.service.CostCenterService;
import com.cim.idm.service.impl.ToSAPServiceImpl;
import com.cim.idm.wmspackage.materialpacking.management.data.MaterialPacking;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@ -13,6 +15,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@ -22,6 +25,9 @@ public class CostCenterServiceImpl implements CostCenterService {
@Autowired
private CostCenterDao costCenterDao;
@Autowired
private ToSAPServiceImpl toSAPService;
@Override
public List<CostCenter> getCostCenter() {
return costCenterDao.getCostCenter();
@ -39,14 +45,19 @@ public class CostCenterServiceImpl implements CostCenterService {
List<MaterialPacking> boxList = sl.getBoxList();
String SALESHIPREQUESTNAME = sl.getSALESHIPREQUESTNAME();
String SALESHIPREQUESTDETAILNAME = sl.getSALESHIPREQUESTDETAILNAME();
String user = sl.getUser();
String commitDate = sl.getCommitDate();
String siteName = sl.getSiteName();
// 借用人
String career_ASSISTANCE = sl.getRemark();
List<String> sapBoxList = new ArrayList<>();
for (MaterialPacking materialPacking : boxList) {
// 条码
String materialPackingName = materialPacking.getMaterialPackingName();
// 原销售订单号
String saleshiprequestname = materialPacking.getSALESHIPREQUESTNAME();
String saleshiprequestname = materialPacking.getSaleShipRequestName();
// 物料编号
String materialSpecName = materialPacking.getMaterialSpecName();
// 批次号
@ -55,25 +66,42 @@ public class CostCenterServiceImpl implements CostCenterService {
String phase = materialPacking.getPHASE();
// 客户
String customno = materialPacking.getCUSTOMNO();
// 过账状态
if(saleshiprequestname.equals(SALESHIPREQUESTNAME)) {
throw new GlobalException(SALESHIPREQUESTNAME + "销售订单号不能相等");
}
// 过账状态 移动类型
String POSTSTATUS = "";
if (StringUtils.isEmpty(saleshiprequestname) && StringUtils.isNotEmpty(SALESHIPREQUESTNAME)){
POSTSTATUS = "0";
} else if (StringUtils.isNotEmpty(saleshiprequestname) && StringUtils.isEmpty(SALESHIPREQUESTNAME)){
POSTSTATUS = "1";
} else if (StringUtils.isNotEmpty(saleshiprequestname) && StringUtils.isNotEmpty(SALESHIPREQUESTNAME)){
POSTSTATUS = "2";
POSTSTATUS = "413";//从非限制转E库存
}
else if (StringUtils.isNotEmpty(saleshiprequestname) && StringUtils.isEmpty(SALESHIPREQUESTNAME)){
POSTSTATUS = "411E"; //从E库存转非限制
}
else if (StringUtils.isNotEmpty(saleshiprequestname) && StringUtils.isNotEmpty(SALESHIPREQUESTNAME) && !saleshiprequestname.equals(SALESHIPREQUESTNAME)){
POSTSTATUS = "413E"; //从E库存转E库存
}
if (StringUtils.isEmpty(materialPacking.getCAREER_ASSISTANCE()) || materialPacking.getCAREER_ASSISTANCE().equals(career_ASSISTANCE)){
// 更新
costCenterDao.updatePacking(SALESHIPREQUESTNAME, SALESHIPREQUESTDETAILNAME, POSTSTATUS, materialPackingName);
sapBoxList.add( materialPackingName);
} else {
// 新增
costCenterDao.insertPackingChenk(SALESHIPREQUESTNAME, SALESHIPREQUESTDETAILNAME,
materialPackingName, siteName, materialSpecName, charge,phase,
customno, career_ASSISTANCE,POSTSTATUS);
}
}
if(sapBoxList.size() > 0) {
String undoId = toSAPService.careerAssistance(sapBoxList,siteName,user,SALESHIPREQUESTNAME,SALESHIPREQUESTDETAILNAME,commitDate);
}
}
}

View File

@ -453,12 +453,12 @@ public class MESToWMSServiceImpl implements MESToWMSService {
+ " AND bm.ERPFACTORY = :ERPFACTORY";
String insertSql = SystemPropHelper.CR + "INSERT INTO BS_MES_SHIPPED(LOTNAME,QTY, UNIT, REQUESTNAME, AREA, "
+ "PRODUCTSPECNAME, PRODUCTNAME, SDK_ID, PHASE, RECEIVE_FLAG, REMARK, SHIPTIME, "
+ "SHIPUSER, SITENAME, MATERIALSPECTYPE,"
+ "SHIPUSER, SITENAME, MATERIALSPECTYPE,SALESHIPREQUESTNAME,SALESHIPREQUESTDETAILNAME,"
+ "INVENTORYTYPE, SALENO, SALEDETAILNO, ERPLOCATION, CHARGE, LOCATIONNAME, "
+ "OPERATIONTYPE, MAKEDATE,ERPFACTORY,GXID)" + SystemPropHelper.CR
+ " VALUES(:LOTNAME,:QTY,:UNIT,:REQUESTNAME, :AREA, "
+ ":PRODUCTSPECNAME, :PRODUCTNAME, :SDK_ID, :PHASE, 'N', :REMARK, :SHIPTIME, "
+ "'MES', 'SDK', :MATERIALSPECTYPE, "
+ "'MES', 'SDK', :MATERIALSPECTYPE, :SALESHIPREQUESTNAME,:SALESHIPREQUESTDETAILNAME,"
+ ":INVENTORYTYPE, :SALENO, :SALEDETAILNO, :ERPLOCATION, :CHARGE, :LOCATIONNAME, "
+ ":OPERATIONTYPE,TO_DATE(:MAKEDATE, 'YYYY-MM-DD'),:ERPFACTORY,:GXID)";
String receiveActNo = "";
@ -490,8 +490,8 @@ public class MESToWMSServiceImpl implements MESToWMSService {
String makeDate = jo.getString("makeDate");
erpFactory = jo.getString("erpFactory");
String materialPackingName = jo.getString("materialPackingName"); // 退料原条码二维码
String saleShipRequestName = jo.getString("SALESHIPREQUESTNAME"); // 销售订单号
String saleShipRequestDetailName = jo.getString("SALESHIPREQUESTDETAILNAME"); // 销售订单号行项
String saleShipRequestName = jo.getString("saleShipRequestName") == null ? "" : jo.getString("saleShipRequestName"); // 销售订单号 e库存
String saleShipRequestDetailName = jo.getString("saleShipRequestDetailName") == null ? "" : jo.getString("saleShipRequestDetailName"); // 销售订单号行项 e库存
if (i == 0) {
stockInType = jo.getString("stockInType");
@ -535,6 +535,8 @@ public class MESToWMSServiceImpl implements MESToWMSService {
bindMap.put("GXID", gxId);
bindMap.put("MATERIALPACKINGNAME", materialPackingName);
bindMap.put("MAKEDATE", makeDate);
bindMap.put("SALESHIPREQUESTNAME", saleShipRequestName); // e库存 销售订单号
bindMap.put("SALESHIPREQUESTDETAILNAME", saleShipRequestDetailName); // e库存 销售订单行项
if ("1".equals(operationType)) { // 自动入库
if ("FG".equals(stockInType) || "BFG".equals(stockInType)) { // 产成品入库 增加回收例子入库

View File

@ -615,7 +615,7 @@ public class ProductIntoServiceImpl implements FGStockInService {
sql.append(" M.ERPLOCATION , ");
sql.append(" T.AREA ,");
sql.append(" T.SHIPUSER , ");
sql.append(" T.PACKINGGRADE , ");
sql.append(" T.PACKINGGRADE ,T.SALESHIPREQUESTNAME,T.SALESHIPREQUESTDETAILNAME, ");
sql.append(" T.SHIPTIME , ");
sql.append(" M3.MATERIALTYPE , ");
sql.append(" T.REMARK,T.PHASE,T.CAREER_ASSISTANCE,T.DURABLETYPE ,T.BUSINESS_UNIT,T.SALESPERSON,T.MJPC ,T.TRUEGG,T.CHARGE,T.MAKEDATE, T.CUSTOMERNO ,"
@ -774,6 +774,8 @@ public class ProductIntoServiceImpl implements FGStockInService {
if("Y".equals(is_oven)) {
bindMap.put("MATURATIONINTIME", eventInfo.getEventTime());//熟化入库时间
}
bindMap.put("saleShipRequestName", queryForList.get(0).get("SALESHIPREQUESTNAME") == null ? "" : queryForList.get(0).get("SALESHIPREQUESTNAME").toString() );
bindMap.put("saleShipRequestDetailName", queryForList.get(0).get("SALESHIPREQUESTDETAILNAME") == null ? "" : queryForList.get(0).get("SALESHIPREQUESTDETAILNAME").toString() );
//增加立库相关信息T.LK_DURABLENAME,T.LK_AREANAME,T.LK_PRODUCTLINE,T.LK_WIDTH ,T.LK_DEVIATION,T.LK_WEIGHT,T.LK_DIAMETER,T.LK_SHELFNAME
bindMap.put("durableName", queryForList.get(0).get("LK_DURABLENAME"));