2025-03-JS-SDK-svr/zi-wms-pda/src/main/java/com/cim/idm/controller/PalletStockInAndOutController.java
2025-05-21 13:33:02 +08:00

687 lines
32 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.cim.idm.controller;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
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.BaseEntity;
import com.cim.idm.model.ErpMessageLog;
import com.cim.idm.model.MaterialPacking;
import com.cim.idm.model.PalletDto;
import com.cim.idm.utils.AjaxResult;
import com.cim.idm.utils.CommonUtils;
import com.cim.idm.wmsextend.generic.errorHandler.CustomException;
import com.cim.idm.wmsextend.generic.util.ConvertUtil;
import com.cim.idm.wmspackage.materialpacking.MaterialPackingServiceProxy;
import com.cim.idm.wmspackage.materialpacking.management.data.MaterialPackingKey;
import com.cim.idm.wmspackage.materialpacking.management.info.CreateInfo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;
@RestController
@RequestMapping("/api/wms")
@EnableAutoConfiguration
public class PalletStockInAndOutController {
@Autowired
private com.cim.idm.service.Impl.ProductIntoServiceImpl ProductIntoServiceImpl;
@Autowired
private com.cim.idm.service.Impl.InvoiceServiceImpl InvoiceServiceImpl;
CommonUtils untils=new CommonUtils();
private static final Logger log = LoggerFactory.getLogger(PalletStockInAndOutController.class);
@RequestMapping(value = "/syncMesData", method = RequestMethod.POST)
public AjaxResult syncMesData(@RequestBody JSONObject in) {
log.debug("***********************************");
log.debug("***********************************");
log.debug(in.toString());
log.debug("***********************************");
log.debug("***********************************");
AjaxResult result = new AjaxResult();
ErpMessageLog loginfo = new ErpMessageLog();
loginfo.setServerName("MesToWms");
loginfo.setMessageId("");
loginfo.setEventUser(in.getString("user"));
loginfo.setId(UUID.randomUUID().toString());
loginfo.setInterfaceTime(ConvertUtil.getCurrTime("yyy-MM-dd HH:mm:ss"));
loginfo.setSendMsg(in.toJSONString());
try {
String messagetype = in.get("messagetype").toString();
loginfo.setEventName(String.format("%s", messagetype));
switch (messagetype) {
case "STOCKINPALLET" : // 托盘入库
BaseEntity<PalletDto> PalletInDto = JSONObject.parseObject(in.toJSONString(),
new TypeReference<BaseEntity<PalletDto>>() {
});
stockInPallet(PalletInDto);
break;
case "STOCKOUTPALLET" : // 托盘出库
BaseEntity<PalletDto> PalletOutDto = JSONObject.parseObject(in.toJSONString(),
new TypeReference<BaseEntity<PalletDto>>() {
});
stockOutPallet(PalletOutDto);
break;
default :
break;
}
result = AjaxResult.me().setSuccess(true).setMessage("执行成功");
loginfo.setResultCode("success");
loginfo.setReturnMsg(JSONObject.toJSONString(result));
// 消息保存日志Mes推送wms的数据写入表BS_ERPMESSAGELOG中
saveMessageLog(loginfo);
return result;
} catch (Exception e) {
result = AjaxResult.me().setSuccess(false).setErrorCode(500).setMessage(e.getMessage());
loginfo.setResultCode("fail");
loginfo.setReturnMsg(JSONObject.toJSONString(result));
saveMessageLog(loginfo);
return result;
}
}
/**
* 托盘入库
* @param PalletDto
* @throws Exception
*/
private void stockInPallet(BaseEntity<PalletDto> PalletDto) throws Exception {
try {
// String commitDate = PalletDto.getTime();
SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
Date datea = null;
datea = inputFormat.parse(PalletDto.getTime());
String commitDate = outputFormat.format(datea);
for (PalletDto palletDto : PalletDto.getBody()) {
String palletname = palletDto.getPALLETNAME();//栈板
String materialspecname = palletDto.getMATERIALSPECNAME();//料号
String erpfactory = palletDto.getERPFACTORY();//组织
String erplocation = palletDto.getERPLOCATION();//仓库
String locationname = palletDto.getLOCATIONNAME();//货位
String oqaresult = palletDto.getOQARESULT();//质检结果
String indate = palletDto.getINDATE();//入库日期
String phase = palletDto.getPHASE();//阶段
String planorder = palletDto.getPLANORDER();//投放计划
String productorder = palletDto.getPRODUCTORDER();//生产订单
String receiverequestname = palletDto.getRECEIVEREQUESTNAME();//完工报告
String remark = palletDto.getREMARK();//备注
String sdk_ID = palletDto.getSDK_ID();//SDK规格
String shiprequestdetailname = palletDto.getSHIPREQUESTDETAILNAME();//发货单行号
String shiprequestname = palletDto.getSHIPREQUESTNAME();//发货单
// String user = palletDto.getUSER();//作业人
// String opCode = palletDto.getOpCode();
String ReceiveRequestActNo = null;
List<MaterialPacking> detail = palletDto.getDetail();
String opCode = palletDto.getOpCode() == null ? "" : palletDto.getOpCode().toString();
String user = palletDto.getUSER() == null ? "" : palletDto.getUSER().toString();
if ("".equals(opCode) || opCode == null) {
String sql = "SELECT :USER || '-' || NCDATA_IDX.NEXTVAL ID FROM DUAL";
Map<String, Object> hashMap = new HashMap<String,Object> ();
hashMap.put("USER", user);
List<Map<String, Object>> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql, hashMap);
opCode = queryForList.get(0).get("ID").toString();
}
List<com.cim.idm.wmspackage.materialpacking.management.data.MaterialPacking> mpkeyList = new ArrayList<com.cim.idm.wmspackage.materialpacking.management.data.MaterialPacking> ();
for (MaterialPacking materialPacking : detail) {
untils.IsAtMaterialPacking(materialPacking.getMaterialPackingName(),erpfactory,erplocation,locationname,materialspecname);
com.cim.idm.wmspackage.materialpacking.management.data.MaterialPacking materialPacking2 = new com.cim.idm.wmspackage.materialpacking.management.data.MaterialPacking();
materialPacking2.setKey(new MaterialPackingKey("SDK",materialPacking.getMaterialPackingName()));
materialPacking2.setErpFactory(erpfactory);
materialPacking2.setErpLocation(erplocation);
materialPacking2.setLocationName(locationname);
// materialPacking2.setMaterialSpecName(materialspecname);
materialPacking2.setMaterialPackingName(materialPacking.getMaterialPackingName());
mpkeyList.add(materialPacking2);
}
//List<com.cim.idm.wmspackage.materialpacking.management.data.MaterialPacking> selectByKey = MaterialPackingServiceProxy.getMaterialPackingService().selectByKey(mpkeyList);
// List<com.cim.idm.wmspackage.materialpacking.management.data.MaterialPacking> detail = palletDto.getDetail();
// ProductIntoServiceImpl.fgStockInNew(mpkeyList, user, ReceiveRequestActNo, commitDate, opCode);
ProductIntoServiceImpl.fgStockInByManul(mpkeyList, user, ReceiveRequestActNo, commitDate, opCode);
// java.util.Calendar c = java.util.Calendar.getInstance();
// java.text.SimpleDateFormat f = new java.text.SimpleDateFormat(
// "yyyyMMdd");
//
// List<String> args = new ArrayList<String>();
// String actType1 = "F";
// String siteName = "SH";
// args.add(siteName);
// args.add(actType1);
// args.add(f.format(c.getTime()));
// String ReceiveRequestActNo;
//
// ReceiveRequestActNo = NameServiceProxy.getNameRuleDefService()
// .generateName("ReceiveActNo", args, 1).get(0);
//
// String pc = "(";
// for (MaterialPacking materialPacking : detail) {
//// "MATERIALPACKINGNAME": "箱标签",
//// "CHARGE": "箱批次",
//// "MATERIALQUANTITY": "数量",
//// "UNIT": "单位",
//// "OQARESULT" : "品质结果"
// String materialPackingName = materialPacking.getMaterialPackingName();
// String charge = materialPacking.getCharge();
// String materialQuantity = materialPacking.getMaterialQuantity();
// String unit = materialPacking.getUnit();
// String oqaResult2 = materialPacking.getOqaResult();
//
// String salesPerson = materialPacking.getSalesPerson(); // 业务
// String career_assistance = materialPacking.getCareer_assistance();
// String business_unit = materialPacking.getBusiness_unit();
// String durableType = materialPacking.getDurableType();
//
// pc += "'" + materialPackingName + "', ";
//
// //根据入库信息获取完工报告
// String sql3 = "SELECT\r\n" +
// " M.RECEIVEREQUESTNAME,\r\n" +
// " M.RECEIVEREQUESTDETAILNAME\r\n" +
// "FROM\r\n" +
// " MATERIALRECEIVEREQUESTDETAIL M\r\n" +
// "WHERE\r\n" +
// " (M.RECEIVEREQUESTNAME = :RECEIVEREQUESTNAME OR M.PRODUCTORDER = :RECEIVEREQUESTNAME OR M.PLANORDER = :RECEIVEREQUESTNAME)\r\n" +
// " AND M.MATERIALSPECNAME = :MATERIALSPECNAME ";
// Map<String, Object> bindMap = new HashMap<String, Object>();
// bindMap.put("RECEIVEREQUESTNAME",receiverequestname);
// bindMap.put("MATERIALSPECNAME",materialspecname);
// List<Map<String, Object>> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql3, bindMap);
// if (queryForList == null || queryForList.size() < 1) {
// throw new GlobalException("生产报告未完成,请联系IT处理");
// }
// EventInfo makeEventInfo = new EventInfoUtil().makeEventInfo("createfgBoxInfo", user, "createfgBoxInfo", "", "");
//// try {
//// ProductIntoServiceImpl.CreateMaterialReceiveRequestAct
//// (makeEventInfo, "SDK", queryForList.get(0).get("RECEIVEREQUESTNAME").toString(),
//// queryForList.get(0).get("RECEIVEREQUESTDETAILNAME").toString(), indate,
//// ReceiveRequestActNo, "Normal", materialQuantity, materialspecname);
//// } catch (CustomException | ParseException e) {
//// // TODO Auto-generated catch block
//// e.printStackTrace();
//// throw new GlobalException(e.toString());
//// }
//
// receivePalletStockIn(makeEventInfo, "SDK", materialPackingName, charge,materialQuantity,sdk_ID,remark,materialspecname,"",user,
// palletname, ReceiveRequestActNo, oqaresult,phase,unit,indate,erplocation, erpfactory, locationname,queryForList.get(0).get("RECEIVEREQUESTNAME").toString(), queryForList.get(0).get("RECEIVEREQUESTDETAILNAME").toString(),
// salesPerson,career_assistance,business_unit,durableType);
//
// }
// pc += "'')";
//
//// boolean fgStockIn = ProductIntoServiceImpl.fgStockIn(ReceiveRequestActNo, user,commitDate);
// boolean fgStockIn = ProductIntoServiceImpl.fgStockIn(pc, user,commitDate,opCode);
// if (!fgStockIn) {
// throw new GlobalException("报送ERP失败,请联系IT处理");
// }
}
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
public static boolean receivePalletStockIn(EventInfo eventInfo,String siteName,String materialPackingName,String Charge,String qty,
String sdk_ID,String remark,String materilSpecName,
String durableName,String user,String palletName,String receiveActNo,String oqaresult,String phase,String unit,String indate,
String erpLocation,String erpFactory,String locationName,String receiveRequestName, String receiveRequestDetailName,
String salesPerson,String career_assistance,String business_unit,String durableType) {
StringBuffer sql = new StringBuffer();
sql.append(" SELECT * FROM MATERIALPACKING WHERE MATERIALPACKINGNAME = :MATERIALPACKINGNAME");
Map<String, Object> hashMap = new HashMap<String,Object> ();
hashMap.put("MATERIALPACKINGNAME", materialPackingName);
List<Map<String, Object>> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql.toString(), hashMap);
if(queryForList != null && queryForList.size() > 1) {
new CustomException("批次已入库");
}
//入库信息存入库存表
CreateInfo createInfo = new CreateInfo();
createInfo.setSiteName(siteName);
createInfo.setMaterialPackingName(materialPackingName);// 新生成的box id
createInfo.setMaterialPackingType("Box");
createInfo.setContentMaterialType("");
Map<String, Object> bindMap = new HashMap<String, Object>();
bindMap.put("superMaterialPackingName", palletName);
bindMap.put("MaterialType", "");
bindMap.put("MaterialSpecName", materilSpecName);
if ("".equals(oqaresult) || oqaresult == null) {
bindMap.put("oqaResultState", "");
} else {
bindMap.put("oqaResultState", "END");
}
bindMap.put("oqaResult", oqaresult);
bindMap.put("PackingGrade", oqaresult);
bindMap.put("SubPackingQuantity",qty);
bindMap.put("MaterialCreateQuantity",qty);
bindMap.put("MaterialQuantity", qty);// 数量
bindMap.put("PackingState", "Released");
bindMap.put("OldPackingState", "Released");
bindMap.put("StockState", "Created");
bindMap.put("OldStockState", "Created");
bindMap.put("HoldState", "N");
bindMap.put("AreaName", "");
bindMap.put("unit", unit);
bindMap.put("LocationName", locationName);
bindMap.put("charge",Charge);
bindMap.put("DurableName", durableName);
bindMap.put("MaterialProcessGroupName","");
bindMap.put("LastEventTimeKey",TimeStampUtil.getCurrentEventTimeKey());
bindMap.put("ReceiveRequestName", receiveRequestName);
bindMap.put("ReceiveRequestDetailName",receiveRequestDetailName);
bindMap.put("MakeDate", indate);
// bindMap.put("expiringDate", getExpridate(queryForList.get(0).get("SHIPTIME").toString(), queryForList.get(0).get("MATERIALSPECNAME").toString()));
bindMap.put("expiringDate", getExpridate(indate, materilSpecName));
bindMap.put("ReceiveTime", eventInfo.getEventTime());
bindMap.put("ReceiveUser", eventInfo.getEventUser());
bindMap.put("ShipTime",indate);
bindMap.put("ShipUser",user);
bindMap.put("ErpLocation", erpLocation);
bindMap.put("ErpFactory", erpFactory);
bindMap.put("receiveActNo", receiveActNo);
bindMap.put("locationName", locationName);
bindMap.put("StockInType", "Normal");
bindMap.put("SDK_ID", sdk_ID);
bindMap.put("PHASE", phase);
bindMap.put("salesPerson", salesPerson);
bindMap.put("career_assistance", career_assistance);
bindMap.put("business_unit", business_unit);
bindMap.put("durableType", durableType);
createInfo.setUserColumns(bindMap);
MaterialPackingServiceProxy.getMaterialPackingService().create(
eventInfo, createInfo);
return true;
}
public static String getExpridate(String makeDate,String materialSpecName) {
String sql = "SELECT NVL(T.EXPIRATIONDAY,180) + TO_TIMESTAMP(SUBSTR(:MAKEDATE,0,19),'YYYY-MM-DD HH24:MI:SS') EXP FROM MATERIALSPEC T WHERE T.MATERIALSPECNAME = :MATERIALSPECNAME";
Map<String, Object> hashMap = new HashMap<String,Object> ();
hashMap.put("MATERIALSPECNAME", materialSpecName);
hashMap.put("MAKEDATE", makeDate);
List<Map<String,Object>> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql, hashMap);
if (queryForList != null && queryForList.size() > 0) {
return queryForList.get(0).get("EXP").toString();
}
return "";
}
/**
* 托盘出库
* @param PalletDto
* @throws Exception
*/
private void stockOutPallet(BaseEntity<PalletDto> PalletDto) throws Exception {
try {
String commitDate = PalletDto.getTime();
String shipRequestName = "";
String opCode = "";
String user = "";
List<com.cim.idm.wmspackage.materialpacking.management.data.MaterialPacking> list = new ArrayList<> ();
for (PalletDto palletDto : PalletDto.getBody()) {
String palletname = palletDto.getPALLETNAME();//栈板
String materialspecname = palletDto.getMATERIALSPECNAME();//料号
String erpfactory = palletDto.getERPFACTORY();//组织
String erplocation = palletDto.getERPLOCATION();//仓库
String locationname = palletDto.getLOCATIONNAME();//货位
String oqaresult = palletDto.getOQARESULT();//质检结果
String indate = palletDto.getINDATE();//入库日期
String phase = palletDto.getPHASE() == null ? "" : palletDto.getPHASE();//阶段
// String planorder = palletDto.getPLANORDER();//投放计划
// String productorder = palletDto.getPRODUCTORDER();//生产订单
// String receiverequestname = palletDto.getRECEIVEREQUESTNAME();//完工报告
String remark = palletDto.getREMARK();//备注
String sdk_ID = (palletDto.getSDK_ID() == null || "~".equals(palletDto.getSDK_ID().toString())) ? "" : palletDto.getSDK_ID().toString(); //SDK规格
String shiprequestdetailname = palletDto.getSHIPREQUESTDETAILNAME();//发货单行号
shipRequestName = palletDto.getSHIPREQUESTNAME();//发货单
// String user = palletDto.getUSER();//作业人
// String opCode = palletDto.getOpCode() == null ? "" : palletDto.getOpCode();
opCode = palletDto.getOpCode() == null ? "" : palletDto.getOpCode().toString();
user = palletDto.getUSER() == null ? "" : palletDto.getUSER().toString();
if ("".equals(opCode) || opCode == null) {
String sql = "SELECT :USER || '-' || NCDATA_IDX.NEXTVAL ID FROM DUAL";
Map<String, Object> hashMap = new HashMap<String,Object> ();
hashMap.put("USER", user);
List<Map<String, Object>> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql, hashMap);
opCode = queryForList.get(0).get("ID").toString();
}
List<MaterialPacking> detail = palletDto.getDetail();
for (MaterialPacking materialPacking : detail) {
// "MATERIALPACKINGNAME": "箱标签",
// "CHARGE": "箱批次",
// "MATERIALQUANTITY": "数量",
// "UNIT": "单位",
// "OQARESULT" : "品质结果"
String materialPackingName = materialPacking.getMaterialPackingName();
com.cim.idm.wmspackage.materialpacking.management.data.MaterialPacking selectByKey = MaterialPackingServiceProxy.getMaterialPackingService().selectByKey(new MaterialPackingKey("SDK", materialPackingName));
if(selectByKey == null) {
throw new CustomException("找不到出库单据里的条码" + materialPackingName);
}
Double fgetMaterialQuantity = Double.parseDouble(materialPacking.getMaterialQuantity());
selectByKey.setMaterialQuantity2(fgetMaterialQuantity);
list.add(selectByKey);
String charge = materialPacking.getCharge();
String unit = materialPacking.getUnit();
String oqaResult2 = materialPacking.getOqaResult();
String materialQuantity = materialPacking.getMaterialQuantity();
String materialQuantity2 = materialQuantity;
String salesPerson = materialPacking.getSalesPerson(); // 业务
String career_assistance = materialPacking.getCareer_assistance();
String business_unit = materialPacking.getBusiness_unit();
String durableType = materialPacking.getDurableType();
stockOutPalletDessignOrAssign(materialPackingName,materialspecname,shipRequestName,materialQuantity,materialQuantity2,sdk_ID,phase,user);
}
String shipRequestType;
String sql = "SELECT m.SHIPREQUESTTYPE FROM MATERIALSHIPREQUEST m WHERE m.SHIPREQUESTNAME = :SHIPREQUESTNAME";
Map<String, Object> hashMap = new HashMap<String,Object> ();
hashMap.put("SHIPREQUESTNAME", shipRequestName);
List<Map<String, Object>> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql, hashMap);
if (queryForList != null && queryForList.size() > 0) {
String type = queryForList.get(0).get("SHIPREQUESTTYPE").toString();
shipRequestType = type;
} else {
throw new CustomException("找不到出库单据" + shipRequestName);
}
// if ("4Y".equals(shipRequestType)) {
// String ncSql = "SELECT\r\n" +
// " NCDATA_IDX.NEXTVAL ID,\r\n" +
// " '' PrintBatch,\r\n" +
// " m.MATERIALPACKINGNAME Barcode,\r\n" +
// " 'transOut' PrintType,\r\n" +
// " m.shiprequestname SourceOrder,\r\n" +
// " T.BILLPK SourceOrderId,\r\n" +
// " T.DATAPK SourceAutoid, \r\n" +
// " T.PK_ORG OrgCode,\r\n" +
// " T.PK_MATE MaterialId,\r\n" +
// " T.INVCODE MaterialCode,\r\n" +
// " T.PK_STAGE StageId,\r\n" +
// " T.INVSTAGE StageCode,\r\n" +
// " T.BillCode WorkPlant,\r\n" +
// " '' WorkShop,\r\n" +
// " '' WorkShift,\r\n" +
// " '' Machine,\r\n" +
// " '' VolNumber,\r\n" +
// " '' SupCode,\r\n" +
// " '' CustomerCode,\r\n" +
// " '' SupBarcode,\r\n" +
// " '' CusBarcode,\r\n" +
// " T.INVNAME MaterialName,\r\n" +
// " T.MATERIALSPEC Specifications,\r\n" +
// " T.PK_SIZE SDKSpecificationsId,\r\n" +
// " T.INVSIZE SDKSpecifications,\r\n" +
// " M.CHARGE Batch,\r\n" +
// " '' JumboRollBatch,\r\n" +
// " m.MAKEDATE BatchDate,\r\n" +
// " SYSDATE PrintBatchDate,\r\n" +
// " m.MAKEDATE ProductDate,\r\n" +
// " m.EXPIRINGDATE ExpiryDate,\r\n" +
// " T.UNAME MainUom,\r\n" +
// " DECODE(m.MATERIALQUANTITY2,0, m.MATERIALQUANTITY,m.MATERIALQUANTITY2) MainQty,\r\n" +
// " m.FUNIT AssistUom,\r\n" +
// " NVL(m.FQTY, 0) AssistQty,\r\n" +
// " m.TRUEGG PracticalSpec,\r\n" +
// " 1 PrintQty,\r\n" +
// " sysdate PrintDate,\r\n" +
// " LASTEVENTUSER Operator,\r\n" +
// " '' Salesman,\r\n" +
// " m.REMARK ,\r\n" +
// " '' DefineItem1,\r\n" +
// " '' DefineItem2,\r\n" +
// " '' DefineItem3,\r\n" +
// " '' DefineItem4,\r\n" +
// " '' DefineItem5,\r\n" +
// " '' DefineItem6,\r\n" +
// " '' DefineItem7,\r\n" +
// " '' DefineItem8,\r\n" +
// " '' DefineItem9,\r\n" +
// " '' DefineItem10,\r\n" +
// " '' DefineItem11,\r\n" +
// " '' DefineItem12,\r\n" +
// " '' DefineItem13,\r\n" +
// " '' DefineItem14,\r\n" +
// " '' DefineItem15,\r\n" +
// " '' DefineItem16,\r\n" +
// " '' DefineItem17,\r\n" +
// " '' DefineItem18,\r\n" +
// " '' DefineItem19,\r\n" +
// " '' DefineItem20,\r\n" +
// " CURRENT_TIMESTAMP Timestamp,\r\n" +
// " SYSDATE CreatedTime,\r\n" +
// " SYSDATE UpdatedTime,\r\n" +
// " '0' CreatedUserId,\r\n" +
// " '0' CreatedUserName,\r\n" +
// " '0' UpdatedUserId,\r\n" +
// " '0' UpdatedUserName,\r\n" +
// " '0' IsDeleted,\r\n" +
// " '0' TenantId,\r\n" +
// " '1' MaterialVersion,\r\n" +
// " '0' Piece,\r\n" +
// " '0' IsSame\r\n" +
// "FROM\r\n" +
// " MATERIALPACKING m\r\n" +
// "LEFT JOIN MATERIALSHIPREQUESTDETAIL m2 ON\r\n" +
// " m.SHIPREQUESTNAME = m2.SHIPREQUESTNAME\r\n" +
// " AND m.MATERIALSPECNAME = m2.MATERIALSPECNAME \r\n" +
// " AND m.SDK_ID = m2.SDK_ID \r\n" +
// " AND m.PHASE = m2.PHASE \r\n" +
// "LEFT JOIN VBC_TOBILL@NC_PRD T ON\r\n" +
// " m2.ERPDETAILID = T.DATAPK\r\n" +
// "WHERE\r\n" +
// " m.STOCKSTATE = 'Stocked'\r\n" +
// " AND T.BILLPK IS NOT NULL AND m.SHIPREQUESTNAME = ? AND m.MATERIALPACKINGNAME IN ";
// String str = "(";
// for (MaterialPacking m : detail) {
// str += "'" + m.getMaterialPackingName() + "',";
// }
// str += "'') ";
// List<NcDataDto> queryForList2 = IDMFrameServiceProxy.getSqlTemplate().getJdbcTemplate().query(ncSql + str, new Object[]{shipRequestName},
// new BeanPropertyRowMapper(NcDataDto.class));
// new Test().savePrintData(queryForList2);
// }
// List<com.cim.idm.wmspackage.materialpacking.management.data.MaterialPacking> list = detail;
}
String optRemark = "";
// InvoiceServiceImpl.SendERPStockOut20240802(shipRequestName, "SDK", user, list,commitDate, opCode, optRemark);
InvoiceServiceImpl.StockUpOutSendSAPOrMES(shipRequestName, "SDK", user, list,commitDate,opCode);
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
@Transactional
public void stockOutPalletDessignOrAssign(String materialPackingName,String materialSpecName,String shipRequestName,String materialQuantity,String materialQuantity2,String sdk_id,String phase,String user) throws CustomException {
// MaterialshipRequest materialShipRequest = JSON.toJavaObject(in, MaterialshipRequest.class);
String type = "Assign";
// String materialPackingName = materialShipRequest.getMaterialPackingName();//标签
// String materialSpecName = materialShipRequest.getMaterialSpecName();
// String shipRequestName = materialShipRequest.getShipRequestName();
// String materialQuantity = materialShipRequest.getMaterialQuantity();
// String materialQuantity2 = materialShipRequest.getMaterialQuantity2();
// String sdk_id = (materialShipRequest.getSdk_id() == null || "~".equals(materialShipRequest.getSdk_id().toString())) ? "" : materialShipRequest.getSdk_id();
// String phase = materialShipRequest.getPhase() == null ? "" : materialShipRequest.getPhase();
// String user = materialShipRequest.getUser();
//查询单据类型
String sql = "SELECT\r\n" +
" m.SHIPREQUESTTYPE ,\r\n" +
" m.SHIPREQUESTDETAILTYPE,\r\n" +
" t.MATERIALSPECNAME ,\r\n" +
" SUM(t.REQUESTQUANTITY - t.ASSIGNEDQUANTITY) MINUSQTY,t.SDK_ID,t.PHASE\r\n" +
"FROM\r\n" +
" MATERIALSHIPREQUESTDETAIL t\r\n" +
"LEFT JOIN MATERIALSHIPREQUEST m ON\r\n" +
" t.SHIPREQUESTNAME = m.SHIPREQUESTNAME\r\n" +
"WHERE\r\n" +
" m.SHIPREQUESTNAME = :SHIPREQUESTNAME\r\n" +
" AND t.MATERIALSPECNAME = :MATERIALSPECNAME\r\n" +
" AND (:SDK_ID IS NULL\r\n" +
" OR t.SDK_ID = :SDK_ID)\r\n" +
" AND (:PHASE IS NULL\r\n" +
" OR t.PHASE = :PHASE)\r\n" +
" GROUP BY m.SHIPREQUESTTYPE ,\r\n" +
" m.SHIPREQUESTDETAILTYPE,\r\n" +
" t.MATERIALSPECNAME,t.SDK_ID,t.PHASE\r\n" +
"ORDER BY\r\n" +
" t.MATERIALSPECNAME ,\r\n" +
" t.SDK_ID,\r\n" +
" t.PHASE";
Map<String, Object> hashMap = new HashMap<String,Object> ();
hashMap.put("SHIPREQUESTNAME", shipRequestName);
hashMap.put("MATERIALSPECNAME", materialSpecName);
hashMap.put("SDK_ID", sdk_id);
hashMap.put("PHASE", phase);
List<Map<String, Object>> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql, hashMap);
if(Objects.isNull(queryForList) || queryForList.isEmpty()) {
throw new CustomException("未找到对应的数据!");
}
String judge = "SELECT\r\n" +
" m.SDK_ID,MATERIALSPECNAME,\r\n" +
" m.PHASE,\r\n" +
" :MATERIALQUANTITY2 MATERIALQUANTITY2 , " +
" m.SHIPREQUESTNAME,\r\n" +
" m.STOCKSTATE,\r\n" +
" m.PACKINGGRADE ,\r\n" +
" CASE WHEN to_char(EXPIRINGDATE, 'yyyymmdd') >= to_char(SYSDATE, 'yyyymmdd') THEN 1\r\n" +
" ELSE 0 END EXP, OQARESULTSTATE \r\n" +
"FROM\r\n" +
" MATERIALPACKING m\r\n" +
"WHERE\r\n" +
" m.MATERIALPACKINGNAME = :MATERIALPACKINGNAME";
Map<String, Object> hashMap2 = new HashMap<String,Object> ();
hashMap2.put("MATERIALPACKINGNAME", materialPackingName);
hashMap2.put("MATERIALQUANTITY2", materialQuantity);
List<Map<String, Object>> queryForList2 = IDMFrameServiceProxy.getSqlTemplate().queryForList(judge, hashMap2);
if (queryForList2 != null && queryForList2.size() > 0) {
materialSpecName = queryForList2.get(0).get("MATERIALSPECNAME") == null ? "" : queryForList2.get(0).get("MATERIALSPECNAME").toString();
sdk_id = (queryForList2.get(0).get("SDK_ID") == null || "~".equals(sdk_id)) ? "" : queryForList2.get(0).get("SDK_ID").toString();
phase = queryForList2.get(0).get("PHASE") == null ? "" : queryForList2.get(0).get("PHASE").toString();
materialQuantity2 = queryForList2.get(0).get("MATERIALQUANTITY2") == null ? "" : queryForList2.get(0).get("MATERIALQUANTITY2").toString();
String invoice = queryForList2.get(0).get("SHIPREQUESTNAME") == null ? "" : queryForList2.get(0).get("SHIPREQUESTNAME").toString();
String stockState = queryForList2.get(0).get("STOCKSTATE") == null ? "" : queryForList2.get(0).get("STOCKSTATE").toString();
String packinggrade = queryForList2.get(0).get("PACKINGGRADE") == null ? "" : queryForList2.get(0).get("PACKINGGRADE").toString();
String exp = queryForList2.get(0).get("EXP") == null ? "" : queryForList2.get(0).get("EXP").toString();
String oqaresultstate = queryForList2.get(0).get("OQARESULTSTATE") == null ? "" : queryForList2.get(0).get("OQARESULTSTATE").toString();
if (!"Stocked".equals(stockState)) {
throw new CustomException("条码不在库!");
}
if (!"OK".equals(packinggrade)) {
throw new CustomException("批次不合格!");
}
if (!"1".equals(exp)) {
throw new CustomException("批次已过期!");
}
if (!"END".equals(oqaresultstate)) {
throw new CustomException("未完成质检!");
}
// if (!"".equals(invoice)) {
// return AjaxResult.me().setSuccess(false).setMessage("条码已被" + invoice + "备货!");
// }
} else {
throw new CustomException("未找到对应的条码!");
}
String shipRequestType = queryForList.get(0).get("SHIPREQUESTTYPE").toString();
String shipRequestDetailType = queryForList.get(0).get("SHIPREQUESTDETAILTYPE").toString();
String minusQty = queryForList.get(0).get("MINUSQTY").toString();
BigDecimal FmaterialQuantity = new BigDecimal(materialQuantity);
BigDecimal FminusQty = new BigDecimal(minusQty);
BigDecimal Fzero = new BigDecimal(0);
//"SHIPREQUESTDETAILTYPE": "4Y-Cxx-03",//跨组织领料调拨单
//"BLSQ4K".equals(shipRequestType) || "4Y".equals(shipRequestType) || "CKSQ4I".equals(shipRequestType)
int dy0 = FminusQty.compareTo(Fzero);
MaterialPackingKey materialPackingKey = new MaterialPackingKey("SDK",materialPackingName);
com.cim.idm.wmspackage.materialpacking.management.data.MaterialPacking selectByKey = MaterialPackingServiceProxy.getMaterialPackingService().selectByKey(materialPackingKey);
if ("Assign".equals(type)) {
System.out.println("4Y".equals(shipRequestType) + "*****************");
if ("4Y".equals(shipRequestType)) {//调拨单
if ( "4Y-Cxx-03".equals(shipRequestDetailType)) {
if (dy0 < 0) {//只能超发一个
throw new CustomException("只能超发一个不能出库了!");
}
}
} else if ("BLSQ4K".equals(shipRequestType)) {//领料
if (dy0 < 0) {//只能超发一个
throw new CustomException("只能超发一个不能出库了!");
}
} else if ("CKSQ4I".equals(shipRequestType)) { //其他出库
if (dy0 < 0) {//只能超发一个
throw new CustomException("只能超发一个不能出库了!");
}
} else if ("4C".equals(shipRequestType)) {
if (dy0 <= 0) {//只能超发一个
throw new CustomException("销售不允许超发!");
}
}else {
throw new CustomException("单据类型不正确!");
}
} else if ("Dessign".equals(type)) {
}
try {
InvoiceServiceImpl.ReserveByPallet(selectByKey, shipRequestName, materialSpecName,sdk_id, phase, type, "SDK", user,materialQuantity2,"Y");
} catch (CustomException e) {
e.printStackTrace();
AjaxResult.me().setSuccess(false).setMessage(e.toString());
}
}
public static void saveMessageLog(ErpMessageLog log) {
String sql = "INSERT INTO BS_ERPMESSAGELOG(INTERFACETIME,SERVERNAME, EVENTNAME, EVENTTIMEKEY, EVENTUSER, MESSAGELOG,RESULTCODE,MESSAGEID,RESULTMESSAGE,MESSAGELOG2,RESULTMESSAGE2)\r\n"
+ "VALUES(TO_DATE(:INTERFACETIME,'yyyy-mm-dd hh24:mi:ss'),:SERVERNAME, :EVENTNAME, :EVENTTIMEKEY, :EVENTUSER, :MESSAGELOG,:RESULTCODE,:MESSAGEID,:RESULTMESSAGE,:MESSAGELOG2,:RESULTMESSAGE2)";
Map<String, Object> bindMap = new HashMap<String, Object>();
bindMap.put("SERVERNAME", log.getServerName());
bindMap.put("EVENTNAME", log.getEventName());
bindMap.put("EVENTTIMEKEY", log.getId());
bindMap.put("EVENTUSER", log.getEventUser());
bindMap.put("MESSAGEID", log.getMessageId());
bindMap.put("INTERFACETIME", log.getInterfaceTime());
bindMap.put("RESULTCODE", log.getResultCode());
bindMap.put("MESSAGELOG", log.getSendMsg());// 推送ERP的json
bindMap.put("RESULTMESSAGE", log.getReturnMsg());// 返回结果的json
bindMap.put("MESSAGELOG2", log.getSendMsg2());// 推送ERP的json
bindMap.put("RESULTMESSAGE2", log.getReturnMsg2());// 返回结果的json
IDMFrameServiceProxy.getSqlTemplate().update(sql, bindMap);
}
}