add QMS计量器具接口

This commit is contained in:
18110972313 2025-05-30 16:49:20 +08:00
parent ee1708c0df
commit 572c02e9a3
9 changed files with 566 additions and 10 deletions

View File

@ -4,6 +4,8 @@ package com.cim.idm.service;
import com.cim.idm.framework.data.EventInfo; import com.cim.idm.framework.data.EventInfo;
import com.cim.idm.wmsextend.generic.errorHandler.CustomException; import com.cim.idm.wmsextend.generic.errorHandler.CustomException;
import java.util.List;
/** /**
* QMS接口类 * QMS接口类
* @author ZXYGY17 * @author ZXYGY17
@ -28,4 +30,11 @@ public interface QMSService {
*/ */
String sendQMSByUrlJson (String sendQMSUrl,String sendQMSJson, EventInfo eventInfo) throws CustomException; String sendQMSByUrlJson (String sendQMSUrl,String sendQMSJson, EventInfo eventInfo) throws CustomException;
/**
* 发送计量器具台账到QMS
* @param materialPackingKeyList BOXID
* @return
* @throws Exception
*/
String sendToQMSByMeteringStockOutBoxIdList(List<String> materialPackingKeyList);
} }

View File

@ -12,13 +12,14 @@ import com.cim.idm.util.NCHttpUtil;
import com.cim.idm.util.QMSHttpUtil; import com.cim.idm.util.QMSHttpUtil;
import com.cim.idm.wmsextend.generic.errorHandler.CustomException; import com.cim.idm.wmsextend.generic.errorHandler.CustomException;
import com.cim.idm.wmsextend.generic.util.ConvertUtil; import com.cim.idm.wmsextend.generic.util.ConvertUtil;
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 org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.HashMap; import java.util.*;
import java.util.List; import java.util.stream.Collectors;
import java.util.Map;
import java.util.UUID;
/** /**
* QMS接口实现类 * QMS接口实现类
@ -664,4 +665,103 @@ public class QMSServiceImpl implements QMSService{
return msg; return msg;
} }
public String sendToQMSByMeteringStockOutBoxIdList(List<String> materialPackingKeyList) {
JSONArray jsonArray = new JSONArray();
String code = "";
String queryEnumdefValueSql = " SELECT ENUMVALUE FROM ENUMDEFVALUE WHERE ENUMNAME =:ENUMNAME AND DEFAULTFLAG = 'Y' ";
Map<String, Object> enumdefValueMap = new HashMap<String,Object> ();
enumdefValueMap.put("ENUMNAME", "QMSMeteringStockOutSpec");
List<Map<String,Object>> enumdefValueList = IDMFrameServiceProxy.getSqlTemplate().queryForList(queryEnumdefValueSql, enumdefValueMap);
if (null != enumdefValueList && !enumdefValueList.isEmpty()) {
Set<String> enumValueSet = enumdefValueList.stream()
.map(map -> (String) map.get("ENUMVALUE"))
.filter(Objects::nonNull)
.collect(Collectors.toSet());
for (String materialPackingName : materialPackingKeyList) {
String queryMaterialSpecSql = " SELECT\n" +
"\tMP.MATERIALPACKINGNAME," +
"\tMP.MATERIALSPECNAME,\n" +
"\tMS.DESCRIPTION\n" +
"FROM\n" +
"\tMATERIALPACKING MP\n" +
"LEFT JOIN MATERIALSPEC MS ON MP.MATERIALSPECNAME = MS.MATERIALSPECNAME\n" +
"WHERE\n" +
"\tMP.SITENAME =:SITENAME\n" +
"\tAND MP.MATERIALPACKINGNAME =:MATERIALPACKINGNAME ";
Map<String, Object> materialSpecMap = new HashMap<String,Object> ();
materialSpecMap.put("SITENAME", "SDK");
materialSpecMap.put("MATERIALPACKINGNAME", materialPackingName);
List<Map<String, Object>> materialSpecList = IDMFrameServiceProxy.getSqlTemplate().queryForList(queryMaterialSpecSql, materialSpecMap);
if (null != materialSpecList && !materialSpecList.isEmpty()){
for (int i = 0; i < materialSpecList.size(); i++) {
String materialSpecName = materialSpecList.get(i).get("MATERIALSPECNAME").toString();
String description = materialSpecList.get(i).get("DESCRIPTION") == null ? "" : materialSpecList.get(i).get("DESCRIPTION").toString();
if (enumValueSet.stream().anyMatch(materialSpecNamePrefix -> materialSpecName.startsWith(materialSpecNamePrefix))){
JSONObject jsonObject = new JSONObject(true);
/**--------------------------必填字段----------------------------------*/
//仪器编号
jsonObject.put("instrumentNumber", materialSpecName);
//仪器名称
jsonObject.put("instrumentName", description);
/**--------------------------非必填字段----------------------------------*/
//仪器厂商
jsonObject.put("instrumentManufacturer", "");
//仪器型号
jsonObject.put("classification", "");
//出厂编号
jsonObject.put("factoryNumber", "");
//量程
jsonObject.put("measurementProcess", "");
//分辨率
jsonObject.put("resolvingPower", "");
//环境条件
jsonObject.put("environmentCondition", "");
//仪器尺寸(mm)**
jsonObject.put("instrumentSize", "");
//电源电压功率
jsonObject.put("powerSupplyVoltageAndPower", "");
//插座类型
jsonObject.put("typeOfSocket", "");
//其他辅助措施
jsonObject.put("otherAuxiliaryMeasures", "");
//入厂日期
jsonObject.put("entryDate", "");
//存放地点
jsonObject.put("storageLocation", "");
//责任单位
jsonObject.put("responsibleUnit", "");
jsonArray.add(jsonObject);
}
}
}
}
String makePreIQCInfoSendJson = jsonArray.toString();
String httpPost = NCHttpUtil.httpPost(baseUrl + "/wmsPush/ledgerData", makePreIQCInfoSendJson);
org.json.JSONObject jsonObject = new org.json.JSONObject(httpPost);
code = jsonObject.getString("code");
if (!"00000".equals(code)) {
}
String finalCode = code;
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("/wmsPush/ledgerData");
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(finalCode);
MessageLogUtil.writeMessageLog(erplog);
}});
t.start();
}
return code;
}
} }

View File

