This commit is contained in:
郭飞 2025-05-19 09:06:14 +08:00
commit a3c5d53f38
17 changed files with 690 additions and 130 deletions

View File

@ -134,7 +134,15 @@ public class MaterialPacking extends FieldAccessor implements DataInfo<MaterialP
private String lastHoldUser; //最近一次冻结人 private String lastHoldUser; //最近一次冻结人
private String preOqaResult; // 质检前状态 private String preOqaResult; // 质检前状态
private String SALESHIPREQUESTNAME; // 销售订单号
public String getSALESHIPREQUESTNAME() {
return SALESHIPREQUESTNAME;
}
public void setSALESHIPREQUESTNAME(String SALESHIPREQUESTNAME) {
this.SALESHIPREQUESTNAME = SALESHIPREQUESTNAME;
}
public String getLastHoldUser() { public String getLastHoldUser() {
return lastHoldUser; return lastHoldUser;

View File

@ -1,6 +1,7 @@
package com.cim.idm.service; package com.cim.idm.service;
import com.cim.idm.framework.data.EventInfo;
import com.cim.idm.wmsextend.generic.errorHandler.CustomException; import com.cim.idm.wmsextend.generic.errorHandler.CustomException;
/** /**
@ -17,4 +18,14 @@ public interface QMSService {
*/ */
String PreIQCInfoSend (String receiveActNo, String siteName, String opCode, String erpFactory) throws CustomException; String PreIQCInfoSend (String receiveActNo, String siteName, String opCode, String erpFactory) throws CustomException;
/**
* 调用QMS质检接口
* @param sendQMSUrl QMS质检url
* @param sendQMSJson QMS质检报文
* @return QMS返回状态码
* @throws CustomException
*/
String sendQMSByUrlJson (String sendQMSUrl,String sendQMSJson, EventInfo eventInfo) throws CustomException;
} }

View File

@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.cim.idm.data.ErpMessageLog; import com.cim.idm.data.ErpMessageLog;
import com.cim.idm.framework.IDMFrameServiceProxy; import com.cim.idm.framework.IDMFrameServiceProxy;
import com.cim.idm.framework.data.EventInfo;
import com.cim.idm.framework.util.time.TimeStampUtil; import com.cim.idm.framework.util.time.TimeStampUtil;
import com.cim.idm.service.QMSService; import com.cim.idm.service.QMSService;
import com.cim.idm.util.MessageLogUtil; import com.cim.idm.util.MessageLogUtil;
@ -476,4 +477,133 @@ public class QMSServiceImpl implements QMSService{
} }
public String sendToIQCByDataList(String opCode, List<Map<String, Object>> list) throws CustomException {
JSONArray jsonArray = new JSONArray();
for (int i = 0; i < list.size(); i++) {
JSONObject jsonObject = new JSONObject(true);
//       "deliveryNumber": "SDK20240511003",
//         "supplierName": "BOE",
//         "supplierCode": "0000102038",
//         "materialName": "胶带",
//         "materialCode": "2F08S4J4",
//         "materialGroup": "A40001",
//         "batchQuantity": 10,
//         "quantityUnit": "1",
//         "deliveryDate": "2024-1-1 12:2:2"
jsonObject.put("opCode", opCode);
jsonObject.put("deliveryNumber", opCode);
jsonObject.put("warehouse", list.get(i).get("ERPLOCATIONDESC"));
jsonObject.put("supplierName", list.get(i).get("SUPPLIERNAME"));
jsonObject.put("supplierCode", list.get(i).get("SUPPLIERCODE"));
jsonObject.put("materialName", list.get(i).get("MATERIALNAME"));
jsonObject.put("materialCode", list.get(i).get("MATERIALCODE"));
jsonObject.put("materialGroup", list.get(i).get("MATERIALGROUP"));
jsonObject.put("batchQuantity", list.get(i).get("BATCHQUANTITY"));
jsonObject.put("quantityUnit", list.get(i).get("QUANTITYUNIT"));
jsonObject.put("deliveryDate", list.get(i).get("DELIVERYDATE"));
jsonObject.put("specifications", list.get(i).get("BATCHNUMBER"));
jsonObject.put("LOCATIONNAME", list.get(i).get("LOCATIONNAME"));
jsonObject.put("inspector", "检验室(原材仓)");
String erpFactory = list.get(i).get("BATCHQUANTITY") == null ? "" : list.get(i).get("BATCHQUANTITY").toString();
String factoryArea = "";
if("103".equals(erpFactory)) {
factoryArea = "tc";
}else if("105".equals(erpFactory)) {
factoryArea = "cq";
}else if("106".equals(erpFactory)){
factoryArea = "dg";
}else {
factoryArea = "sh";
}
// 入库单号和厂区
String receiveRequestName = list.get(i).get("RECEIVEREQUESTNAME") == null ? "" : list.get(i).get("RECEIVEREQUESTNAME").toString();
jsonObject.put("transferOrderNumber", receiveRequestName);
jsonObject.put("factoryArea", factoryArea);
/**
* 增加供应商编码和供应商名称
* 2025-05-12
*/
//供应商编码
jsonObject.put("supplierCode", list.get(i).get("SUPPLIERCODE"));
//供应商名称
jsonObject.put("supplierName", list.get(i).get("SUPPLIERNAME"));
String lots = list.get(i).get("LOTS") == null ? "" : list.get(i).get("LOTS").toString();
String[] split = lots.split("\\;");
JSONArray jsonArray2 = new JSONArray ();
for (int j = 0; j < split.length; j++) {
jsonArray2.add(split[j]);
}
jsonObject.put("lots", jsonArray2);
jsonArray.add(jsonObject);
}
String makePreIQCInfoSendJson = jsonArray.toString();
String httpPost = NCHttpUtil.httpPost(baseUrl + "/iqc/select/number", makePreIQCInfoSendJson);
org.json.JSONObject jsonObject = new org.json.JSONObject(httpPost);
String code = jsonObject.getString("code");
if (!"00000".equals(code)) {
}
// String msg = jsonObject.getString("msg");
//JSONObject object = (JSONObject) jsonObject.get("data");
Thread t = new Thread(new Runnable(){
public void run(){
// run方法具体重写
UUID uuid = UUID.randomUUID();
ErpMessageLog erplog = new ErpMessageLog();
erplog.setEventUser("");
erplog.setServerName("WmsToQMS");
erplog.setEventName("PreIQCInfoSend");
erplog.setId(uuid.toString());
erplog.setInterfaceTime(ConvertUtil.getCurrTime("yyyy-MM-dd HH:mm:ss"));
erplog.setMessageId(UUID.randomUUID().toString());
erplog.setSendMsg(makePreIQCInfoSendJson);
erplog.setReturnMsg2(httpPost.toString());
erplog.setResultCode(code);
MessageLogUtil.writeMessageLog(erplog);
}});
t.start();
return code;
}
/**
* 质检信息发送QMS
* @throws CustomException
*/
@Override
public String sendQMSByUrlJson(String sendQMSUrl, String sendQMSJson, EventInfo eventInfo) throws CustomException {
String httpPost = NCHttpUtil.httpPost(baseUrl + sendQMSUrl, sendQMSJson);
org.json.JSONObject jsonObject = new org.json.JSONObject(httpPost);
String code = jsonObject.getString("code");
String msg = "";
if (!"200".equals(code)) {
msg = jsonObject.getString("msg");
}
// String msg = jsonObject.getString("msg");
//JSONObject object = (JSONObject) jsonObject.get("data");
Thread t = new Thread(new Runnable(){
public void run(){
// run方法具体重写
UUID uuid = UUID.randomUUID();
ErpMessageLog erplog = new ErpMessageLog();
erplog.setEventUser("");
erplog.setServerName("WmsToQMS");
erplog.setEventName(eventInfo.getEventName());
erplog.setId(uuid.toString());
erplog.setInterfaceTime(ConvertUtil.getCurrTime("yyyy-MM-dd HH:mm:ss"));
erplog.setMessageId(UUID.randomUUID().toString());
erplog.setSendMsg(sendQMSJson);
erplog.setReturnMsg2(httpPost.toString());
erplog.setResultCode(code);
MessageLogUtil.writeMessageLog(erplog);
}});
t.start();
return msg;
}
} }

View File

