Merge branch 'main' of http://162.14.99.253:3000/10539622/2025-03-JS-SDK-svr
This commit is contained in:
commit
73cd81d64d
@ -2608,7 +2608,8 @@ public class ToSAPServiceImpl {
|
|||||||
//用户名
|
//用户名
|
||||||
body.put("USNAM", user);
|
body.put("USNAM", user);
|
||||||
//查询临时表TEMP_MESCONSUME,从里面取数据
|
//查询临时表TEMP_MESCONSUME,从里面取数据
|
||||||
String sql = "SELECT T.MATERIALSPECNAME, T.ERPFACTORY, T.ERPLOCATION, T.QTY, T.UNIT,T.WO,T.SHIPREQUESTNAME,M.RESERVEDPROJECTNUMB FROM TEMP_MESCONSUME T LEFT JOIN MATERIALSHIPREQUESTDETAIL M ON M.SHIPREQUESTNAME = T.SHIPREQUESTNAME AND M.MATERIALSPECNAME = T.MATERIALSPECNAME";
|
//String sql = "SELECT T.MATERIALSPECNAME, T.ERPFACTORY, T.ERPLOCATION, T.QTY, T.UNIT,T.WO,T.SHIPREQUESTNAME,M.RESERVEDPROJECTNUMB FROM TEMP_MESCONSUME T LEFT JOIN MATERIALSHIPREQUESTDETAIL M ON M.SHIPREQUESTNAME = T.SHIPREQUESTNAME AND M.MATERIALSPECNAME = T.MATERIALSPECNAME";
|
||||||
|
String sql = "SELECT T.MATERIALSPECNAME, T.ERPFACTORY, T.ERPLOCATION, T.QTY, T.UNIT,T.WO,T.SHIPREQUESTNAME,M.SHIPREQUESTDETAILNAME FROM TEMP_MESCONSUME T LEFT JOIN MATERIALSHIPREQUESTDETAIL M ON M.SHIPREQUESTNAME = T.SHIPREQUESTNAME AND M.MATERIALSPECNAME = T.MATERIALSPECNAME";
|
||||||
List<Map<String, Object>> maps = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql, new HashMap<String,Object>());
|
List<Map<String, Object>> maps = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql, new HashMap<String,Object>());
|
||||||
|
|
||||||
|
|
||||||
@ -2641,7 +2642,8 @@ public class ToSAPServiceImpl {
|
|||||||
//ZLLITEM 自定义领料单行号
|
//ZLLITEM 自定义领料单行号
|
||||||
|
|
||||||
// item.put("ZLLITEM", "0001");
|
// item.put("ZLLITEM", "0001");
|
||||||
item.put("ZLLITEM", maps.get(i).get("RESERVEDPROJECTNUMB"));
|
//item.put("ZLLITEM", maps.get(i).get("RESERVEDPROJECTNUMB"));
|
||||||
|
item.put("ZLLITEM", maps.get(i).get("SHIPREQUESTDETAILNAME"));
|
||||||
//AUFNR 订单号
|
//AUFNR 订单号
|
||||||
item.put("AUFNR", maps.get(i).get("WO"));
|
item.put("AUFNR", maps.get(i).get("WO"));
|
||||||
|
|
||||||
|
@ -10,6 +10,8 @@ import com.cim.idm.framework.util.time.TimeUtils;
|
|||||||
import com.cim.idm.model.SAPToWMSRequest;
|
import com.cim.idm.model.SAPToWMSRequest;
|
||||||
import com.cim.idm.model.WMSToSAPReturn;
|
import com.cim.idm.model.WMSToSAPReturn;
|
||||||
import com.cim.idm.mwmsextend.materialreceiverequest.service.MaterialReceiveRequestServiceImpl;
|
import com.cim.idm.mwmsextend.materialreceiverequest.service.MaterialReceiveRequestServiceImpl;
|
||||||
|
import com.cim.idm.service.IMaterialPackingService;
|
||||||
|
import com.cim.idm.service.Impl.MESToWMSServiceImpl;
|
||||||
import com.cim.idm.util.MessageLogUtil;
|
import com.cim.idm.util.MessageLogUtil;
|
||||||
import com.cim.idm.wmsextend.generic.errorHandler.CustomException;
|
import com.cim.idm.wmsextend.generic.errorHandler.CustomException;
|
||||||
import com.cim.idm.wmspackage.invoice.MaterialReceiveRequestServiceProxy;
|
import com.cim.idm.wmspackage.invoice.MaterialReceiveRequestServiceProxy;
|
||||||
@ -34,11 +36,13 @@ import com.cim.idm.wmspackage.receiverequestdetail.ReceiveRequestDetailServicePr
|
|||||||
import com.cim.idm.wmspackage.receiverequestdetail.management.data.MaterialReceiveRequestDetail;
|
import com.cim.idm.wmspackage.receiverequestdetail.management.data.MaterialReceiveRequestDetail;
|
||||||
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.CreateReceiveRequestDetailInfo;
|
import com.cim.idm.wmspackage.receiverequestdetail.management.info.CreateReceiveRequestDetailInfo;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.collections4.MapUtils;
|
import org.apache.commons.collections4.MapUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestMethod;
|
import org.springframework.web.bind.annotation.RequestMethod;
|
||||||
@ -76,6 +80,9 @@ public class SAPToWMSController {
|
|||||||
* 设置MATERIALSPEC的SITENAME值为SDK
|
* 设置MATERIALSPEC的SITENAME值为SDK
|
||||||
*/
|
*/
|
||||||
String materialSpecSiteName = "SDK";
|
String materialSpecSiteName = "SDK";
|
||||||
|
@Autowired
|
||||||
|
private IMaterialPackingService materialPackingService;
|
||||||
|
|
||||||
// 物料主数据
|
// 物料主数据
|
||||||
@RequestMapping(value = "/materialspec", method = RequestMethod.POST)
|
@RequestMapping(value = "/materialspec", method = RequestMethod.POST)
|
||||||
public WMSToSAPReturn GetMaterialSpec(HttpServletRequest httpRequest, @RequestBody SAPToWMSRequest request) {
|
public WMSToSAPReturn GetMaterialSpec(HttpServletRequest httpRequest, @RequestBody SAPToWMSRequest request) {
|
||||||
@ -2223,4 +2230,71 @@ public class SAPToWMSController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 物料消耗
|
||||||
|
* 2024-05-08
|
||||||
|
* @param httpRequest
|
||||||
|
* @param request
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@ApiOperation(value = "物料消耗")
|
||||||
|
@RequestMapping("/sapwms_materialconsume_request")
|
||||||
|
public WMSToSAPReturn sapMaterialConsume_Request(HttpServletRequest httpRequest, @RequestBody SAPToWMSRequest request) {
|
||||||
|
Map<String,Object> head = request.getHEAD();
|
||||||
|
//开启事务
|
||||||
|
IDMFrameServiceProxy.getTransactionManager().beginTransaction();
|
||||||
|
try {
|
||||||
|
ArrayList<Map<String,Object>> datas = request.getBODY();
|
||||||
|
String siteName = "SDK";
|
||||||
|
String userName = "SAP";
|
||||||
|
if (null == datas || datas.size() <= 0){
|
||||||
|
throw new Exception("BODY信息不能为空,请确认");
|
||||||
|
}
|
||||||
|
materialPackingService.materialConsumeSapBwtar(datas,siteName,userName);
|
||||||
|
Map<String, Object> oKReturn = new HashMap<>();
|
||||||
|
oKReturn.put("STATUS", "S");
|
||||||
|
oKReturn.put("MSGTXT", "物料消耗成功");
|
||||||
|
oKReturn.put("ZRSV01", "");
|
||||||
|
oKReturn.put("ZRSV02", "");
|
||||||
|
oKReturn.put("ZRSV03", "");
|
||||||
|
oKReturn.put("ZRSV04", "");
|
||||||
|
oKReturn.put("ZRSV05", "");
|
||||||
|
oKReturn.put("ZRSV06", "");
|
||||||
|
oKReturn.put("ZRSV07", "");
|
||||||
|
oKReturn.put("ZRSV08", "");
|
||||||
|
oKReturn.put("ZRSV09", "");
|
||||||
|
oKReturn.put("ZRSV10", "");
|
||||||
|
WMSToSAPReturn WMSToSAPReturn = new WMSToSAPReturn(head, oKReturn);
|
||||||
|
ErpMessageLog erpMessageLog = new ErpMessageLog();
|
||||||
|
erpMessageLog.setServerName(System.getProperty("Seq"));
|
||||||
|
erpMessageLog.setEventName(httpRequest.getRequestURL().toString());
|
||||||
|
erpMessageLog.setId(new TimeUtils().getCurrentEventTimeKey());
|
||||||
|
erpMessageLog.setResultCode("S");
|
||||||
|
erpMessageLog.setSendMsg(JSONObject.toJSONString(request));
|
||||||
|
erpMessageLog.setMessageId("sapwms_materialconsume_request");
|
||||||
|
erpMessageLog.setReturnMsg(JSONObject.toJSONString(WMSToSAPReturn));
|
||||||
|
erpMessageLog.setInterfaceTime(TimeStampUtil.getCurrentTime(TimeStampUtil.FORMAT_DEFAULT));
|
||||||
|
MessageLogUtil.writeMessageLog(erpMessageLog);
|
||||||
|
IDMFrameServiceProxy.getTransactionManager().commitTransaction();
|
||||||
|
return WMSToSAPReturn;
|
||||||
|
}catch (Exception e){
|
||||||
|
IDMFrameServiceProxy.getTransactionManager().rollbackTransaction();
|
||||||
|
Map<String, Object> errorReturn = new HashMap<>();
|
||||||
|
errorReturn.put("STATUS", "E");
|
||||||
|
errorReturn.put("MSGTXT", "物料消耗失败, " + e.getMessage());
|
||||||
|
errorReturn.put("HEAD", request.getHEAD());
|
||||||
|
WMSToSAPReturn WMSToSAPReturn = new WMSToSAPReturn(head, errorReturn);
|
||||||
|
ErpMessageLog erpMessageLog = new ErpMessageLog();
|
||||||
|
erpMessageLog.setServerName(System.getProperty("Seq"));
|
||||||
|
erpMessageLog.setEventName(httpRequest.getRequestURL().toString());
|
||||||
|
erpMessageLog.setId(new TimeUtils().getCurrentEventTimeKey());
|
||||||
|
erpMessageLog.setResultCode("E");
|
||||||
|
erpMessageLog.setSendMsg(JSONObject.toJSONString(request));
|
||||||
|
erpMessageLog.setMessageId("sapwms_materialconsume_request");
|
||||||
|
erpMessageLog.setReturnMsg(JSONObject.toJSONString(WMSToSAPReturn));
|
||||||
|
erpMessageLog.setInterfaceTime(TimeStampUtil.getCurrentTime(TimeStampUtil.FORMAT_DEFAULT));
|
||||||
|
MessageLogUtil.writeMessageLog(erpMessageLog);
|
||||||
|
return WMSToSAPReturn;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,7 @@ import com.cim.idm.framework.data.EventInfo;
|
|||||||
import com.cim.idm.model.dto.packing.MaterialPackingListDto;
|
import com.cim.idm.model.dto.packing.MaterialPackingListDto;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@ -28,4 +29,13 @@ public interface IMaterialPackingService {
|
|||||||
*/
|
*/
|
||||||
void delMaterialPacking(Map<String, Object> hashMap, String materialPackingName,
|
void delMaterialPacking(Map<String, Object> hashMap, String materialPackingName,
|
||||||
String siteName, EventInfo makeEventInfo);
|
String siteName, EventInfo makeEventInfo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SAP物料消耗(正向、反向)
|
||||||
|
* 2025-05-08
|
||||||
|
* @param dataList body报文
|
||||||
|
* @param siteName 工厂
|
||||||
|
* @param userName 用户名
|
||||||
|
*/
|
||||||
|
void materialConsumeSapBwtar(ArrayList<Map<String,Object>> dataList, String siteName, String userName) throws Exception;
|
||||||
}
|
}
|
||||||
|
@ -5,12 +5,20 @@ import com.cim.idm.framework.IDMFrameServiceProxy;
|
|||||||
import com.cim.idm.framework.data.EventInfo;
|
import com.cim.idm.framework.data.EventInfo;
|
||||||
import com.cim.idm.model.dto.packing.MaterialPackingListDto;
|
import com.cim.idm.model.dto.packing.MaterialPackingListDto;
|
||||||
import com.cim.idm.service.IMaterialPackingService;
|
import com.cim.idm.service.IMaterialPackingService;
|
||||||
|
import com.cim.idm.utils.EventInfoUtil;
|
||||||
import com.cim.idm.wmspackage.materialpacking.MaterialPackingServiceProxy;
|
import com.cim.idm.wmspackage.materialpacking.MaterialPackingServiceProxy;
|
||||||
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.RemoveInfo;
|
import com.cim.idm.wmspackage.materialpacking.management.info.RemoveInfo;
|
||||||
|
import com.cim.idm.wmspackage.materialpacking.management.info.SetEventInfo;
|
||||||
|
import org.apache.commons.collections4.MapUtils;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.math.BigInteger;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@ -48,4 +56,184 @@ public class MaterialPackingServiceServiceImpl implements IMaterialPackingServic
|
|||||||
IDMFrameServiceProxy.getSqlTemplate().update(deleteSql, hashMap);
|
IDMFrameServiceProxy.getSqlTemplate().update(deleteSql, hashMap);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SAP物料消耗(正向、反向)
|
||||||
|
* 2025-05-08
|
||||||
|
* @param dataList body报文
|
||||||
|
* @param siteName 工厂
|
||||||
|
* @param userName 用户名
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void materialConsumeSapBwtar(ArrayList<Map<String,Object>> dataList, String siteName, String userName) throws Exception {
|
||||||
|
String checkBwart = "";// 移动类型
|
||||||
|
EventInfo eventInfo = new EventInfoUtil().makeEventInfo("materialConsumeSapBwtar", userName, "materialConsumeSapBwtar", "", "");
|
||||||
|
for (Map<String, Object> data : dataList) {
|
||||||
|
//存储要更新的MaterialPacking信息
|
||||||
|
ArrayList<SetEventInfo> setEventInfoList = new ArrayList<>();
|
||||||
|
//存储要更新MaterialPacking信息的key
|
||||||
|
ArrayList<MaterialPackingKey> materialPackingKeyList = new ArrayList<>();
|
||||||
|
String aufnr = MapUtils.getString(data, "AUFNR"); //生产单号
|
||||||
|
String werks = MapUtils.getString(data, "WERKS"); // 组织
|
||||||
|
String matnr = MapUtils.getString(data, "MATNR"); // 物料编号
|
||||||
|
String bwart = MapUtils.getString(data, "BWART"); // 移动类型
|
||||||
|
String menge = MapUtils.getString(data, "MENGE"); // 订单数量
|
||||||
|
String meins = MapUtils.getString(data, "MEINS"); // 单位
|
||||||
|
String lgort = MapUtils.getString(data, "LGORT"); // ERP库存地点
|
||||||
|
String budatMkpf = MapUtils.getString(data, "BUDAT_MKPF"); // 过账日期
|
||||||
|
String mblnr = MapUtils.getString(data, "MBLNR"); // 物料凭证号
|
||||||
|
if (StringUtils.isEmpty(aufnr) || StringUtils.isEmpty(werks) || StringUtils.isEmpty(matnr)
|
||||||
|
|| StringUtils.isEmpty(bwart) || StringUtils.isEmpty(menge) || StringUtils.isEmpty(meins)
|
||||||
|
|| StringUtils.isEmpty(lgort) || StringUtils.isEmpty(budatMkpf) || StringUtils.isEmpty(mblnr)) {
|
||||||
|
throw new Exception("AUFNR、WERKS、MATNR、BWART、MENGE、MEINS、LGORT、BUDAT_MKPF、MBLNR是必填项");
|
||||||
|
}
|
||||||
|
//操作数量
|
||||||
|
BigDecimal mengeBigDecimal = new BigDecimal(menge);
|
||||||
|
if (StringUtils.isNotEmpty(checkBwart) && !bwart.equals(checkBwart)){
|
||||||
|
throw new Exception("不能同时操作261、262多种移动类型,请确认");
|
||||||
|
}
|
||||||
|
if ("261".equals(bwart)){
|
||||||
|
//正向 BWART=261发料,根据WERKS+LGORT+AUFNR+MATNR+MEINS根据先进先出逻辑扣减MENGE量的库存
|
||||||
|
//根据先进先出查询库存
|
||||||
|
String selcetMaterialpackingSql = " SELECT\n" +
|
||||||
|
"\tSITENAME, MATERIALPACKINGNAME, MATERIALQUANTITY, CREATETIME \n" +
|
||||||
|
"FROM\n" +
|
||||||
|
"\tMATERIALPACKING \n" +
|
||||||
|
"WHERE\n" +
|
||||||
|
"\tSITENAME =:SITENAME\n" +
|
||||||
|
"\tAND STOCKSTATE =:STOCKSTATE\n" +
|
||||||
|
"\tAND ERPFACTORY =:ERPFACTORY \n" +
|
||||||
|
"\tAND ERPLOCATION =:ERPLOCATION\n" +
|
||||||
|
"\tAND UNIT =:UNIT\n" +
|
||||||
|
"\tAND MATERIALSPECNAME =:MATERIALSPECNAME \n" +
|
||||||
|
"\tAND UNDOID =:UNDOID \n" +
|
||||||
|
"ORDER BY CREATETIME ASC ";
|
||||||
|
Map<String, Object> selcetMaterialpackingMap = new HashMap<String, Object> ();
|
||||||
|
selcetMaterialpackingMap.put("SITENAME", siteName);
|
||||||
|
selcetMaterialpackingMap.put("STOCKSTATE", "Stocked");
|
||||||
|
selcetMaterialpackingMap.put("ERPFACTORY", werks);
|
||||||
|
selcetMaterialpackingMap.put("ERPLOCATION", lgort);
|
||||||
|
selcetMaterialpackingMap.put("UNIT", meins);
|
||||||
|
selcetMaterialpackingMap.put("MATERIALSPECNAME", matnr);
|
||||||
|
selcetMaterialpackingMap.put("UNDOID", mblnr);
|
||||||
|
List<Map<String, Object>> queryMaterialpackingList = IDMFrameServiceProxy.getSqlTemplate().queryForList(selcetMaterialpackingSql, selcetMaterialpackingMap);
|
||||||
|
for (int i = 0; i < queryMaterialpackingList.size(); i++) {
|
||||||
|
Map<String, Object> hashMap2 = new HashMap<String,Object>();
|
||||||
|
SetEventInfo setEventInfo = new SetEventInfo();
|
||||||
|
|
||||||
|
String materialPackingName = queryMaterialpackingList.get(i).get("MATERIALPACKINGNAME").toString();
|
||||||
|
String materialQuantity = queryMaterialpackingList.get(i).get("MATERIALQUANTITY").toString();
|
||||||
|
BigDecimal materialQuantityDecimal = new BigDecimal(materialQuantity);
|
||||||
|
if (mengeBigDecimal.compareTo(materialQuantityDecimal) < 0){
|
||||||
|
//消耗数量小于当前条码库存数量
|
||||||
|
materialQuantityDecimal = materialQuantityDecimal.subtract(mengeBigDecimal);
|
||||||
|
mengeBigDecimal = new BigDecimal(BigInteger.ZERO);
|
||||||
|
|
||||||
|
//保存要更新的MaterialPacking信息
|
||||||
|
materialQuantity = materialQuantityDecimal.toString();
|
||||||
|
hashMap2.put("materialQuantity", materialQuantity);
|
||||||
|
hashMap2.put("materialCreateQuantity", materialQuantity);
|
||||||
|
hashMap2.put("unDoID", mblnr);
|
||||||
|
setEventInfo.setUserColumns(hashMap2);
|
||||||
|
setEventInfoList.add(setEventInfo);
|
||||||
|
MaterialPackingKey materialPackingKey = new MaterialPackingKey(siteName, materialPackingName);
|
||||||
|
materialPackingKeyList.add(materialPackingKey);
|
||||||
|
break;
|
||||||
|
} else if (mengeBigDecimal.compareTo(materialQuantityDecimal) == 0){
|
||||||
|
//消耗数量等于当前条码库存数量
|
||||||
|
mengeBigDecimal = new BigDecimal(BigInteger.ZERO);
|
||||||
|
materialQuantityDecimal = new BigDecimal(BigInteger.ZERO);
|
||||||
|
|
||||||
|
//保存要更新的MaterialPacking信息
|
||||||
|
materialQuantity = materialQuantityDecimal.toString();
|
||||||
|
hashMap2.put("materialQuantity", materialQuantity);
|
||||||
|
hashMap2.put("materialCreateQuantity", materialQuantity);
|
||||||
|
hashMap2.put("unDoID", mblnr);
|
||||||
|
setEventInfo.setUserColumns(hashMap2);
|
||||||
|
setEventInfoList.add(setEventInfo);
|
||||||
|
MaterialPackingKey materialPackingKey = new MaterialPackingKey(siteName, materialPackingName);
|
||||||
|
materialPackingKeyList.add(materialPackingKey);
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
//消耗数量大于当前条码库存数量
|
||||||
|
mengeBigDecimal = mengeBigDecimal.subtract(materialQuantityDecimal);
|
||||||
|
materialQuantityDecimal = new BigDecimal(BigInteger.ZERO);
|
||||||
|
//如果扣减后当前条码库存数量等于0,将状态改为StockOut
|
||||||
|
hashMap2.put("stockState", "StockOut");
|
||||||
|
//保存要更新的MaterialPacking信息
|
||||||
|
|
||||||
|
materialQuantity = materialQuantityDecimal.toString();
|
||||||
|
hashMap2.put("materialQuantity", materialQuantity);
|
||||||
|
hashMap2.put("materialCreateQuantity", materialQuantity);
|
||||||
|
hashMap2.put("unDoID", mblnr);
|
||||||
|
setEventInfo.setUserColumns(hashMap2);
|
||||||
|
setEventInfoList.add(setEventInfo);
|
||||||
|
MaterialPackingKey materialPackingKey = new MaterialPackingKey(siteName, materialPackingName);
|
||||||
|
materialPackingKeyList.add(materialPackingKey);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
if (mengeBigDecimal.compareTo(BigDecimal.ZERO) > 0){
|
||||||
|
throw new Exception("物料:" + matnr + " " + werks + " " + lgort + " " + meins + "库存短缺");
|
||||||
|
}
|
||||||
|
MaterialPackingServiceProxy.getMaterialPackingService().setEvent(materialPackingKeyList, eventInfo, setEventInfoList);
|
||||||
|
} else if ("262".equals(bwart)) {
|
||||||
|
//反向 BWART=262冲销,根据MBLNR增加对应的数量
|
||||||
|
String selcetMaterialpackingSql = " SELECT\n" +
|
||||||
|
"\tSITENAME, MATERIALPACKINGNAME, STOCKSTATE, MATERIALQUANTITY \n" +
|
||||||
|
"FROM\n" +
|
||||||
|
"\tMATERIALPACKING \n" +
|
||||||
|
"WHERE\n" +
|
||||||
|
"\tSITENAME =:SITENAME\n" +
|
||||||
|
"\tAND STOCKSTATE IN ('Stocked','StockOut')\n" +
|
||||||
|
"\tAND ERPFACTORY =:ERPFACTORY \n" +
|
||||||
|
"\tAND ERPLOCATION =:ERPLOCATION\n" +
|
||||||
|
"\tAND UNIT =:UNIT\n" +
|
||||||
|
"\tAND MATERIALSPECNAME =:MATERIALSPECNAME \n" +
|
||||||
|
"\tAND UNDOID =:UNDOID \n";
|
||||||
|
Map<String, Object> selcetMaterialpackingMap = new HashMap<String, Object> ();
|
||||||
|
selcetMaterialpackingMap.put("SITENAME", siteName);
|
||||||
|
selcetMaterialpackingMap.put("ERPFACTORY", werks);
|
||||||
|
selcetMaterialpackingMap.put("ERPLOCATION", lgort);
|
||||||
|
selcetMaterialpackingMap.put("UNIT", meins);
|
||||||
|
selcetMaterialpackingMap.put("MATERIALSPECNAME", matnr);
|
||||||
|
selcetMaterialpackingMap.put("UNDOID", mblnr);
|
||||||
|
List<Map<String, Object>> queryMaterialpackingList = IDMFrameServiceProxy.getSqlTemplate().queryForList(selcetMaterialpackingSql, selcetMaterialpackingMap);
|
||||||
|
for (int i = 0; i < queryMaterialpackingList.size(); i++) {
|
||||||
|
Map<String, Object> hashMap2 = new HashMap<String,Object>();
|
||||||
|
SetEventInfo setEventInfo = new SetEventInfo();
|
||||||
|
|
||||||
|
String materialPackingName = queryMaterialpackingList.get(i).get("MATERIALPACKINGNAME").toString();
|
||||||
|
String materialQuantity = queryMaterialpackingList.get(i).get("MATERIALQUANTITY").toString();
|
||||||
|
String stockState = queryMaterialpackingList.get(i).get("STOCKSTATE").toString();
|
||||||
|
BigDecimal materialQuantityDecimal = new BigDecimal(materialQuantity);
|
||||||
|
if("Stocked".equals(stockState)){
|
||||||
|
materialQuantityDecimal = materialQuantityDecimal.add(mengeBigDecimal);
|
||||||
|
}else if ("StockOut".equals(stockState)){
|
||||||
|
materialQuantityDecimal = mengeBigDecimal;
|
||||||
|
hashMap2.put("STOCKSTATE", "Stocked");
|
||||||
|
}
|
||||||
|
//保存要更新的MaterialPacking信息
|
||||||
|
materialQuantity = materialQuantityDecimal.toString();
|
||||||
|
hashMap2.put("materialQuantity", materialQuantity);
|
||||||
|
hashMap2.put("materialCreateQuantity", materialQuantity);
|
||||||
|
//hashMap2.put("unDoID", mblnr);
|
||||||
|
setEventInfo.setUserColumns(hashMap2);
|
||||||
|
setEventInfoList.add(setEventInfo);
|
||||||
|
MaterialPackingKey materialPackingKey = new MaterialPackingKey(siteName, materialPackingName);
|
||||||
|
materialPackingKeyList.add(materialPackingKey);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (queryMaterialpackingList.isEmpty()){
|
||||||
|
throw new Exception("物料:" + matnr + " " + werks + " " + lgort + " " + meins + "冲销失败");
|
||||||
|
}else {
|
||||||
|
MaterialPackingServiceProxy.getMaterialPackingService().setEvent(materialPackingKeyList, eventInfo, setEventInfoList);
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
throw new Exception("不属于物料消耗261、262的移动类型,请确认");
|
||||||
|
}
|
||||||
|
checkBwart = bwart;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user