@ -2716,7 +2716,7 @@ public class ToSAPServiceImpl {
} }
//MES上报工单消耗数据-261工单投料 //MES上报工单消耗数据-261工单投料
public String mesMaterialConsume( String user, String payMentDate, EventInfo eventInfo, String aufnr) throws Exception { public String mesMaterialConsume( String user, String payMentDate, EventInfo eventInfo, String aufnr, Map<String,String> materialPackingNameMap) throws Exception {
String rcode; String rcode;
String undoId = ""; String undoId = "";
@ -2825,6 +2825,8 @@ public class ToSAPServiceImpl {
SetEventInfo setEventInfo = new SetEventInfo(); SetEventInfo setEventInfo = new SetEventInfo();
Map<String, Object> updateMap = new HashMap<>(); Map<String, Object> updateMap = new HashMap<>();
updateMap.put("unDoID", undoId); updateMap.put("unDoID", undoId);
String subPackingQuantity = materialPackingNameMap.get("SUBPACKINGQUANTITY");
updateMap.put("subPackingQuantity", subPackingQuantity);
setEventInfo.setUserColumns(updateMap); setEventInfo.setUserColumns(updateMap);
MaterialPackingServiceProxy.getMaterialPackingService().setEvent(materialPackingKey, eventInfo, setEventInfo); MaterialPackingServiceProxy.getMaterialPackingService().setEvent(materialPackingKey, eventInfo, setEventInfo);
//插入凭证信息 //插入凭证信息

View File

@ -180,7 +180,9 @@ public class DeliveryController {
} else { } else {
// 辅材 // 辅材
return AjaxResult.me().setSuccess(true).setResultObj( return AjaxResult.me().setSuccess(true).setResultObj(
deliveryService.getMaterialDetail(storeDetailDto.getDocumentName(), storeDetailDto.getSiteName(), nameList, deliveryName)); //deliveryService.getMaterialDetail(storeDetailDto.getDocumentName(), storeDetailDto.getSiteName(), nameList, deliveryName));
deliveryService.getDeliveryStoreDetail(storeDetailDto.getDocumentName(), storeDetailDto.getSiteName(), nameList, deliveryName));
} }
} }

View File

@ -41,6 +41,7 @@ import com.cim.idm.wmspackage.receiverequestdetail.ReceiveRequestDetailServicePr
import com.cim.idm.wmspackage.receiverequestdetail.management.data.MaterialReceiveRequestDetailKey; import com.cim.idm.wmspackage.receiverequestdetail.management.data.MaterialReceiveRequestDetailKey;
import com.cim.idm.wmspackage.receiverequestdetail.management.info.MakeDetailIncreaseReceivedInfo; import com.cim.idm.wmspackage.receiverequestdetail.management.info.MakeDetailIncreaseReceivedInfo;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -73,6 +74,8 @@ public class NoChargeStockIn {
@Autowired @Autowired
private ToSAPServiceImpl toSAPServiceImpl; private ToSAPServiceImpl toSAPServiceImpl;
@Transactional @Transactional
@RequestMapping(value = "/NoChargeStockIn", method = RequestMethod.POST) @RequestMapping(value = "/NoChargeStockIn", method = RequestMethod.POST)
public AjaxResult NoChargeStockIn(@RequestBody JSONObject in ) throws Exception { public AjaxResult NoChargeStockIn(@RequestBody JSONObject in ) throws Exception {
@ -1044,4 +1047,25 @@ public class NoChargeStockIn {
} }
return lastEventTimeKey; return lastEventTimeKey;
} }
/**
* 辅材到货入库过账
* @param in
* @return
* @throws Exception
*/
@Transactional
@RequestMapping(value = "/deliveryNoChargeStockIn", method = RequestMethod.POST)
public AjaxResult DeliveryNoChargeStockIn(@RequestBody JSONObject in ) throws Exception {
String userName = (String) in.get("USER");
String commitDateStr = in.get("commitDate").toString();
String deliveryName = in.get("RECEIVEREQUESTNAME") == null ? "" : in.get("RECEIVEREQUESTNAME").toString();
LinkedHashMap<String,String> boxMap = ( LinkedHashMap<String,String>) in.get("BOXLIST");
EventInfo eventInfo = new EventInfoUtil().makeEventInfo("NoChargeStockIn", userName, "NoChargeStockIn", "", "");
if (StringUtils.isNotEmpty(deliveryName)){
return AjaxResult.me().setSuccess(false).setErrorCode(400).setMessage("入库失败,未输入到货单号");
}
deliveryService.auxiliaryDeliveryStockIn("SDK", eventInfo, commitDateStr, deliveryName, boxMap);
return AjaxResult.me().setSuccess(true).setErrorCode(200).setMessage("入库成功");
}
} }

View File

@ -1,5 +1,6 @@
package com.cim.idm.service; package com.cim.idm.service;
import com.cim.idm.framework.data.EventInfo;
import com.cim.idm.model.dto.delivery.DeliveryDelDto; import com.cim.idm.model.dto.delivery.DeliveryDelDto;
import com.cim.idm.model.dto.delivery.DeliveryDto; import com.cim.idm.model.dto.delivery.DeliveryDto;
import com.cim.idm.model.dto.delivery.DeliveryEditDto; import com.cim.idm.model.dto.delivery.DeliveryEditDto;
@ -13,6 +14,7 @@ import com.cim.idm.model.vo.MaterialReceiveRequestVo;
import com.cim.idm.model.vo.ReceiveDetailVo; import com.cim.idm.model.vo.ReceiveDetailVo;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -132,4 +134,15 @@ public interface IDeliveryService {
*/ */
ReceiveDetailVo getDeliveryStoreDetail(String documentName, String siteName, List<String> nameList, String deliveryName); ReceiveDetailVo getDeliveryStoreDetail(String documentName, String siteName, List<String> nameList, String deliveryName);
/**
* 辅材到货入库
* @param siteName 现地
* @param eventInfo 事件信息
* @param commitDate 过账时间
* @param delivery 到货单号
* @param materialPackingInfoMap 入库的box信息集合
* @throws Exception 异常信息
*/
void auxiliaryDeliveryStockIn(String siteName, EventInfo eventInfo, String commitDate, String delivery, LinkedHashMap<String,String> materialPackingInfoMap) throws Exception;
} }

View File