@ -5,12 +5,17 @@ import com.alibaba.fastjson.JSONObject;
import com.cim.idm.data.AuditBox; import com.cim.idm.data.AuditBox;
import com.cim.idm.data.ErpMessageLog; import com.cim.idm.data.ErpMessageLog;
import com.cim.idm.framework.IDMFrameServiceProxy; import com.cim.idm.framework.IDMFrameServiceProxy;
import com.cim.idm.framework.data.EventInfo;
import com.cim.idm.framework.util.sys.SystemPropHelper; import com.cim.idm.framework.util.sys.SystemPropHelper;
import com.cim.idm.framework.util.time.TimeStampUtil; import com.cim.idm.framework.util.time.TimeStampUtil;
import com.cim.idm.util.MessageLogUtil; import com.cim.idm.util.MessageLogUtil;
import com.cim.idm.util.ToSAPMessageUtil; import com.cim.idm.util.ToSAPMessageUtil;
import com.cim.idm.wmsextend.generic.errorHandler.CustomException; import com.cim.idm.wmsextend.generic.errorHandler.CustomException;
import com.cim.idm.wmsextend.generic.util.EventInfoUtil;
import com.cim.idm.wmspackage.materialpacking.MaterialPackingServiceProxy;
import com.cim.idm.wmspackage.materialpacking.management.data.MaterialPacking;
import com.cim.idm.wmspackage.materialpacking.management.data.MaterialPackingKey; import com.cim.idm.wmspackage.materialpacking.management.data.MaterialPackingKey;
import com.cim.idm.wmspackage.materialpacking.management.info.SetEventInfo;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
@ -29,6 +34,8 @@ public class ToSAPServiceImpl {
@Autowired @Autowired
private ToSAPMessageUtil toSAPMessageUtil; private ToSAPMessageUtil toSAPMessageUtil;
@Autowired
private QMSServiceImpl qmsServiceImpl;
public String PurStockIn(String receiveRequestName, String siteName, String user, public String PurStockIn(String receiveRequestName, String siteName, String user,
@ -2602,7 +2609,7 @@ public class ToSAPServiceImpl {
//过账日期 //过账日期
body.put("BUDAT", budatData); body.put("BUDAT", budatData);
//凭证日期 //凭证日期
body.put("BLDAT", TimeStampUtil.getCurrentTime("yyyyMMdd")); body.put("BLDAT", budatData);
//凭证抬头文本 //凭证抬头文本
body.put("BKTXT", uniqueID); body.put("BKTXT", uniqueID);
//用户名 //用户名
@ -6296,4 +6303,194 @@ public class ToSAPServiceImpl {
bodyJSonData.put("BUDAT", payMentDate); bodyJSonData.put("BUDAT", payMentDate);
return MainData.toJSONString(); return MainData.toJSONString();
} }
/**
* 到货单入库调用SAP过账
* @param deliveryName 到货单号
* @param siteName 工厂
* @param user 登录用户
* @param commitDate 过账时间
* @param opCode
* @return
* @throws Exception
*/
public String DeliveryToSAPMontage(String deliveryName, String siteName, String user,String commitDate, String opCode, List<String> saleList) throws Exception {
EventInfo eventInfo = new EventInfoUtil().makeEventInfo("NormalStockInDelivery", user, "NormalStockInDelivery", "", "");
String rcode;
String undoId = "";
String rmsg = null;
//调用SAP接口的报文
String sendData = "";
//SAP返回报文
String sapreturn = "";
List<MaterialPackingKey> materialPackingKeyList = new ArrayList<>();
//依据采购订单查询待入库的物料(MATERIALPACKING)
String querySql = " \n" +
"\tSELECT\n" +
" D.DELIVERYSTATE,\n" +
" DR.DELIVERYNAME,\n" +
" DR.DELIVERYNUM,\n" +
" DR.RECEIVEREQUESTNAME,\n" +
" DR.RECEIVEREQUESTDETAILNAME,\n" +
" DR.MATERIALSPECNAME,\n" +
" P.MATERIALPACKINGNAME,\n" +
" P.ERPLOCATION,\n" +
" P.ERPFACTORY,\n" +
" P.SUPPLIERNAME,\n" +
" P.UNIT,\n" +
"\t\tP.FQTY,\n" +
" P.FUNIT,\n" +
" P.REMARK,\n" +
"\t\tBF.IQCFLAG,\n" +
" P.OQARESULT,\n" +
"\t\tR.STOCKORGNO,\n" +
"\t\tR.RECEIVEREQUESTTYPE\n" +
"FROM\n" +
" MATERIALPACKING P \n" +
"LEFT JOIN BS_MATERIALFACTORY BF ON BF.MATERIALSPECNAME = P.MATERIALSPECNAME AND BF.ERPFACTORY = P.ERPFACTORY\n" +
"LEFT JOIN MATERIALRECEIVEREQUESTDETAIL RD ON P.SITENAME = RD.SITENAME \n" +
"LEFT JOIN MATERIALRECEIVEREQUEST R ON RD.RECEIVEREQUESTNAME = R.RECEIVEREQUESTNAME AND RD.SITENAME = R.SITENAME\n" +
"LEFT JOIN MATERIALDELIVERYRECEIVE DR ON R.RECEIVEREQUESTNAME=DR.RECEIVEREQUESTNAME \n" +
"LEFT JOIN MATERIALDELIVERY D ON DR.DELIVERYNAME = D.DELIVERYNAME\n" +
"WHERE\n" +
" D.SITENAME =:SITENAME\n" +
" AND D.DELIVERYNAME =:DELIVERYNAME\n" +
" AND D.DELIVERYSTATE = '01'\n" +
"\t\tAND DR.MATERIALSPECNAME=RD.MATERIALSPECNAME\n" +
"\t\tAND RD.RECEIVEREQUESTDETAILNAME=DR.RECEIVEREQUESTDETAILNAME\n" +
"\t\tAND P.RECEIVEREQUESTNAME = DR.DELIVERYNAME \n" +
"\t\tAND P.MATERIALSPECNAME = DR.MATERIALSPECNAME ";
Map<String, Object> hashMap = new HashMap<String, Object>();
hashMap.put("DELIVERYNAME", deliveryName);
hashMap.put("SITENAME", siteName);
List<Map<String, Object>> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(querySql, hashMap);
List<Map<String, Object>> receiveBoxsQty = new ArrayList<>(); //基于标签收包的维度的数量
try {
Map<String,Object> bodyData = new HashMap<>();
List<Map<String,Object>> itemData = new ArrayList<>();
for (Map<String, Object> mm : queryForList) {
//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("UMWRK", mm.get("ERPFACTORY"));
item.put("WERKS", mm.get("ERPFACTORY"));
item.put("BWART","101");
item.put("LIFNR", mm.get("SUPPLIERNAME"));
item.put("MENGE", mm.get("MATERIALQUANTITY"));
item.put("MEINS", mm.get("UNIT"));
item.put("BPMNG", mm.get("FQTY"));//采购价格单位数量
item.put("BPRME", mm.get("FUNIT"));//采购价格单位
item.put("EBELN", mm.get("RECEIVEREQUESTNAME"));
item.put("EBELP", mm.get("RECEIVEREQUESTDETAILNAME"));
item.put("SGTXT", mm.get("REMARK"));
String insmk = "";
if("Y".equals((String)mm.get("IQCFLAG"))) {
insmk = "2";
}
if("NG".equals((String)mm.get("OQARESULT"))) {
insmk = "3";
}
// String insmk = StringUtils.equals(mm.get("OQARESULTSTATE").toString(),"END")?"":"X";
item.put("INSMK", insmk);
itemData.add(item);
//存储条码更新UNDOID用
MaterialPackingKey materialPackingKey = new MaterialPackingKey(siteName, mm.get("MATERIALPACKINGNAME").toString());
materialPackingKeyList.add(materialPackingKey);
}
sendData = ToSAPMessageUtil.mm067(user, bodyData, itemData, commitDate);
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();
//将log写到表里
ErpMessageLog erplog = new ErpMessageLog();
erplog.setEventUser("");
erplog.setServerName("WmsToErp");
erplog.setEventName("PurStockIn");
erplog.setInterfaceTime(TimeStampUtil.getCurrentTime(TimeStampUtil.FORMAT_DEFAULT));
erplog.setMessageId(UUID.randomUUID().toString());
erplog.setSendMsg(sendData);
erplog.setReturnMsg2(sapreturn);
erplog.setResultCode(rcode);
MessageLogUtil.writeMessageLog(erplog);
if ("S".equals(rcode)) {
undoId = returnJsonObject.get("MBLNR").toString()+"_"+returnJsonObject.get("MJAHR").toString();//将物料凭证号与凭证年度拼在一起
}else {
throw new RuntimeException("SAP返回" + rmsg);
}
} catch (Exception e) {
log.info(e.getMessage(), e);
throw new RuntimeException("SAP返回" + rmsg);
}
if(!saleList.contains(queryForList.get(0).get("RECEIVEREQUESTTYPE").toString())) {
try {
// 调用 QMS
//qMSServiceImpl.PreIQCInfoSend(receiveRequestName, "SDK",opCode, erpFactory);
qmsServiceImpl.sendToIQCByDataList(opCode, queryForList);
} catch (CustomException e) {
e.printStackTrace();
throw new RuntimeException("QMS返回" + e.toString());
}
}
// 更新入库凭证,更新库存状态
if (materialPackingKeyList.size() > 0){
SetEventInfo setEventInfo = new SetEventInfo();
Map<String, Object> updateMap = new HashMap<>();
updateMap.put("unDoID", undoId);
updateMap.put("packingState","Released");
updateMap.put("stockState","Stocked");
updateMap.put("messageId",opCode);
updateMap.put("shipRequestName", "");
updateMap.put("shipRequestDetailName", "");
setEventInfo.setUserColumns(updateMap);
MaterialPackingServiceProxy.getMaterialPackingService().setEvent(materialPackingKeyList, eventInfo, setEventInfo);
}
//插入凭证信息
SaveUnDoInfo(deliveryName,commitDate);
return undoId;
}
/**
* 接收ERP返回消息更新WMS凭证
* @param materialPackingName
*/
public void SaveUnDoInfo(String materialPackingName,String commitDate) {
String insertUnDOMaterialPackingInfo = "insert into BS_MATERIALPACKINGUNDOINFO (unDoID,preundoid,UNDODETAILNAME,undoidstate,UNDOIDDATE,"
+ "SITENAME, MATERIALPACKINGNAME, MATERIALPACKINGTYPE, CONTENTMATERIALTYPE,"
+ "MATERIALTYPE, MATERIALSPECNAME, SUPERMATERIALPACKINGNAME, PACKINGGRADE, SUBPACKINGQUANTITY, MATERIALCREATEQUANTITY,"
+ "MATERIALQUANTITY, PACKINGSTATE, OLDPACKINGSTATE, STOCKSTATE, OLDSTOCKSTATE, HOLDSTATE, AREANAME, LOCATIONNAME,"
+ "DURABLENAME, MATERIALPROCESSGROUPNAME, LASTEVENTNAME, LASTEVENTTIMEKEY, LASTEVENTTIME, LASTEVENTUSER,"
+ "LASTEVENTCOMMENT, CREATETIME, CREATEUSER, RECEIVEREQUESTNAME, RECEIVEREQUESTDETAILNAME,"
+ "MAKEDATE, RECEIVEACTNO, STOCKINTYPE, RECEIVETIME, RECEIVEUSER, SHIPREQUESTNAME, SHIPREQUESTDETAILNAME, SHIPTIME,"
+ "SHIPUSER, REASONCODETYPE, OQARESULTSTATE, OQARESULT, ERPLOCATION, ERPFACTORY, REASONCODE, CHARGE, SUPPLIERNAME,ETCSTATE,ERPEVENTTIME,NPFLAG)"
+ "select unDoID,'' as preundoid,UNDODETAILNAME,'Completed' as undoidstate,:commitDate AS UNDOIDDATE," //
+ "SITENAME, MATERIALPACKINGNAME, MATERIALPACKINGTYPE, CONTENTMATERIALTYPE,"
+ "MATERIALTYPE, MATERIALSPECNAME, SUPERMATERIALPACKINGNAME, PACKINGGRADE, SUBPACKINGQUANTITY, MATERIALCREATEQUANTITY,"
+ "MATERIALQUANTITY, PACKINGSTATE, OLDPACKINGSTATE, STOCKSTATE, OLDSTOCKSTATE, HOLDSTATE, AREANAME, LOCATIONNAME,"
+ "DURABLENAME, MATERIALPROCESSGROUPNAME, LASTEVENTNAME, LASTEVENTTIMEKEY, LASTEVENTTIME, LASTEVENTUSER,"
+ "LASTEVENTCOMMENT, CREATETIME, CREATEUSER, RECEIVEREQUESTNAME, RECEIVEREQUESTDETAILNAME,"
+ "MAKEDATE, RECEIVEACTNO, STOCKINTYPE, RECEIVETIME, RECEIVEUSER, SHIPREQUESTNAME, SHIPREQUESTDETAILNAME, SHIPTIME,"
+ "SHIPUSER, REASONCODETYPE, OQARESULTSTATE, OQARESULT, ERPLOCATION, ERPFACTORY, REASONCODE, CHARGE, SUPPLIERNAME,ETCSTATE,ERPEVENTTIME,NPFLAG"
+ " from MATERIALPACKING "
+ " where MATERIALPACKINGNAME=:MATERIALPACKINGNAME ";
Map<String, Object> bindMap_insert = new HashMap<String, Object>();
bindMap_insert.put("MATERIALPACKINGNAME", materialPackingName);
bindMap_insert.put("commitDate", commitDate);
IDMFrameServiceProxy.getSqlTemplate().update(insertUnDOMaterialPackingInfo, bindMap_insert);
}
} }

View File

@ -12,6 +12,7 @@ import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.List; import java.util.List;
import java.util.Map;
@RestController @RestController
@ -32,4 +33,14 @@ public class CostCenterController {
List<CostCenter> costCenters = costCenterService.getCostCenter(); List<CostCenter> costCenters = costCenterService.getCostCenter();
return RespGenerator.returnOK(costCenters); return RespGenerator.returnOK(costCenters);
} }
/**
* 获取用户信息
* @return
*/
@RequestMapping(value = "/getUserInfo", method = RequestMethod.GET)
public BaseResponse<Object> getUserInfo() {
List<Map<String, Object>> userInfos = costCenterService.getUserInfo();
return RespGenerator.returnOK(userInfos);
}
} }

View File

@ -137,4 +137,44 @@ public class DeliveryController {
} }
return AjaxResult.me().setErrorCode(-1).setMessage("删除失败"); return AjaxResult.me().setErrorCode(-1).setMessage("删除失败");
} }
/**
* 2025-05-14
* 获取到货单入库详情
*/
@PostMapping(value = "/getMaterialDeliveryDetailList")
public AjaxResult GetMaterialDeliveryDetailList(@RequestBody JSONObject in) {
Map<String, String> params = (Map<String, String>) in.get("params");
// siteName
StoreDetailDto storeDetailDto = new StoreDetailDto();
storeDetailDto.setSiteName(params.get("SITENAME"));
storeDetailDto.setDocumentName(params.get("RECEIVEREQUESTNAME"));
// 单据名称集合
List<String> nameList = new ArrayList<>();
String deliveryName = null;
MaterialDelivery byKey = deliveryService.getByKey(storeDetailDto);
// 到货单
if (Objects.nonNull(byKey)) {
deliveryName = byKey.getDeliveryName();
// 到库单找出该单据下的所有的采购单
nameList = deliveryService.getRelByDelivery(storeDetailDto)
.stream().map(MaterialDeliveryReceive::getReceiveRequestName).distinct().collect(Collectors.toList());
}
// 异常
if (nameList.isEmpty()) {
throw new GlobalException("不存在该单据");
}
// 获取采购单明细及批次
String deliveryType = params.get("deliveryType");
if (deliveryType.equals(DeliveryTypeEnums.BATCH.getCode())) {
// 批次
return AjaxResult.me().setSuccess(true).setResultObj(
deliveryService.getStoreDetail(storeDetailDto.getDocumentName(), storeDetailDto.getSiteName(), nameList, deliveryName));
} else {
// 辅材
return AjaxResult.me().setSuccess(true).setResultObj(
deliveryService.getMaterialDetail(storeDetailDto.getDocumentName(), storeDetailDto.getSiteName(), nameList, deliveryName));
}
}
} }

View File