@ -7,6 +7,9 @@ import com.cim.idm.constants.receive.IsBatchEnums;
import com.cim.idm.constants.receive.ReceiveTypeEnums; import com.cim.idm.constants.receive.ReceiveTypeEnums;
import com.cim.idm.dao.DeliveryDao; import com.cim.idm.dao.DeliveryDao;
import com.cim.idm.exception.GlobalException; import com.cim.idm.exception.GlobalException;
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.model.dto.PageDto; import com.cim.idm.model.dto.PageDto;
import com.cim.idm.model.dto.PurchaseDto; import com.cim.idm.model.dto.PurchaseDto;
import com.cim.idm.model.dto.delivery.*; import com.cim.idm.model.dto.delivery.*;
@ -16,13 +19,25 @@ import com.cim.idm.model.po.MaterialReceiveRequest;
import com.cim.idm.model.vo.DeliveryReceiveDetailVo; import com.cim.idm.model.vo.DeliveryReceiveDetailVo;
import com.cim.idm.model.vo.MaterialReceiveRequestVo; import com.cim.idm.model.vo.MaterialReceiveRequestVo;
import com.cim.idm.model.vo.ReceiveDetailVo; import com.cim.idm.model.vo.ReceiveDetailVo;
import com.cim.idm.mwmsextend.materialpacking.service.MaterialPackingServiceImpl;
import com.cim.idm.service.IDeliveryService; import com.cim.idm.service.IDeliveryService;
import com.cim.idm.utils.AjaxResult;
import com.cim.idm.utils.EventInfoUtil;
import com.cim.idm.wmsextend.generic.GenericServiceProxy;
import com.cim.idm.wmsextend.generic.errorHandler.CustomException;
import com.cim.idm.wmspackage.material.MaterialServiceProxy;
import com.cim.idm.wmspackage.material.management.data.MaterialSpec;
import com.cim.idm.wmspackage.material.management.data.MaterialSpecKey;
import com.cim.idm.wmspackage.materialpacking.management.info.CreateInfo;
import com.cim.idm.wmspackage.name.NameServiceProxy;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.github.pagehelper.page.PageMethod; import com.github.pagehelper.page.PageMethod;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
@Service @Service
@ -168,4 +183,198 @@ public class DeliveryServiceImpl implements IDeliveryService {
receiveDetailVo.setStoreCharge(storeCharge); receiveDetailVo.setStoreCharge(storeCharge);
return receiveDetailVo; return receiveDetailVo;
} }
@Override
public void auxiliaryDeliveryStockIn(String siteName, EventInfo eventInfo, String commitDate, String deliveryName, LinkedHashMap<String, String> materialPackingInfoMap) throws Exception {
Iterator its = materialPackingInfoMap.entrySet().iterator();
//创建抬头文本
String receiveAct = GenerateReceiveAct(siteName, "NoPO");
String specName = "";
SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
List<CreateInfo> listMaterialPacking = new ArrayList<CreateInfo>();
//创建批次
while (its.hasNext()) {
Map.Entry entry = (Map.Entry) its.next();
Map boxInfo = (Map) entry.getValue();
String erpFactory = (String) boxInfo.get("ERPFACTORY");
String erpLocation = (String) boxInfo.get("ERPLOCATION");
String LOCATIONNAME = (boxInfo.get("LOCATIONNAME") == null || "null".equals(boxInfo.get("LOCATIONNAME").toString())) ? "" : boxInfo.get("LOCATIONNAME").toString();
String materialSpecName = (String) boxInfo.get("MATERIALSPECNAME");
String MATERIALUNITDESC = (String) boxInfo.get("MATERIALUNITDESC");
String materialUnit = (String) boxInfo.get("MATERIALUNIT");
String REQUESTQUANTITY = (String) boxInfo.get("REQUESTQUANTITY").toString();
String RECEIVEDQUANTITY = (String) boxInfo.get("RECEIVEDQUANTITY").toString();
String ThisAcceptNumber = boxInfo.get("THISACCEPTNUMBER").toString();
String supplierName = boxInfo.get("SUPPLIERNO").toString();
String locationName = boxInfo.get("LOCATIONNAME").toString();
String expirationDay = "";
if ("0".equals(ThisAcceptNumber)) {
continue;
}
String makeDate = boxInfo.get("MakeDate") == null ? TimeStampUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss") : boxInfo.get("MakeDate").toString();
String sdkid = (String) boxInfo.get("SDK_ID");
//5查询物料是否启用批次
String queryIsBatchSql = "SELECT CASE WHEN m.IS_BATCH = 'Y' THEN '是' WHEN m.IS_BATCH = '是' THEN '是' ELSE '否' END AS REPLACED_VALUE ,DECODE(m.IQCFLAG,'Y','是','否') IQCFLAG, PHASE, FROM MATERIALSPEC m WHERE m.MATERIALSPECNAME =:MATERIALSPECNAME";
Map<String, Object> isBatchParmsMap = new HashMap<String, Object>();
isBatchParmsMap.put("MATERIALSPECNAME", materialSpecName);
List<Map<String, Object>> isBatchList = IDMFrameServiceProxy.getSqlTemplate().queryForList(queryIsBatchSql, isBatchParmsMap);
MaterialSpecKey materialSpecKey = new MaterialSpecKey();
materialSpecKey.setMaterialSpecName(materialSpecName);
materialSpecKey.setSiteName(siteName);
MaterialSpec materialSpec = MaterialServiceProxy.getMaterialSpecService().selectByKey(materialSpecKey);
if (null == isBatchList || isBatchList.isEmpty() || null == materialSpec || null == materialSpec.getKey()){
AjaxResult.me().setMessage("物料编码:" + materialSpecName + "主数据信息不存在").setErrorCode(400);
} else {
String isBatch = isBatchList.get(0).get("REPLACED_VALUE").toString();
String iqcFlag = isBatchList.get(0).get("IQCFLAG").toString();
String phase = isBatchList.get(0).get("PHASE").toString();
String materialType = materialSpec.getMaterialType();
// 获取单据详情
List<DeliveryReceiveDetailVo> receiveByMaterialSpec = getReceiveByMaterialSpec(deliveryName, materialSpecName, true);
if (!receiveByMaterialSpec.isEmpty()) {
for (DeliveryReceiveDetailVo vo : receiveByMaterialSpec) {
//创建抬头文本DETAIL
//更新MATERIALRECEIVEREQUESTDETAIL数量
//CreateMaterialReceiveRequestAct(eventInfo, "SDK", vo.getReceiveRequestName(), vo.getReceiveRequestDetailName(), MAKEDATE, receiveAct, "NoPO", ThisAcceptNumber, MATERIALSPECNAME);
//6创建标签
try {
List<String> boxId = MaterialPackingServiceImpl.generateBoxID("LabelId", siteName,"1", makeDate,"WL",erpFactory);
for (int i = 0; i < boxId.size(); i++) {
//插入MATERIALPACKING
CreateInfo materialPacking = new CreateInfo();
String newBoxId = materialSpecName + "|1|" + phase + "|" + specName + "|" + boxId.get(i) + "|" + makeDate.replace("-", "").substring(0, 8) + "|" + materialUnit + "|" + ThisAcceptNumber;
materialPacking.setMaterialPackingName(newBoxId);
materialPacking.setSiteName(siteName);
materialPacking.setContentMaterialType("");
materialPacking.setMaterialPackingType("Box");
Map<String, Object> bindMap = new HashMap<String, Object>();
bindMap.put("materialQuantity", ThisAcceptNumber);
bindMap.put("materialCreateQuantity", ThisAcceptNumber);
bindMap.put("packingState", "Created");// 标记Box是刚创建的
bindMap.put("materialType", materialType);
bindMap.put("materialSpecName", materialSpecName);
bindMap.put("stockState", "Created");
bindMap.put("holdState", "N");
bindMap.put("areaName", "");
bindMap.put("createUser", eventInfo.getEventUser());
bindMap.put("createTime", eventInfo.getEventTime());
bindMap.put("ReceiveTime", eventInfo.getEventTime());
bindMap.put("ReceiveUser", eventInfo.getEventUser());
bindMap.put("receiveRequestName", deliveryName);
bindMap.put("receiveRequestDetailName","");
bindMap.put("SDK_ID", sdkid);
if(expirationDay==null||expirationDay.equals(""))
{
if(materialSpec.getExpirationDay()>0)
{
Date endTime = sDateFormat.parse(makeDate);
Calendar rightNow = Calendar.getInstance();
rightNow.setTime(endTime);
if(siteName.equals("TM1"))
{
rightNow.add(Calendar.MONTH, materialSpec.getExpirationDay());
rightNow.set(Calendar.DAY_OF_MONTH,rightNow.get(Calendar.DAY_OF_MONTH)-1);
}
else{
rightNow.add(Calendar.MONTH, materialSpec.getExpirationDay());
}
Date dt1 = rightNow.getTime();
expirationDay = sDateFormat.format(dt1);
}
else
{
Date endTime=sDateFormat.parse(makeDate);
Calendar rightNow = Calendar.getInstance();
rightNow.setTime(endTime);
rightNow.add(Calendar.MONTH, 48);
Date dt1 = rightNow.getTime();
expirationDay = "2099-12-31 00:00:00";
//endTime.add(Calendar.MONTH, materialSpec.getExpirationDay());
//endTime = (endTime).(materialSpec.getExpirationDay());
}
//endTime.add(Calendar.MONTH, materialSpec.getExpirationDay());
//endTime = (endTime).(materialSpec.getExpirationDay());
}
//this.txtEndTime.Text = dt.ToString("yyyy年MM月dd日", System.Globalization.DateTimeFormatInfo.InvariantInfo);
bindMap.put("makeDate", makeDate);
bindMap.put("expiringDate", expirationDay.substring(0,expirationDay.indexOf(" "))+" 00:00:00");
bindMap.put("receiveActNo", receiveAct);
bindMap.put("reasonCodeType", "");
bindMap.put("reasonCode", "");
bindMap.put("erpLocation", erpLocation);
bindMap.put("erpFactory", erpFactory);
bindMap.put("stockInType", "");
bindMap.put("unit", materialUnit);
if ("".equals(isBatch)) {
bindMap.put("charge", boxId.get(i));
}
if ("".equals(iqcFlag)) {
bindMap.put("oqaResultState", GenericServiceProxy.getConstantMap().OQA_State_End);
bindMap.put("oqaResult","OK");
bindMap.put("packingGrade", "OK");
} else {
bindMap.put("oqaResultState",GenericServiceProxy.getConstantMap().OQA_State_Pre);
}
bindMap.put("phase", phase);
//bindMap.put("supplierCharge", supplierCharge);
bindMap.put("supplierName", supplierName);
bindMap.put("npFlag", "");
bindMap.put("locationName", locationName);
materialPacking.setUserColumns(bindMap);
listMaterialPacking.add(materialPacking);
//插入MATERIALPACKINGSUB
String insertSql = "INSERT INTO MATERIALPACKINGSUB T (T.MATERIALPACKINGNAME,T.RECEIVEREQUESTNAME,T.RECEIVEREQUESTDETAILNAME,T.QTY) "
+ "VALUES (:MATERIALPACKINGNAME, :RECEIVEREQUESTNAME,:RECEIVEREQUESTDETAILNAME,:QTY)";
Map<String, Object> hashMap2 = new HashMap<String,Object> ();
hashMap2.put("MATERIALPACKINGNAME", newBoxId);
hashMap2.put("RECEIVEREQUESTNAME", deliveryName);
hashMap2.put("RECEIVEREQUESTDETAILNAME", "");
hashMap2.put("QTY", ThisAcceptNumber);
IDMFrameServiceProxy.getSqlTemplate().update(insertSql, hashMap2);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
//SAP过账
//更新物料凭证
//插入BS_MATERIALPACKINGUNDOINFO
//UPDATE数量 MATERIALPACKING
//UPDATE 状态 RECEIVEREQUESTNAME
}
}
}
public static String GenerateReceiveAct( String siteName, String actType) throws CustomException {
// 获取系统当前时间
Calendar c = Calendar.getInstance();
SimpleDateFormat f = new SimpleDateFormat("yyyyMMdd");
List<String> args = new ArrayList<String>();
String actType1 = "";
if (actType.equals("Normal") || actType.equals("Manual") || actType.equals("NoPO")) {
actType1 = "R";
} else if (actType.equals("Refund") || actType.equals("WO") || actType.equals("POOEM")
|| actType.equals("ManualT")||actType.equals("MES")||actType.equals("MESRefund")) {
actType1 = "T";
}
args.add(siteName);
args.add(actType1);
args.add(f.format(c.getTime()));
String ReceiveRequestActNo;
try {
ReceiveRequestActNo = NameServiceProxy.getNameRuleDefService().generateName("ReceiveActNo", args, 1).get(0);
} catch (Throwable e) {
args = new ArrayList<String>();
args.add(siteName);
args.add(actType);
args.add(f.format(c.getTime()));
ReceiveRequestActNo = NameServiceProxy.getNameRuleDefService().generateName("ReceiveActNo", args, 1).get(0);
return ReceiveRequestActNo;
}
return ReceiveRequestActNo;
}
} }

View File

@ -31,6 +31,8 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.BigInteger;
import java.math.RoundingMode;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.util.*; import java.util.*;
@ -75,6 +77,8 @@ public class MESToWMSServiceImpl implements MESToWMSService {
List<String> boxIdList = new ArrayList<>(); List<String> boxIdList = new ArrayList<>();
List<String> qtyList = new ArrayList<>(); List<String> qtyList = new ArrayList<>();
List<MaterialPackingKey> mpList = new ArrayList<>(); List<MaterialPackingKey> mpList = new ArrayList<>();
//key=BOXID value=消耗数量
Map<String, String> materialPackingNameMap = new HashMap<String, String>();
int success = 0; int success = 0;
String errorCode = ""; String errorCode = "";
//根据woqtymaterialSpecName生成物料消耗 //根据woqtymaterialSpecName生成物料消耗
@ -92,7 +96,8 @@ public class MESToWMSServiceImpl implements MESToWMSService {
String wo = jb.get("requestName") == null ? "" : jb.get("requestName").toString(); // 工单 String wo = jb.get("requestName") == null ? "" : jb.get("requestName").toString(); // 工单
String flag = jb.get("flag") == null ? "" : jb.get("flag").toString(); String flag = jb.get("flag") == null ? "" : jb.get("flag").toString();
String charge = jb.get("charge") == null ? "" : jb.get("charge").toString(); String charge = jb.get("charge") == null ? "" : jb.get("charge").toString();
String erpLocation = jb.get("erpLocation") == null ? "" : jb.get("erpLocation").toString();//工厂 String erpFactory = jb.get("erpFactory") == null ? "" : jb.get("erpFactory").toString();//仓库
String erpLocation = jb.get("erpLocation") == null ? "" : jb.get("erpLocation").toString();//库位
payMentDate = jb.get("payMentDate") == null ? "" : jb.get("payMentDate").toString(); payMentDate = jb.get("payMentDate") == null ? "" : jb.get("payMentDate").toString();
//判空 //判空
if (StringUtils.isBlank(materialSpecName) || StringUtils.isBlank(qty)) { if (StringUtils.isBlank(materialSpecName) || StringUtils.isBlank(qty)) {
@ -133,10 +138,193 @@ public class MESToWMSServiceImpl implements MESToWMSService {
put("V_RETURN_CODE", ""); put("V_RETURN_CODE", "");
put("V_RETURN_MESSAGE", ""); put("V_RETURN_MESSAGE", "");
put("V_CHARGE", charge); put("V_CHARGE", charge);
put("V_ERPFACTORY", erpFactory);
put("V_ERPLOCATION", erpLocation); put("V_ERPLOCATION", erpLocation);
} }
}; };
Map<String, Object> stringObjectMap = IDMFrameServiceProxy.getSqlTemplate().executeProcedure(procedureName, bindMap); //Map<String, Object> stringObjectMap = IDMFrameServiceProxy.getSqlTemplate().executeProcedure(procedureName, bindMap);
//判断V_CHARGE是否为空
if (StringUtils.isNotEmpty(charge)){
//不等于空根据CHARGE+V_MATERIALSPECNAME消耗库存数量
String queryMaterialPackingByChargeSql = " SELECT \n" +
"\t\t\tT.MATERIALPACKINGNAME, \n" +
" T.MATERIALSPECNAME, \n" +
" T.MATERIALQUANTITY, \n" +
"\t\t\tT.UNIT MATERIALUNIT, \n" +
" T.ERPFACTORY, \n" +
" T.ERPLOCATION ,\n" +
" T.SHIPREQUESTNAME\n" +
" FROM \n" +
"\t\t\tMATERIALPACKING T\n" +
" WHERE \n" +
"\t\t\tT.MATERIALSPECNAME =:V_MATERIALSPECNAME \n" +
"\t\t\tAND T.CHARGE =:V_CHARGE\n" +
"\t\t\tAND T.ERPLOCATION =:V_ERPLOCATION\n" +
" AND T.MATERIALQUANTITY > 0 \n" +
"\t\t\tAND T.STOCKSTATE = 'Stocked' ";
List<Map<String,Object>> queryMaterialPackingByChargeForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(queryMaterialPackingByChargeSql, bindMap);
if (null != queryMaterialPackingByChargeForList && !queryMaterialPackingByChargeForList.isEmpty()) {
String materialQuantity = queryMaterialPackingByChargeForList.get(0).get("MATERIALQUANTITY") == null ? "0" : queryMaterialPackingByChargeForList.get(0).get("MATERIALQUANTITY").toString();
String materialPackingName = queryMaterialPackingByChargeForList.get(0).get("MATERIALPACKINGNAME") == null ? "" : queryMaterialPackingByChargeForList.get(0).get("MATERIALPACKINGNAME").toString();
String materialUnit = queryMaterialPackingByChargeForList.get(0).get("MATERIALUNIT") == null ? "" : queryMaterialPackingByChargeForList.get(0).get("MATERIALUNIT").toString();
String shipRequestName = queryMaterialPackingByChargeForList.get(0).get("SHIPREQUESTNAME") == null ? "" : queryMaterialPackingByChargeForList.get(0).get("SHIPREQUESTNAME").toString();
BigDecimal materialQuantityBigDecimal = new BigDecimal(materialQuantity);
BigDecimal qtyBigDecimal = new BigDecimal(qty);
//计算库存数量
if (materialQuantityBigDecimal.compareTo(qtyBigDecimal) >= 0){
//消耗后的库存数量
BigDecimal updateMaterialQuantity = materialQuantityBigDecimal.subtract(qtyBigDecimal);
//保留小数点后3位
updateMaterialQuantity = updateMaterialQuantity.setScale(3, RoundingMode.DOWN);
//更新MATERIALPACKING
String updateMaterialPackingMaterialQuantitySql = " UPDATE MATERIALPACKING T SET T.MATERIALQUANTITY =:MATERIALQUANTITY WHERE T.MATERIALPACKINGNAME =:MATERIALPACKINGNAME AND T.ERPFACTORY =:ERPFACTORY AND T.ERPLOCATION =:ERPLOCATION ";
Map<String, Object> updateMaterialPackingMaterialQuantityMap = new HashMap<String, Object>();
updateMaterialPackingMaterialQuantityMap.put("MATERIALQUANTITY", updateMaterialQuantity);
updateMaterialPackingMaterialQuantityMap.put("MATERIALPACKINGNAME", materialPackingName);
updateMaterialPackingMaterialQuantityMap.put("ERPFACTORY", erpFactory);
updateMaterialPackingMaterialQuantityMap.put("ERPLOCATION", erpLocation);
IDMFrameServiceProxy.getSqlTemplate().update(updateMaterialPackingMaterialQuantitySql, updateMaterialPackingMaterialQuantityMap);
//更新MATERIALPACKINGMDC
String updateMaterialPackingMdcMaterialQuantitySql = " UPDATE MATERIALPACKINGMDC T SET T.MATERIALQUANTITY = MATERIALQUANTITY - :MATERIALQUANTITY WHERE T.MATERIALPACKINGNAME =:MATERIALPACKINGNAME AND T.ERPFACTORY =:ERPFACTORY AND T.ERPLOCATION =:ERPLOCATION ";
Map<String, Object> updateMaterialPackingMdcMaterialQuantityMap = new HashMap<String, Object>();
updateMaterialPackingMdcMaterialQuantityMap.put("MATERIALQUANTITY", qtyBigDecimal);
updateMaterialPackingMdcMaterialQuantityMap.put("MATERIALPACKINGNAME", materialPackingName);
updateMaterialPackingMdcMaterialQuantityMap.put("ERPFACTORY", erpFactory);
updateMaterialPackingMdcMaterialQuantityMap.put("ERPLOCATION", erpLocation);
IDMFrameServiceProxy.getSqlTemplate().update(updateMaterialPackingMdcMaterialQuantitySql, updateMaterialPackingMdcMaterialQuantityMap);
//插入临时表TEMP_MESCONSUME
String insertTempMesConsumeSql = " INSERT INTO TEMP_MESCONSUME (MATERIALPACKINGNAME, MATERIALSPECNAME, ERPFACTORY, ERPLOCATION,UNIT, QTY,WO,SHIPREQUESTNAME)\n" +
" VALUES (:MATERIALPACKINGNAME, :MATERIALSPECNAME, :ERPFACTORY, :ERPLOCATION, :UNIT, :QTY,:WO,:SHIPREQUESTNAME) ";
Map<String, Object> insertTempMesConsumeMap = new HashMap<String, Object>();
insertTempMesConsumeMap.put("MATERIALPACKINGNAME",materialPackingName);
insertTempMesConsumeMap.put("MATERIALSPECNAME",materialSpecName);
insertTempMesConsumeMap.put("ERPFACTORY",erpFactory);
insertTempMesConsumeMap.put("ERPLOCATION",erpLocation);
insertTempMesConsumeMap.put("UNIT",materialUnit);
insertTempMesConsumeMap.put("QTY",qtyBigDecimal);
insertTempMesConsumeMap.put("WO",wo);
insertTempMesConsumeMap.put("SHIPREQUESTNAME",shipRequestName);
IDMFrameServiceProxy.getSqlTemplate().update(insertTempMesConsumeSql,insertTempMesConsumeMap);
materialPackingNameMap.put(materialPackingName,qtyBigDecimal.toString());
continue;
}else {
result = AjaxResult.me().setSuccess(false).setErrorCode(400).setMessage("批次:" + charge + " 料号: " + materialSpecName + " 库位: " + erpLocation + " 当前库存短缺" + qtyBigDecimal.subtract(materialQuantityBigDecimal));
return result;
}
}else {
result = AjaxResult.me().setSuccess(false).setErrorCode(400).setMessage("批次:" + charge + " 料号: " + materialSpecName + " 库位: " + erpLocation + " 当前库存短缺" + qty);
return result;
}
}else {
String queryMaterialPackingByMaterialSpecSql = " SELECT T.MATERIALPACKINGNAME, \n" +
" T.MATERIALSPECNAME, \n" +
" T.MATERIALQUANTITY, \n" +
" T.UNIT MATERIALUNIT, \n" +
" T.ERPFACTORY, \n" +
" T.ERPLOCATION ,\n" +
" T.SHIPREQUESTNAME,\n" +
" T.PRODUCTORDER\n" +
" FROM MATERIALPACKING T\n" +
" WHERE T.MATERIALSPECNAME = :V_MATERIALSPECNAME \n" +
" AND T.MATERIALQUANTITY > 0 AND T.STOCKSTATE = 'Stocked'\n" +
" AND T.ERPFACTORY = :V_ERPFACTORY\n" +
" AND T.ERPLOCATION = :V_ERPLOCATION\n" +
" ORDER BY \n" +
" T.MAKEDATE ASC ";
List<Map<String,Object>> queryMaterialPackingByMaterialSpecForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(queryMaterialPackingByMaterialSpecSql, bindMap);
if (null != queryMaterialPackingByMaterialSpecForList && !queryMaterialPackingByMaterialSpecForList.isEmpty()){
//所要消耗的数量
BigDecimal qtyBigDecimal = new BigDecimal(qty);
for (int j = 0; j < queryMaterialPackingByMaterialSpecForList.size(); j++) {
String materialQuantity = queryMaterialPackingByMaterialSpecForList.get(j).get("MATERIALQUANTITY") == null ? "0" : queryMaterialPackingByMaterialSpecForList.get(j).get("MATERIALQUANTITY").toString();
String materialPackingName = queryMaterialPackingByMaterialSpecForList.get(j).get("MATERIALPACKINGNAME") == null ? "" : queryMaterialPackingByMaterialSpecForList.get(j).get("MATERIALPACKINGNAME").toString();
String materialUnit = queryMaterialPackingByMaterialSpecForList.get(j).get("MATERIALUNIT") == null ? "" : queryMaterialPackingByMaterialSpecForList.get(j).get("MATERIALUNIT").toString();
String shipRequestName = queryMaterialPackingByMaterialSpecForList.get(j).get("SHIPREQUESTNAME") == null ? "" : queryMaterialPackingByMaterialSpecForList.get(j).get("SHIPREQUESTNAME").toString();
//当前批次的库存数量
BigDecimal materialQuantityBigDecimal = new BigDecimal(materialQuantity);
if (materialQuantityBigDecimal.compareTo(qtyBigDecimal) >= 0){
//消耗后的库存数量
BigDecimal updateMaterialQuantity = materialQuantityBigDecimal.subtract(qtyBigDecimal);
//保留小数点后3位
updateMaterialQuantity = updateMaterialQuantity.setScale(3, RoundingMode.DOWN);
//更新MATERIALPACKING
String updateMaterialPackingMaterialQuantitySql = " UPDATE MATERIALPACKING T SET T.MATERIALQUANTITY =:MATERIALQUANTITY WHERE T.MATERIALPACKINGNAME =:MATERIALPACKINGNAME AND T.ERPFACTORY =:ERPFACTORY AND T.ERPLOCATION =:ERPLOCATION ";
Map<String, Object> updateMaterialPackingMaterialQuantityMap = new HashMap<String, Object>();
updateMaterialPackingMaterialQuantityMap.put("MATERIALQUANTITY", updateMaterialQuantity);
updateMaterialPackingMaterialQuantityMap.put("MATERIALPACKINGNAME", materialPackingName);
updateMaterialPackingMaterialQuantityMap.put("ERPFACTORY", erpFactory);
updateMaterialPackingMaterialQuantityMap.put("ERPLOCATION", erpLocation);
IDMFrameServiceProxy.getSqlTemplate().update(updateMaterialPackingMaterialQuantitySql, updateMaterialPackingMaterialQuantityMap);
//更新MATERIALPACKINGMDC
String updateMaterialPackingMdcMaterialQuantitySql = " UPDATE MATERIALPACKINGMDC T SET T.MATERIALQUANTITY = MATERIALQUANTITY - :MATERIALQUANTITY WHERE T.MATERIALPACKINGNAME =:MATERIALPACKINGNAME AND T.ERPFACTORY =:ERPFACTORY AND T.ERPLOCATION =:ERPLOCATION ";
Map<String, Object> updateMaterialPackingMdcMaterialQuantityMap = new HashMap<String, Object>();
updateMaterialPackingMdcMaterialQuantityMap.put("MATERIALQUANTITY", qtyBigDecimal);
updateMaterialPackingMdcMaterialQuantityMap.put("MATERIALPACKINGNAME", materialPackingName);
updateMaterialPackingMdcMaterialQuantityMap.put("ERPFACTORY", erpFactory);
updateMaterialPackingMdcMaterialQuantityMap.put("ERPLOCATION", erpLocation);
IDMFrameServiceProxy.getSqlTemplate().update(updateMaterialPackingMdcMaterialQuantitySql, updateMaterialPackingMdcMaterialQuantityMap);
//插入临时表TEMP_MESCONSUME
String insertTempMesConsumeSql = " INSERT INTO TEMP_MESCONSUME (MATERIALPACKINGNAME, MATERIALSPECNAME, ERPFACTORY, ERPLOCATION,UNIT, QTY,WO,SHIPREQUESTNAME)\n" +
" VALUES (:MATERIALPACKINGNAME, :MATERIALSPECNAME, :ERPFACTORY, :ERPLOCATION, :UNIT, :QTY,:WO,:SHIPREQUESTNAME) ";
Map<String, Object> insertTempMesConsumeMap = new HashMap<String, Object>();
insertTempMesConsumeMap.put("MATERIALPACKINGNAME",materialPackingName);
insertTempMesConsumeMap.put("MATERIALSPECNAME",materialSpecName);
insertTempMesConsumeMap.put("ERPFACTORY",erpFactory);
insertTempMesConsumeMap.put("ERPLOCATION",erpLocation);
insertTempMesConsumeMap.put("UNIT",materialUnit);
insertTempMesConsumeMap.put("QTY",qtyBigDecimal);
insertTempMesConsumeMap.put("WO",wo);
insertTempMesConsumeMap.put("SHIPREQUESTNAME",shipRequestName);
IDMFrameServiceProxy.getSqlTemplate().update(insertTempMesConsumeSql,insertTempMesConsumeMap);
materialPackingNameMap.put(materialPackingName,qtyBigDecimal.toString());
break;
}else {
//消耗数量大于循环中当前条码的库存数量
//更新MATERIALPACKING
String updateMaterialPackingMaterialQuantitySql = " UPDATE MATERIALPACKING T SET T.MATERIALQUANTITY =:MATERIALQUANTITY WHERE T.MATERIALPACKINGNAME =:MATERIALPACKINGNAME AND T.ERPFACTORY =:ERPFACTORY AND T.ERPLOCATION =:ERPLOCATION ";
Map<String, Object> updateMaterialPackingMaterialQuantityMap = new HashMap<String, Object>();
updateMaterialPackingMaterialQuantityMap.put("MATERIALQUANTITY", "0");
updateMaterialPackingMaterialQuantityMap.put("MATERIALPACKINGNAME", materialPackingName);
updateMaterialPackingMaterialQuantityMap.put("ERPFACTORY", erpFactory);
updateMaterialPackingMaterialQuantityMap.put("ERPLOCATION", erpLocation);
IDMFrameServiceProxy.getSqlTemplate().update(updateMaterialPackingMaterialQuantitySql, updateMaterialPackingMaterialQuantityMap);
//更新MATERIALPACKINGMDC
String updateMaterialPackingMdcMaterialQuantitySql = " UPDATE MATERIALPACKINGMDC T SET T.MATERIALQUANTITY = MATERIALQUANTITY - :MATERIALQUANTITY WHERE T.MATERIALPACKINGNAME =:MATERIALPACKINGNAME AND T.ERPFACTORY =:ERPFACTORY AND T.ERPLOCATION =:ERPLOCATION ";
Map<String, Object> updateMaterialPackingMdcMaterialQuantityMap = new HashMap<String, Object>();
updateMaterialPackingMdcMaterialQuantityMap.put("MATERIALQUANTITY", "0");
updateMaterialPackingMdcMaterialQuantityMap.put("MATERIALPACKINGNAME", materialPackingName);
updateMaterialPackingMdcMaterialQuantityMap.put("ERPFACTORY", erpFactory);
updateMaterialPackingMdcMaterialQuantityMap.put("ERPLOCATION", erpLocation);
IDMFrameServiceProxy.getSqlTemplate().update(updateMaterialPackingMdcMaterialQuantitySql, updateMaterialPackingMdcMaterialQuantityMap);
//插入临时表TEMP_MESCONSUME
String insertTempMesConsumeSql = " INSERT INTO TEMP_MESCONSUME (MATERIALPACKINGNAME, MATERIALSPECNAME, ERPFACTORY, ERPLOCATION,UNIT, QTY,WO,SHIPREQUESTNAME)\n" +
" VALUES (:MATERIALPACKINGNAME, :MATERIALSPECNAME, :ERPFACTORY, :ERPLOCATION, :UNIT, :QTY,:WO,:SHIPREQUESTNAME) ";
Map<String, Object> insertTempMesConsumeMap = new HashMap<String, Object>();
insertTempMesConsumeMap.put("MATERIALPACKINGNAME",materialPackingName);
insertTempMesConsumeMap.put("MATERIALSPECNAME",materialSpecName);
insertTempMesConsumeMap.put("ERPFACTORY",erpFactory);
insertTempMesConsumeMap.put("ERPLOCATION",erpLocation);
insertTempMesConsumeMap.put("UNIT",materialUnit);
insertTempMesConsumeMap.put("QTY",materialQuantityBigDecimal);
insertTempMesConsumeMap.put("WO",wo);
insertTempMesConsumeMap.put("SHIPREQUESTNAME",shipRequestName);
IDMFrameServiceProxy.getSqlTemplate().update(insertTempMesConsumeSql,insertTempMesConsumeMap);
materialPackingNameMap.put(materialPackingName,materialQuantityBigDecimal.toString());
//计算剩余消耗数量
qtyBigDecimal = qtyBigDecimal.subtract(materialQuantityBigDecimal);
}
}
if (qtyBigDecimal.compareTo(new BigDecimal(BigInteger.ZERO)) >= 0){
result = AjaxResult.me().setSuccess(false).setErrorCode(400).setMessage( " 料号: " + materialSpecName + " 库位: " + erpLocation + " 当前库存短缺" + qtyBigDecimal);
return result;
}
}else {
result = AjaxResult.me().setSuccess(false).setErrorCode(400).setMessage( " 料号: " + materialSpecName + " 库位: " + erpLocation + " 当前库存短缺" + qty);
return result;
}
}
/*
if (stringObjectMap != null) { if (stringObjectMap != null) {
if (stringObjectMap.get("V_RETURN_CODE") != null && !stringObjectMap.get("V_RETURN_CODE").toString().equals("0")) { if (stringObjectMap.get("V_RETURN_CODE") != null && !stringObjectMap.get("V_RETURN_CODE").toString().equals("0")) {
errorCode = stringObjectMap.get("V_RETURN_CODE").toString(); errorCode = stringObjectMap.get("V_RETURN_CODE").toString();
@ -146,10 +334,10 @@ public class MESToWMSServiceImpl implements MESToWMSService {
return result; return result;
} }
} }
*/
} }
// 将工单的物料消耗数据传给SAP // 将工单的物料消耗数据传给SAP
String undoId = toSAPService.mesMaterialConsume("MES",payMentDate, eventInfo,aufnr); String undoId = toSAPService.mesMaterialConsume("MES",payMentDate, eventInfo,aufnr,materialPackingNameMap);
result = AjaxResult.me().setSuccess(true).setErrorCode(200).setMessage("执行成功").setResultObj(undoId); result = AjaxResult.me().setSuccess(true).setErrorCode(200).setMessage("执行成功").setResultObj(undoId);
loginfo.setResultCode("0"); loginfo.setResultCode("0");
loginfo.setReturnMsg(JSONObject.toJSONString(result)); loginfo.setReturnMsg(JSONObject.toJSONString(result));

View File

@ -14,7 +14,9 @@ import com.cim.idm.model.po.delivery.MaterialDelivery;
import com.cim.idm.model.po.delivery.MaterialDeliveryReceive; import com.cim.idm.model.po.delivery.MaterialDeliveryReceive;
import com.cim.idm.mwmsextend.materialpacking.service.MaterialPackingServiceImpl; import com.cim.idm.mwmsextend.materialpacking.service.MaterialPackingServiceImpl;
import com.cim.idm.service.IMaterialShipService; import com.cim.idm.service.IMaterialShipService;
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.QMSServiceImpl;
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.utils.AjaxResult; import com.cim.idm.utils.AjaxResult;
@ -53,6 +55,9 @@ public class MaterialShipServiceImpl implements IMaterialShipService {
@Autowired @Autowired
private DeliveryDao deliveryDao; private DeliveryDao deliveryDao;
@Autowired
private QMSService qmsService;
SDKMaterialPackingServiceImpl SDKMP = new SDKMaterialPackingServiceImpl(); SDKMaterialPackingServiceImpl SDKMP = new SDKMaterialPackingServiceImpl();
/** /**
* 出库方法实现 * 出库方法实现
@ -1025,6 +1030,10 @@ public class MaterialShipServiceImpl implements IMaterialShipService {
} }
String deleteSql = "DELETE FROM MATERIALPACKINGSUB WHERE RECEIVEREQUESTNAME = :SHIPREQUESTNAME"; String deleteSql = "DELETE FROM MATERIALPACKINGSUB WHERE RECEIVEREQUESTNAME = :SHIPREQUESTNAME";
IDMFrameServiceProxy.getSqlTemplate().update(deleteSql, hashMap); IDMFrameServiceProxy.getSqlTemplate().update(deleteSql, hashMap);
//调用QMS计量器具接口
if (!materialPackingKeyList.isEmpty()){
qmsService.sendToQMSByMeteringStockOutBoxIdList(materialPackingKeyList);
}
return AjaxResult.me().setSuccess(true).setErrorCode(200); return AjaxResult.me().setSuccess(true).setErrorCode(200);
} }