@ -2007,7 +2007,7 @@ public class InvoiceController {
MaterialshipRequest materialShipRequest = JSON.toJavaObject(in, MaterialshipRequest.class); MaterialshipRequest materialShipRequest = JSON.toJavaObject(in, MaterialshipRequest.class);
String shipRequestName2 = materialShipRequest.getShipRequestName(); String shipRequestName2 = materialShipRequest.getShipRequestName();
//根据单据类型判断生产订单类型如果是领料单且单据类型是复卷和返工的不卡控批次质量状态 //根据单据类型判断生产订单类型如果是领料单且单据类型是复卷和返工的不卡控批次质量状态
String dTypeSql = "SELECT M.PRODUCTORDERTYPE,M.PRODUCTORDERNO FROM MATERIALSHIPREQUEST M WHERE M.SHIPREQUESTNAME = :SHIPREQUESTNAME"; String dTypeSql = "SELECT M.AUART FROM MATERIALSHIPREQUESTDETAIL M WHERE M.SHIPREQUESTNAME = :SHIPREQUESTNAME";
Map<String, Object> hashMap3 = new HashMap<String,Object> (); Map<String, Object> hashMap3 = new HashMap<String,Object> ();
hashMap3.put("SHIPREQUESTNAME", shipRequestName2); hashMap3.put("SHIPREQUESTNAME", shipRequestName2);
String productOrderType = ""; String productOrderType = "";
@ -2015,8 +2015,8 @@ public class InvoiceController {
List<Map<String, Object>> queryForListW = new ArrayList<>(); List<Map<String, Object>> queryForListW = new ArrayList<>();
List<Map<String, Object>> queryForList3 = IDMFrameServiceProxy.getSqlTemplate().queryForList(dTypeSql, hashMap3); List<Map<String, Object>> queryForList3 = IDMFrameServiceProxy.getSqlTemplate().queryForList(dTypeSql, hashMap3);
if (queryForList3 != null && queryForList3.size() > 0) { if (queryForList3 != null && queryForList3.size() > 0) {
productOrderType = queryForList3.get(0).get("PRODUCTORDERTYPE") == null ? "" :queryForList3.get(0).get("PRODUCTORDERTYPE").toString(); productOrderType = queryForList3.get(0).get("AUART") == null ? "" :queryForList3.get(0).get("AUART").toString();
productOrderNo = queryForList3.get(0).get("PRODUCTORDERNO") == null ? "" :queryForList3.get(0).get("PRODUCTORDERNO").toString(); productOrderNo = queryForList3.get(0).get("AUART") == null ? "" :queryForList3.get(0).get("AUART").toString();
// 查询工单维护表 是否有对应的生产订单 // 查询工单维护表 是否有对应的生产订单
String workSql = "SELECT w.WORKORDER FROM WORKORDER w WHERE w.WORKORDER =:WORKORDER"; String workSql = "SELECT w.WORKORDER FROM WORKORDER w WHERE w.WORKORDER =:WORKORDER";
@ -2065,14 +2065,12 @@ public class InvoiceController {
if (!"Stocked".equals(stockState)) { if (!"Stocked".equals(stockState)) {
return AjaxResult.me().setSuccess(false).setMessage("条码不在库!"); return AjaxResult.me().setSuccess(false).setMessage("条码不在库!");
} }
if (!"OK".equals(packinggrade) && (!"55A2-02".equals(productOrderType) && !"55A2-Cxx-08".equals(productOrderType) if (!"OK".equals(packinggrade) && (!"ZP01".equals(productOrderType) && !"ZP05".equals(productOrderType))
&& !"4455-Cxx-10".equals(productOrderType) && !"4455-Cxx-01".equals(productOrderType) && (queryForListW == null || queryForListW.size() < 1)) {//复卷返工工单
&& !"5X-Cxx-07".equals(productOrderType)) && (queryForListW == null || queryForListW.size() < 1)) {//复卷返工工单
return AjaxResult.me().setSuccess(false).setMessage("单据类型不为复卷或 返工, 引膜领用和研发领用, 批次不合格不能出库!"); return AjaxResult.me().setSuccess(false).setMessage("单据类型不为复卷或 返工, 引膜领用和研发领用, 批次不合格不能出库!");
} }
if (!"1".equals(exp) && (!"55A2-02".equals(productOrderType) && !"55A2-Cxx-08".equals(productOrderType) if (!"1".equals(exp) && (!"ZP01".equals(productOrderType) && !"ZP05".equals(productOrderType))
&& !"4455-Cxx-10".equals(productOrderType) && !"4455-Cxx-01".equals(productOrderType) && (queryForListW == null || queryForListW.size() < 1)) {//复卷返工工单
&& !"5X-Cxx-07".equals(productOrderType)) && (queryForListW == null || queryForListW.size() < 1)) {//复卷返工工单
return AjaxResult.me().setSuccess(false).setMessage("单据类型不为复卷或 返工, 引膜领用和研发领用, 批次已过期!"); return AjaxResult.me().setSuccess(false).setMessage("单据类型不为复卷或 返工, 引膜领用和研发领用, 批次已过期!");
} }
if (!"END".equals(oqaresultstate)) { if (!"END".equals(oqaresultstate)) {
@ -2185,13 +2183,13 @@ public class InvoiceController {
MaterialshipRequest materialShipRequest = JSON.toJavaObject(in, MaterialshipRequest.class); MaterialshipRequest materialShipRequest = JSON.toJavaObject(in, MaterialshipRequest.class);
String shipRequestName2 = materialShipRequest.getShipRequestName(); String shipRequestName2 = materialShipRequest.getShipRequestName();
//根据单据类型判断生产订单类型如果是领料单且单据类型是复卷和返工的不卡控批次质量状态 //根据单据类型判断生产订单类型如果是领料单且单据类型是复卷和返工的不卡控批次质量状态
String dTypeSql = "SELECT M.PRODUCTORDERTYPE FROM MATERIALSHIPREQUEST M WHERE M.SHIPREQUESTNAME = :SHIPREQUESTNAME"; String dTypeSql = "SELECT M.AUART FROM MATERIALSHIPREQUESTDETAIL M WHERE M.SHIPREQUESTNAME = :SHIPREQUESTNAME";
Map<String, Object> hashMap3 = new HashMap<String,Object> (); Map<String, Object> hashMap3 = new HashMap<String,Object> ();
hashMap3.put("SHIPREQUESTNAME", shipRequestName2); hashMap3.put("SHIPREQUESTNAME", shipRequestName2);
String productOrderType = ""; String productOrderType = "";
List<Map<String, Object>> queryForList3 = IDMFrameServiceProxy.getSqlTemplate().queryForList(dTypeSql, hashMap3); List<Map<String, Object>> queryForList3 = IDMFrameServiceProxy.getSqlTemplate().queryForList(dTypeSql, hashMap3);
if (queryForList3 != null && queryForList3.size() > 0) { if (queryForList3 != null && queryForList3.size() > 0) {
productOrderType = queryForList3.get(0).get("PRODUCTORDERTYPE") == null ? "" :queryForList3.get(0).get("PRODUCTORDERTYPE").toString(); productOrderType = queryForList3.get(0).get("AUART") == null ? "" :queryForList3.get(0).get("AUART").toString();
} }
String type = materialShipRequest.getType();//Assign 备货 Dessign 解绑 String type = materialShipRequest.getType();//Assign 备货 Dessign 解绑
String materialPackingName = materialShipRequest.getMaterialPackingName();//标签 String materialPackingName = materialShipRequest.getMaterialPackingName();//标签
@ -2235,14 +2233,12 @@ public class InvoiceController {
if (!"Stocked".equals(stockState)) { if (!"Stocked".equals(stockState)) {
return AjaxResult.me().setSuccess(false).setMessage("条码不在库!"); return AjaxResult.me().setSuccess(false).setMessage("条码不在库!");
} }
if (!"OK".equals(packinggrade) && (!"55A2-02".equals(productOrderType) && !"55A2-Cxx-08".equals(productOrderType) if (!"OK".equals(packinggrade) &&
&& !"4455-Cxx-10".equals(productOrderType) && !"455-Cxx-01".equals(productOrderType) (!"ZP01".equals(productOrderType) && !"ZP05".equals(productOrderType))) {//复卷返工工单
&& !"5X-Cxx-07".equals(productOrderType))) {//复卷返工工单
return AjaxResult.me().setSuccess(false).setMessage("单据类型不为复卷或 返工, 引膜领用和研发领用, 批次不合格不能出库!"); return AjaxResult.me().setSuccess(false).setMessage("单据类型不为复卷或 返工, 引膜领用和研发领用, 批次不合格不能出库!");
} }
if (!"1".equals(exp) && (!"55A2-02".equals(productOrderType) && !"55A2-Cxx-08".equals(productOrderType) if (!"1".equals(exp) &&
&& !"4455-Cxx-10".equals(productOrderType) && !"455-Cxx-01".equals(productOrderType) (!"ZP01".equals(productOrderType) && !"ZP05".equals(productOrderType))) {//复卷返工工单
&& !"5X-Cxx-07".equals(productOrderType))) {//复卷返工工单
return AjaxResult.me().setSuccess(false).setMessage("单据类型不为复卷或 返工, 引膜领用和研发领用, 批次已过期!"); return AjaxResult.me().setSuccess(false).setMessage("单据类型不为复卷或 返工, 引膜领用和研发领用, 批次已过期!");
} }
if (!"END".equals(oqaresultstate)) { if (!"END".equals(oqaresultstate)) {

View File

@ -13,6 +13,7 @@ import com.cim.idm.model.po.MaterialReceiveRequest;
import com.cim.idm.mwmsextend.materialpacking.service.MaterialPackingServiceImpl; import com.cim.idm.mwmsextend.materialpacking.service.MaterialPackingServiceImpl;
import com.cim.idm.response.BaseResponse; import com.cim.idm.response.BaseResponse;
import com.cim.idm.response.RespGenerator; import com.cim.idm.response.RespGenerator;
import com.cim.idm.service.CostCenterService;
import com.cim.idm.service.LabelService; import com.cim.idm.service.LabelService;
import com.cim.idm.utils.AjaxResult; import com.cim.idm.utils.AjaxResult;
import com.cim.idm.utils.EventInfoUtil; import com.cim.idm.utils.EventInfoUtil;
@ -45,6 +46,8 @@ public class LabelController {
@Resource @Resource
private LabelService labelService; private LabelService labelService;
@Resource
private CostCenterService costCenterService;
// @Resource // @Resource
// private LabelPrintInfoService labelPrintInfoService; // private LabelPrintInfoService labelPrintInfoService;
@ -400,112 +403,11 @@ public class LabelController {
MaterialPackingServiceProxy.getMaterialPackingService().setEvent(listKey, makeEventInfo, setEventInfo); MaterialPackingServiceProxy.getMaterialPackingService().setEvent(listKey, makeEventInfo, setEventInfo);
return AjaxResult.me().setSuccess(true).setMessage("实际规格更新成功"); return AjaxResult.me().setSuccess(true).setMessage("实际规格更新成功");
} }
//更新业助 //更新业助
@RequestMapping(value = "/updateCareerAssistance", method = RequestMethod.POST) @RequestMapping(value = "/updateCareerAssistance", method = RequestMethod.POST)
public AjaxResult updateCareerAssistance(@RequestBody JSONObject in) { public AjaxResult updateCareerAssistance(@RequestBody JSONObject in) {
costCenterService.updateCareerAssistanceNew(in);
MaterialReceiveRequest sl = JSON.toJavaObject(in, MaterialReceiveRequest.class);
List<MaterialPacking> boxList = sl.getBoxList();//CAREER_ASSISTANCE
String user = sl.getUser();
String siteName = sl.getSiteName();
String career_ASSISTANCE = sl.getRemark();
String CUSTOMNO = sl.getCUSTOMNO();
String pc = "(";
for (MaterialPacking materialPacking : boxList) {
String career_ASSISTANCE2 = materialPacking.getCAREER_ASSISTANCE();
String CUSTOMNO2 = materialPacking.getCUSTOMNO();
String materialPackingName = materialPacking.getMaterialPackingName();
pc += "'" + materialPackingName + "',";
String materialspecname = materialPacking.getMaterialSpecName();
String charge = materialPacking.getCharge();
String phase = materialPacking.getPHASE();
// SetEventInfo setEventInfo = new SetEventInfo();
Map<String, Object> hashMap = new HashMap<String,Object> ();
// hashMap.put("CAREER_ASSISTANCE", career_ASSISTANCE);
if (career_ASSISTANCE2 != null && !"".equals(career_ASSISTANCE2)) {
hashMap.put("CAREER_ASSISTANCE2", career_ASSISTANCE2);
}
if (CUSTOMNO2 != null && !"".equals(CUSTOMNO2)) {
hashMap.put("CUSTOMNO2", CUSTOMNO2);
}
hashMap.put("SITENAME", siteName);
hashMap.put("MATERIALPACKINGNAME", materialPackingName);
hashMap.put("MATERIALSPECNAME", materialspecname);
hashMap.put("CHARGE", charge);
hashMap.put("PHASE", phase);
hashMap.put("IS_CHECK", "N");
hashMap.put("USERID", user);
hashMap.put("CAREER_ASSISTANCE", career_ASSISTANCE);
hashMap.put("CUSTOMNO", CUSTOMNO);
// setEventInfo.setUserColumns(hashMap);
// MaterialPackingKey mk = new MaterialPackingKey(siteName,materialPackingName);
// EventInfo makeEventInfo = new EventInfoUtil().makeEventInfo("UpdateCareerAssistance", user, "UpdateCareerAssistance");
// MaterialPackingServiceProxy.getMaterialPackingService().setEvent(mk, makeEventInfo, setEventInfo);
// String yzSql = "SELECT * FROM USERINFO WHERE U.USERNAME = A.CAREER_ASSISTANCE";
String yzSql = "SELECT U.USERNAME FROM USERINFO U WHERE U.USERID = :USERID ";
List<Map<String, Object>> userQueryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(yzSql, hashMap);
if(Objects.isNull(userQueryForList) || userQueryForList.isEmpty() || userQueryForList.size() < 1) {
// throw new RuntimeException("业助名称不正确或未注册");
return AjaxResult.me().setSuccess(false).setMessage("业助名称不正确或未注册");
}else {
String userName = userQueryForList.get(0).get("USERNAME") == null ? "" : userQueryForList.get(0).get("USERNAME").toString();
if ((career_ASSISTANCE2 != null || !"".equals(career_ASSISTANCE2)) && !userName.equals(career_ASSISTANCE2)) {
return AjaxResult.me().setSuccess(false).setMessage("业助" + career_ASSISTANCE2 + "不能被修改");
}
if ((career_ASSISTANCE != null || !"".equals(career_ASSISTANCE)) && !userName.equals(career_ASSISTANCE)) {
return AjaxResult.me().setSuccess(false).setMessage("业助" + career_ASSISTANCE + "不能被修改");
}
}
}
pc += "'')";
String updateSql = "MERGE\r\n" +
"INTO\r\n" +
" MATERIALPACKINGCHECK T\r\n" +
" USING (\r\n" +
" SELECT\r\n" +
" *\r\n" +
" FROM\r\n" +
" MATERIALPACKING\r\n" +
" WHERE\r\n" +
" MATERIALPACKINGNAME IN " + pc + " ) M " +
"ON\r\n" +
" (T.MATERIALPACKINGNAME = M.MATERIALPACKINGNAME)\r\n" +
" WHEN MATCHED THEN\r\n" +
"UPDATE\r\n" +
"SET\r\n" +
" T.CAREER_ASSISTANCE = :CAREER_ASSISTANCE,\r\n" +
" T.CUSTOMNO = :CUSTOMNO, T.IS_CHECK = 'N' \r\n" +
" WHEN NOT MATCHED THEN\r\n" +
"INSERT\r\n" +
" (SITENAME,\r\n" +
" MATERIALPACKINGNAME,\r\n" +
" MATERIALSPECNAME,\r\n" +
" CHARGE,\r\n" +
" PHASE,\r\n" +
" IS_CHECK,\r\n" +
" CAREER_ASSISTANCE,\r\n" +
" CUSTOMNO)\r\n" +
"VALUES (M.SITENAME,\r\n" +
"M.MATERIALPACKINGNAME,\r\n" +
"M.MATERIALSPECNAME,\r\n" +
"M.CHARGE,\r\n" +
"M.PHASE,\r\n" +
"'N',\r\n" +
":CAREER_ASSISTANCE,\r\n" +
":CUSTOMNO)" ;
Map<String, Object> map = new HashMap<String,Object> ();
map.put("CAREER_ASSISTANCE", career_ASSISTANCE);
map.put("CUSTOMNO", CUSTOMNO);
IDMFrameServiceProxy.getSqlTemplate().update(updateSql, map);
return AjaxResult.me().setSuccess(true).setMessage("业助更新成功"); return AjaxResult.me().setSuccess(true).setMessage("业助更新成功");
} }
@ -520,6 +422,21 @@ public class LabelController {
String customno = (String)param.get("CUSTOMNO"); String customno = (String)param.get("CUSTOMNO");
String user = (String)param.get("user"); String user = (String)param.get("user");
String is_check = (String)param.get("IS_CHECK"); String is_check = (String)param.get("IS_CHECK");
String SALESHIPREQUESTNAME = (String)param.get("SALESHIPREQUESTNAME");
String SALESHIPREQUESTDETAILNAME = (String)param.get("SALESHIPREQUESTDETAILNAME");
String POSTSTATUS = (String)param.get("POSTSTATUS");
String MATERIALPACKINGNAME = (String)param.get("MATERIALPACKINGNAME");
String updatePackingSql ="UPDATE MATERIALPACKING SET SALESHIPREQUESTNAME = :SALESHIPREQUESTNAME, " +
"SALESHIPREQUESTDETAILNAME = :SALESHIPREQUESTDETAILNAME, " +
"POSTSTATUS = :POSTSTATUS WHERE MATERIALPACKINGNAME = :MATERIALPACKINGNAME";
Map<String, Object> bindMapPac = new HashMap<String, Object>();
bindMapPac.put("SALESHIPREQUESTNAME", SALESHIPREQUESTNAME);
bindMapPac.put("SALESHIPREQUESTDETAILNAME", SALESHIPREQUESTDETAILNAME);
bindMapPac.put("POSTSTATUS", POSTSTATUS);
bindMapPac.put("MATERIALPACKINGNAME", MATERIALPACKINGNAME);
IDMFrameServiceProxy.getSqlTemplate().update(updatePackingSql, bindMapPac);
SetSpecEventInfo info = new SetSpecEventInfo(); SetSpecEventInfo info = new SetSpecEventInfo();
Map<String, Object> bindMap = new HashMap<String, Object>(); Map<String, Object> bindMap = new HashMap<String, Object>();

View File

@ -619,4 +619,43 @@ public class MaterialReceiveActController {
} }
return billCode; return billCode;
} }
/**
* 到货单入库过账
* 2025-05-14
* @param in receiveRequestName到货单号
* @return 返回信息
*/
@RequestMapping(value = "/commitDeliveryStockInToSAP", method = RequestMethod.POST)
public AjaxResult CommitDeliveryStockInToSAP(@RequestBody JSONObject in ) {
try {
TrackOutBoDto trackOutBoDto = JSON.toJavaObject(in, TrackOutBoDto.class);
StoreDetailDto storeDetailDto = new StoreDetailDto();
storeDetailDto.setDocumentName(trackOutBoDto.getReceiveRequestName());
storeDetailDto.setSiteName(trackOutBoDto.getSiteName());
MaterialDelivery materialDelivery = deliveryService.getByKey(storeDetailDto);
if (Objects.nonNull(materialDelivery)) {
String user = trackOutBoDto.getUser();
String opCode = trackOutBoDto.getOpCode();
String commitDate = trackOutBoDto.getCommitDate();
String siteName = trackOutBoDto.getSiteName();
toSAPServiceImpl.DeliveryToSAPMontage(materialDelivery.getDeliveryName(), siteName, user, commitDate,opCode,ReceiveTypeEnums.getsaleReturn());
// 到货单据更新状态
if (Objects.nonNull(materialDelivery.getDeliveryName())) {
DeliveryEditDto deliveryEditDto = new DeliveryEditDto();
deliveryEditDto.setDeliveryName(trackOutBoDto.getReceiveRequestName());
deliveryEditDto.setSiteName(trackOutBoDto.getSiteName());
// @TODO 完成状态下更新为 DeliveryStateEnums.FINISH
deliveryEditDto.setDeliveryState(DeliveryStateEnums.DOING.getCode());
deliveryService.editDelivery(deliveryEditDto);
}
} else {
return AjaxResult.me().setSuccess(false).setMessage("到货单:" + trackOutBoDto.getReceiveRequestName() + "不存在").setErrorCode(400);
}
} catch (Exception e) {
e.printStackTrace();
return AjaxResult.me().setSuccess(false).setMessage(e.toString());
}
return AjaxResult.me().setSuccess(true);
}
} }

View File

@ -888,14 +888,14 @@ public class SaleOutController {
MaterialshipRequest materialShipRequest = JSON.toJavaObject(in, MaterialshipRequest.class); MaterialshipRequest materialShipRequest = JSON.toJavaObject(in, MaterialshipRequest.class);
String shipRequestName2 = materialShipRequest.getShipRequestName(); String shipRequestName2 = materialShipRequest.getShipRequestName();
//根据单据类型判断生产订单类型如果是领料单且单据类型是复卷和返工的不卡控批次质量状态 //根据单据类型判断生产订单类型如果是领料单且单据类型是复卷和返工的不卡控批次质量状态
String dTypeSql = "SELECT M.PRODUCTORDERTYPE,M.PRODUCTORDERNO FROM MATERIALSHIPREQUEST M WHERE M.SHIPREQUESTNAME = :SHIPREQUESTNAME"; String dTypeSql = "SELECT M.AUART FROM MATERIALSHIPREQUESTDETAIL M WHERE M.SHIPREQUESTNAME = :SHIPREQUESTNAME";
Map<String, Object> hashMap3 = new HashMap<String,Object> (); Map<String, Object> hashMap3 = new HashMap<String,Object> ();
hashMap3.put("SHIPREQUESTNAME", shipRequestName2); hashMap3.put("SHIPREQUESTNAME", shipRequestName2);
String productOrderType = ""; String productOrderType = "";
List<Map<String, Object>> queryForListW = new ArrayList<>(); List<Map<String, Object>> queryForListW = new ArrayList<>();
List<Map<String, Object>> queryForList3 = IDMFrameServiceProxy.getSqlTemplate().queryForList(dTypeSql, hashMap3); List<Map<String, Object>> queryForList3 = IDMFrameServiceProxy.getSqlTemplate().queryForList(dTypeSql, hashMap3);
if (queryForList3 != null && queryForList3.size() > 0) { if (queryForList3 != null && queryForList3.size() > 0) {
productOrderType = queryForList3.get(0).get("PRODUCTORDERTYPE") == null ? "" :queryForList3.get(0).get("PRODUCTORDERTYPE").toString(); productOrderType = queryForList3.get(0).get("AUART") == null ? "" :queryForList3.get(0).get("AUART").toString();
} }
// 查询工单维护表 是否有对应的生产订单 // 查询工单维护表 是否有对应的生产订单
@ -905,9 +905,8 @@ public class SaleOutController {
queryForListW = IDMFrameServiceProxy.getSqlTemplate().queryForList(workSql, hashMapW); queryForListW = IDMFrameServiceProxy.getSqlTemplate().queryForList(workSql, hashMapW);
String IsCheck = "N"; // 是否可以为不良和过期 String IsCheck = "N"; // 是否可以为不良和过期
if (("55A2-02".equals(productOrderType) || "55A2-Cxx-08".equals(productOrderType) if (("ZP01".equals(productOrderType) || "ZP05".equals(productOrderType)) ||
|| "4455-Cxx-10".equals(productOrderType) || "4455-Cxx-01".equals(productOrderType) (queryForListW != null && !queryForListW.isEmpty())) {//复卷返工工单
|| "5X-Cxx-07".equals(productOrderType)) || (queryForListW != null && !queryForListW.isEmpty())) {//复卷返工工单
IsCheck = "Y"; IsCheck = "Y";
} }
return AjaxResult.me().setResultObj(IsCheck); return AjaxResult.me().setResultObj(IsCheck);

View File

@ -2,13 +2,32 @@ package com.cim.idm.dao;
import com.cim.idm.model.CostCenter; import com.cim.idm.model.CostCenter;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.List; import java.util.List;
import java.util.Map;
@Component @Component
@Mapper @Mapper
public interface CostCenterDao { public interface CostCenterDao {
List<CostCenter> getCostCenter(); List<CostCenter> getCostCenter();
List<Map<String, Object>> getUserInfo();
void updatePacking(@Param("SALESHIPREQUESTNAME") String SALESHIPREQUESTNAME,
@Param("SALESHIPREQUESTDETAILNAME") String SALESHIPREQUESTDETAILNAME,
@Param("POSTSTATUS") String POSTSTATUS,
@Param("MATERIALPACKINGNAME") String MATERIALPACKINGNAME);
void insertPackingChenk(@Param("SALESHIPREQUESTNAME") String SALESHIPREQUESTNAME,
@Param("SALESHIPREQUESTDETAILNAME") String SALESHIPREQUESTDETAILNAME,
@Param("MATERIALPACKINGNAME") String MATERIALPACKINGNAME,
@Param("SITENAME") String SITENAME,
@Param("materialSpecName") String materialSpecName,
@Param("charge") String charge,
@Param("phase") String phase,
@Param("customno") String customno,
@Param("careerAssistance") String careerAssistance,
@Param("POSTSTATUS") String POSTSTATUS);
} }

View File

@ -29,5 +29,9 @@ public class MaterialReceiveRequest {
private String phase; private String phase;
private String CUSTOMNO; private String CUSTOMNO;
private String truegg; private String truegg;
/**销售订单*/
private String SALESHIPREQUESTNAME;
/**销售订单行号*/
private String SALESHIPREQUESTDETAILNAME;
private List<com.cim.idm.wmspackage.materialpacking.management.data.MaterialPacking> boxList; private List<com.cim.idm.wmspackage.materialpacking.management.data.MaterialPacking> boxList;
} }

View File

@ -1,9 +1,14 @@
package com.cim.idm.service; package com.cim.idm.service;
import com.alibaba.fastjson.JSONObject;
import com.cim.idm.model.CostCenter; import com.cim.idm.model.CostCenter;
import java.util.List; import java.util.List;
import java.util.Map;
public interface CostCenterService { public interface CostCenterService {
List<CostCenter> getCostCenter(); List<CostCenter> getCostCenter();
List<Map<String, Object>> getUserInfo();
void updateCareerAssistanceNew(JSONObject in);
} }

View File

@ -1,13 +1,20 @@
package com.cim.idm.service.Impl; 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.dao.CostCenterDao;
import com.cim.idm.model.CostCenter; import com.cim.idm.model.CostCenter;
import com.cim.idm.model.po.MaterialReceiveRequest;
import com.cim.idm.service.CostCenterService; import com.cim.idm.service.CostCenterService;
import com.cim.idm.wmspackage.materialpacking.management.data.MaterialPacking;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List; import java.util.List;
import java.util.Map;
@Service("CostCenterService") @Service("CostCenterService")
@Slf4j @Slf4j
@ -19,4 +26,54 @@ public class CostCenterServiceImpl implements CostCenterService {
public List<CostCenter> getCostCenter() { public List<CostCenter> getCostCenter() {
return costCenterDao.getCostCenter(); return costCenterDao.getCostCenter();
} }
@Override
public List<Map<String, Object>> getUserInfo() {
return costCenterDao.getUserInfo();
}
@Override
@Transactional(rollbackFor = Exception.class)
public void updateCareerAssistanceNew(JSONObject in) {
MaterialReceiveRequest sl = JSON.toJavaObject(in, MaterialReceiveRequest.class);
List<MaterialPacking> boxList = sl.getBoxList();
String SALESHIPREQUESTNAME = sl.getSALESHIPREQUESTNAME();
String SALESHIPREQUESTDETAILNAME = sl.getSALESHIPREQUESTDETAILNAME();
String siteName = sl.getSiteName();
// 借用人
String career_ASSISTANCE = sl.getRemark();
for (MaterialPacking materialPacking : boxList) {
// 条码
String materialPackingName = materialPacking.getMaterialPackingName();
// 原销售订单号
String saleshiprequestname = materialPacking.getSALESHIPREQUESTNAME();
// 物料编号
String materialSpecName = materialPacking.getMaterialSpecName();
// 批次号
String charge = materialPacking.getCharge();
// 阶段
String phase = materialPacking.getPHASE();
// 客户
String customno = materialPacking.getCUSTOMNO();
// 过账状态
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";
}
if (StringUtils.isEmpty(materialPacking.getCAREER_ASSISTANCE()) || materialPacking.getCAREER_ASSISTANCE().equals(career_ASSISTANCE)){
// 更新
costCenterDao.updatePacking(SALESHIPREQUESTNAME, SALESHIPREQUESTDETAILNAME, POSTSTATUS, materialPackingName);
} else {
// 新增
costCenterDao.insertPackingChenk(SALESHIPREQUESTNAME, SALESHIPREQUESTDETAILNAME,
materialPackingName, siteName, materialSpecName, charge,phase,
customno, career_ASSISTANCE,POSTSTATUS);
}
}
}
} }

View File

@ -15,9 +15,11 @@ import com.cim.idm.mwmsextend.materialpacking.service.MaterialPackingServiceUtil
import com.cim.idm.mwmsextend.materialshiprequest.service.MaterialShipRequestServiceImpl; import com.cim.idm.mwmsextend.materialshiprequest.service.MaterialShipRequestServiceImpl;
import com.cim.idm.service.ChargeSplitService; import com.cim.idm.service.ChargeSplitService;
import com.cim.idm.service.InvoiceService; import com.cim.idm.service.InvoiceService;
import com.cim.idm.service.QMSService;
import com.cim.idm.service.impl.MESServiceImpl; import com.cim.idm.service.impl.MESServiceImpl;
import com.cim.idm.service.impl.ToSAPServiceImpl; import com.cim.idm.service.impl.ToSAPServiceImpl;
import com.cim.idm.util.MessageLogUtil; import com.cim.idm.util.MessageLogUtil;
import com.cim.idm.util.NCHttpUtil;
import com.cim.idm.util.ToSAPMessageUtil; import com.cim.idm.util.ToSAPMessageUtil;
import com.cim.idm.utils.AjaxResult; import com.cim.idm.utils.AjaxResult;
import com.cim.idm.utils.CodeGenerator; import com.cim.idm.utils.CodeGenerator;
@ -39,7 +41,9 @@ import com.cim.idm.wmspackage.materialreceivetactdetail.management.data.Material
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.JsonMappingException;
import groovy.lang.Lazy; import groovy.lang.Lazy;
import io.micrometer.core.instrument.util.StringUtils;
import org.apache.commons.collections4.MapUtils; import org.apache.commons.collections4.MapUtils;
import org.quartz.SimpleTrigger;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -58,7 +62,8 @@ public class InvoiceServiceImpl implements InvoiceService {
@Autowired @Autowired
private ToSAPServiceImpl toSAPService; private ToSAPServiceImpl toSAPService;
@Autowired
private QMSService qmsService;
@Autowired @Autowired
@Lazy @Lazy
private ChargeSplitService chargeSplitService; private ChargeSplitService chargeSplitService;
@ -3433,6 +3438,11 @@ public class InvoiceServiceImpl implements InvoiceService {
// billCode=toSAPService.saleStockOut_NEW(shipRequestName, "SDK", eventUser,materialPackingKeyList); // billCode=toSAPService.saleStockOut_NEW(shipRequestName, "SDK", eventUser,materialPackingKeyList);
billCode=saleStockOut_NEW(shipRequestName, "SDK", eventUser,materialPackingKeyList,commitDate); billCode=saleStockOut_NEW(shipRequestName, "SDK", eventUser,materialPackingKeyList,commitDate);
untils.SaveUnDoInfo_ForSap(materialPackingKeyList, billCode, makeEventInfo); untils.SaveUnDoInfo_ForSap(materialPackingKeyList, billCode, makeEventInfo);
//单据类型等于ZLF0-ZLF9物料编码以7开头都属于成品胶水需要调用QMS质检接口
String message = checkShipRequestTypeSendIQC(commitDate, siteName ,shipRequestName, makeEventInfo, materialPackingKeyList);
if (StringUtils.isNotEmpty(message)) {
throw new CustomException(message);
}
break; break;
case "08": // 委外 case "08": // 委外
case "OEM": // 委外 case "OEM": // 委外
@ -3568,4 +3578,99 @@ public class InvoiceServiceImpl implements InvoiceService {
String sendData = MainData.toJSONString(); String sendData = MainData.toJSONString();
return sendData; return sendData;
} }
public String checkShipRequestTypeSendIQC(String shippingDate,String siteName, String shipRequestName, EventInfo eventInfo, List<String> materialPackingNameList) throws Exception {
String message = "";
JSONArray jsonArray = new JSONArray();
Map<String, JSONObject> jsonObjectMap = new HashMap<>();
String sql=" SELECT \n" +
"MP.SITENAME,\n" +
"MP.SHIPREQUESTNAME,\n" +
"MP.MATERIALSPECNAME,\n" +
"MP.MATERIALPACKINGNAME,\n" +
"MP.REMARK,\n" +
"MP.CHARGE,\n" +
"MP.SDKTRUEID,\n" +
"MS.DESC_CN\n" +
"FROM\n" +
"MATERIALPACKING MP \n" +
"LEFT JOIN MATERIALSPEC MS ON MP.SITENAME = MS.SITENAME AND MP.MATERIALSPECNAME = MS.MATERIALSPECNAME\n" +
"WHERE\n" +
"MP.SITENAME =:SITENAME\n" +
"AND MP.SHIPREQUESTNAME =:SHIPREQUESTNAME\n" +
"AND MP.MATERIALPACKINGNAME IN (:BOXLIST)\n" +
"AND MP.MATERIALSPECNAME LIKE '7%' ";
Map<String, Object> hashMap = new HashMap<String, Object>();
hashMap.put("SHIPREQUESTNAME", shipRequestName);
hashMap.put("SITENAME", siteName);
hashMap.put("BOXLIST", materialPackingNameList);
List<Map<String, Object>> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql.toString(), hashMap);
if (!queryForList.isEmpty()){
for (int i = 0; i < queryForList.size(); i++) {
String source = "wms";
String deliveryNumber = queryForList.get(i).get("SHIPREQUESTNAME") == null ? "" : queryForList.get(i).get("SHIPREQUESTNAME").toString();
String materialCode = queryForList.get(i).get("MATERIALSPECNAME") == null ? "" : queryForList.get(i).get("MATERIALSPECNAME").toString();
String materialName = queryForList.get(i).get("DESC_CN") == null ? "" : queryForList.get(i).get("DESC_CN").toString();
String specification = queryForList.get(i).get("SDKTRUEID") == null ? "" : queryForList.get(i).get("SDKTRUEID").toString();
String materialPackingName = queryForList.get(i).get("MATERIALPACKINGNAME") == null ? "" : queryForList.get(i).get("MATERIALPACKINGNAME").toString();
if (jsonObjectMap.containsKey(materialName)){
JSONObject jsonObject = jsonObjectMap.get(materialName);
String shipmentBatch = jsonObject.getString("shipmentBatch");
jsonObject.put("shipmentBatch",shipmentBatch + "," + materialPackingName);
}else {
JSONObject jsonObject = new JSONObject(true);
//必传字段
jsonObject.put("source", source);
//出货日期,取页面上的过账日期
jsonObject.put("shippingDate", shippingDate);
// 发货单号
jsonObject.put("deliveryNumber", deliveryNumber);
// 料号
jsonObject.put("materialCode", materialCode);
// 发货品名
jsonObject.put("materialName", materialName);
// 规格
jsonObject.put("specification", specification);
//发货批次号
jsonObject.put("shipmentBatch", materialPackingName);
jsonObjectMap.put(materialName, jsonObject);
//非必传字段
/**
* String inspectionNumber = queryForList.get(i).get("SHIPREQUESTNAME") == null ? "" : queryForList.get(i).get("SHIPREQUESTNAME").toString();
* String quantity = queryForList.get(i).get("MATERIALQUANTITY") == null ? "" : queryForList.get(i).get("MATERIALQUANTITY").toString();
* String inspectBatch = queryForList.get(i).get("CHARGE") == null ? "" : queryForList.get(i).get("CHARGE").toString();
* String samplingQuantity = queryForList.get(i).get("") == null ? "" : queryForList.get(i).get("").toString();
* String samplingSpecification = queryForList.get(i).get("") == null ? "" : queryForList.get(i).get("").toString();
* String remark = queryForList.get(i).get("REMARK") == null ? "" : queryForList.get(i).get("REMARK").toString();
* String materialGroup = queryForList.get(i).get("MATERIALPROCESSGROUPNAME") == null ? "" : queryForList.get(i).get("MATERIALPROCESSGROUPNAME").toString();
// 发货数量
jsonObject.put("quantity", quantity);
// 客户名称
jsonObject.put("customName", customName);
// 客户代码
jsonObject.put("customCode", customCode);
// 检验单号
jsonObject.put("inspectionNumber", inspectionNumber);
//检验批号
jsonObject.put("inspectBatch", inspectBatch);
// 抽检数量
jsonObject.put("samplingQuantity", samplingQuantity);
// 抽检规格
jsonObject.put("samplingSpecification", samplingSpecification);
// 备注
jsonObject.put("remark", remark);
// 物料组
jsonObject.put("materialGroup", materialGroup);
*/
}
}
jsonArray.addAll(jsonObjectMap.values());
String jsonArrayJSONString = jsonArray.toJSONString();
message = qmsService.sendQMSByUrlJson(jsonArrayJSONString, "/opc/addShipmentInspection",eventInfo);
}
return message;
}
} }

View File

@ -6,4 +6,26 @@
select id, cost_code costCode, cost_name costName, erp_factory erpFactory, department, division select id, cost_code costCode, cost_name costName, erp_factory erpFactory, department, division
from cost_center from cost_center
</select> </select>
<select id="getUserInfo" resultType="java.util.Map">
SELECT USERID, USERNAME FROM USERINFO
</select>
<update id="updatePacking">
UPDATE MATERIALPACKING SET
SALESHIPREQUESTNAME = #{SALESHIPREQUESTNAME, jdbcType=VARCHAR},
SALESHIPREQUESTDETAILNAME = #{SALESHIPREQUESTDETAILNAME, jdbcType=VARCHAR},
POSTSTATUS = #{POSTSTATUS, jdbcType=VARCHAR}
WHERE MATERIALPACKINGNAME = #{MATERIALPACKINGNAME, jdbcType=VARCHAR}
</update>
<insert id="insertPackingChenk">
insert into MATERIALPACKINGCHECK(MATERIALPACKINGNAME,SALESHIPREQUESTNAME,
SALESHIPREQUESTDETAILNAME,SITENAME,IS_CHECK, MATERIALSPECNAME,
CHARGE,PHASE,CUSTOMNO,CAREER_ASSISTANCE,POSTSTATUS)
values(#{MATERIALPACKINGNAME, jdbcType=VARCHAR}, #{SALESHIPREQUESTNAME, jdbcType=VARCHAR},
#{SALESHIPREQUESTDETAILNAME, jdbcType=VARCHAR}, #{SITENAME, jdbcType=VARCHAR}, 'N',
#{materialSpecName, jdbcType=VARCHAR}, #{charge, jdbcType=VARCHAR}, #{phase, jdbcType=VARCHAR},
#{customno, jdbcType=VARCHAR},#{careerAssistance, jdbcType=VARCHAR}, #{POSTSTATUS, jdbcType=VARCHAR})
</insert>
</mapper> </mapper>

View File

@ -285,7 +285,7 @@
</select> </select>
<select id="getRelByDelivery" resultType="com.cim.idm.model.po.delivery.MaterialDeliveryReceive"> <select id="getRelByDelivery" resultType="com.cim.idm.model.po.delivery.MaterialDeliveryReceive">
SELECT md.DELIVERYNAME, md.DELIVERYNUM, md.RECEIVEREQUESTNAME, md.MATERIALSPECNAME md.RECEIVEREQUESTDETAILNAME SELECT md.DELIVERYNAME, md.DELIVERYNUM, md.RECEIVEREQUESTNAME, md.MATERIALSPECNAME, md.RECEIVEREQUESTDETAILNAME
FROM MATERIALDELIVERYRECEIVE md FROM MATERIALDELIVERYRECEIVE md
WHERE md.DELIVERYNAME = #{dto.documentName} WHERE md.DELIVERYNAME = #{dto.documentName}
</select> </select>