李兴辉 8fdb3d0e90 init
2025-03-10 13:46:51 +08:00

231 lines
11 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.cim.idm.framework.IDMFrameServiceProxy;
import com.cim.idm.framework.data.EventInfo;
import com.cim.idm.framework.template.workflow.BpelExecuter;
import com.cim.idm.model.BarCodeDto;
import com.cim.idm.model.ErpMessageLog;
import com.cim.idm.utils.AjaxResult;
import com.cim.idm.utils.BarCodeAnalyUtils;
import com.cim.idm.utils.EventInfoUtil;
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 com.cim.idm.wmspackage.materialpacking.management.info.SetEventInfo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
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.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
@RestController
@RequestMapping("/api/wms")
@EnableAutoConfiguration
public class WCSController {
@Autowired(required = false)
private BpelExecuter bpelExecuter;
private static final Logger log = LoggerFactory.getLogger(WCSController.class);
@RequestMapping(value = "/TransportCommandCompleted", method = RequestMethod.POST)
public String SyncErpData(@RequestBody JSONObject in) {
log.debug("***********************************");
log.debug("***********************************");
log.debug(in.toString());
log.debug("***********************************");
log.debug("***********************************");
// {"PALLETNAME":"470110856|1|C|75mm*1000m|SHBP01JT12023052400092|20230524|11|75","SHELFNAME":"F-11-01-01","TRAYNAME":"050101","TRANSPORTCOMMANDID":"TRANS202405010925233345514","WEIGHT":"0","TRANSPORTCOMMANDTYPE":"IN"}
// TRANSPORTCOMMANDTYPE
// TRANSPORTCOMMANDID
// TRAYNAME
// PALLETNAME
// SHELFNAME
// TRANSPORTCOMMANDID
// RETURNCODE
// RETURNMESSAGE
//通过ID获取立库的货区托盘库的货区不自动解绑AGV的要更新货区跟托盘字段
String TRANSPORTCOMMANDTYPE = in.get("TRANSPORTCOMMANDTYPE") == null ? "" : in.get("TRANSPORTCOMMANDTYPE") .toString();
String TRANSPORTCOMMANDID = in.get("TRANSPORTCOMMANDID") == null ? "" : in.get("TRANSPORTCOMMANDID").toString();
String TRAYNAME = in.get("TRAYNAME") == null ? "" : in.get("TRAYNAME").toString();
AjaxResult result = new AjaxResult();
ErpMessageLog loginfo = new ErpMessageLog();
loginfo.setServerName("WCSToWms");
loginfo.setMessageId("");
loginfo.setEventName("WCS" + TRANSPORTCOMMANDTYPE);
loginfo.setEventUser("WCS");
loginfo.setId(UUID.randomUUID().toString());
loginfo.setInterfaceTime(ConvertUtil.getCurrTime("yyy-MM-dd HH:mm:ss"));
loginfo.setSendMsg(in.toJSONString());
result = AjaxResult.me().setSuccess(true).setMessage("执行成功");
loginfo.setResultCode("success");
loginfo.setReturnMsg(JSONObject.toJSONString(result));
saveMessageLog(loginfo);
String SHELFNAME = in.get("SHELFNAME") == null ? "" : in.get("SHELFNAME").toString();
String PALLETNAME = in.get("PALLETNAME") == null ? "" : in.get("PALLETNAME").toString();
//判断是否是WMS下任务给立库如果是则根据ID去更新状态如果不是需要根据货位去判断是出库还是入库
if (!"".equals(TRANSPORTCOMMANDID)) {
String sql = "SELECT T.ISAGV,M.TRANSPORTCOMMANDDETAILTYPE,T.INDESTINATION,T.OUTDESTINATION FROM TRANSPORTCOMMANDDETAIL T "
+ "LEFT JOIN TRANSPORTCOMMAND M ON T.TRANSPORTCOMMANDID = M.TRANSPORTCOMMANDID WHERE T.TRANSPORTCOMMANDID = :TRANSPORTCOMMANDID";
Map<String, Object> hashMap2 = new HashMap<String,Object> ();
hashMap2.put("TRANSPORTCOMMANDID", TRANSPORTCOMMANDID);
String INDESTINATION = "";
String ISAGV = "";
String OUTDESTINATION = "";
List<Map<String,Object>> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql, hashMap2);
if (queryForList != null && queryForList.size() > 0) {
OUTDESTINATION = queryForList.get(0).get("OUTDESTINATION") == null ? "" : queryForList.get(0).get("OUTDESTINATION").toString();
ISAGV = queryForList.get(0).get("ISAGV") == null ? "" : queryForList.get(0).get("ISAGV").toString();
INDESTINATION = queryForList.get(0).get("INDESTINATION") == null ? "" : queryForList.get(0).get("INDESTINATION").toString();
}
Map<String, Object> hashMap = new HashMap<String,Object> ();
Map<String, Object> bmap = new HashMap<String,Object> ();
hashMap.put("shelfName", SHELFNAME);
bmap.put("shelfName", SHELFNAME);
if (!"".equals(SHELFNAME)) {
hashMap.put("areaName", SHELFNAME.substring(0, 1));
bmap.put("areaName", SHELFNAME.substring(0, 1));
}
if ("OUT".equals(TRANSPORTCOMMANDTYPE) && !"E".equals(OUTDESTINATION)) {
hashMap.put("durableName", "");
hashMap.put("areaName", "");
bmap.put("durableName", "");
bmap.put("areaName", "");
}
if (("IN".equals(TRANSPORTCOMMANDTYPE) || "MOVE".equals(TRANSPORTCOMMANDTYPE)) ) {
hashMap.put("durableName", TRAYNAME);
hashMap.put("areaName", SHELFNAME.substring(0, 1));
bmap.put("durableName", TRAYNAME);
bmap.put("areaName", SHELFNAME.substring(0, 1));
}
String[] palletArr = PALLETNAME.split(";");
for (String pallet : palletArr) {
try {
// MaterialPackingKey materialPackingKey = new MaterialPackingKey("SDK",pallet);
EventInfo makeEventInfo = new EventInfoUtil().makeEventInfo("WCSStockTo" + TRANSPORTCOMMANDTYPE, "WCS", "WCSStockTo" + TRANSPORTCOMMANDTYPE);
SetEventInfo setEventInfo = new SetEventInfo();
setEventInfo.setUserColumns(hashMap);
// MaterialPackingServiceProxy.getMaterialPackingService().setEvent(materialPackingKey, makeEventInfo, setEventInfo);
//修改更新方法
BarCodeDto barCodeDto = BarCodeAnalyUtils.AnalyBarCode(pallet);
if (barCodeDto != null) {
String materialSpecName = barCodeDto.getMaterialSpecName();
String charge = barCodeDto.getCharge();
MaterialPacking barCodeByMaterialPackingId = BarCodeAnalyUtils.getBarCodeByMaterialPackingId(materialSpecName, charge);
if (barCodeByMaterialPackingId != null) {
MaterialPackingKey key = barCodeByMaterialPackingId.getKey();
MaterialPackingServiceProxy.getMaterialPackingService().setEvent(key, makeEventInfo, setEventInfo);
}
}
} catch (Exception e) {
// TODO: handle exception
}
bmap.put("PALLETNAME", pallet);
String sql22 = "UPDATE BS_MES_SHIPPED T SET T.LK_AREANAME = :areaName,T.LK_SHELFNAME = :shelfName, T.LK_DURABLENAME = :durableName WHERE T.LOTNAME = :PALLETNAME ";
IDMFrameServiceProxy.getSqlTemplate().update(sql22, bmap);
}
//更新任务状态
String updateSql = "UPDATE TRANSPORTCOMMAND T SET T.STATE = 'Completed' WHERE T.TRANSPORTCOMMANDID = :TRANSPORTCOMMANDID";
IDMFrameServiceProxy.getSqlTemplate().update(updateSql, hashMap2);
} else {
//{"PALLETNAME":"302110849|1|S|1900mm|24-10-31-SHJC07-A003|20241031|11|6954;","SHELFNAME":"C-01-09-01","TRAYNAME":"400644","WEIGHT":"0"}
String chk = "SELECT PORTNO,PORTNAME,AREANAME FROM PORT WHERE PORTNO = :PORT";
Map<String, Object> hashMap = new HashMap<String,Object> ();
hashMap.put("PORT", SHELFNAME);
List<Map<String, Object>> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(chk, hashMap);
Map<String, Object> uMap = new HashMap<String,Object> ();
Map<String, Object> bmap = new HashMap<String,Object> ();
//出库过滤掉托盘库 E-00-01-02 E-00-01-01
if (queryForList != null && queryForList.size() > 0) {//出库
if (!" E-00-01-02".equals(SHELFNAME) && ! "E-00-01-01".equals(SHELFNAME)) {
uMap.put("shelfName", "");
uMap.put("durableName", "");
uMap.put("areaName", "");
bmap.put("shelfName", "");
bmap.put("durableName", "");
bmap.put("areaName", "");
}
} else {
uMap.put("durableName", TRAYNAME);
uMap.put("shelfName", SHELFNAME);
bmap.put("durableName", TRAYNAME);
bmap.put("shelfName", SHELFNAME);
if (!"".equals(SHELFNAME)) {
uMap.put("areaName", SHELFNAME.substring(0, 1));
bmap.put("areaName", SHELFNAME.substring(0, 1));
}
}
String[] palletArr = PALLETNAME.split(";");
for (String pallet : palletArr) {
try {
// MaterialPackingKey materialPackingKey = new MaterialPackingKey("SDK",pallet);
EventInfo makeEventInfo = new EventInfoUtil().makeEventInfo("WCSStockTo" + TRANSPORTCOMMANDTYPE, "WCS", "WCSStockTo" + TRANSPORTCOMMANDTYPE);
SetEventInfo setEventInfo = new SetEventInfo();
setEventInfo.setUserColumns(hashMap);
// MaterialPackingServiceProxy.getMaterialPackingService().setEvent(materialPackingKey, makeEventInfo, setEventInfo);
//修改更新方法
BarCodeDto barCodeDto = BarCodeAnalyUtils.AnalyBarCode(pallet);
if (barCodeDto != null) {
String materialSpecName = barCodeDto.getMaterialSpecName();
String charge = barCodeDto.getCharge();
MaterialPacking barCodeByMaterialPackingId = BarCodeAnalyUtils.getBarCodeByMaterialPackingId(materialSpecName, charge);
if (barCodeByMaterialPackingId != null) {
MaterialPackingKey key = barCodeByMaterialPackingId.getKey();
MaterialPackingServiceProxy.getMaterialPackingService().setEvent(key, makeEventInfo, setEventInfo);
}
}
} catch (Exception e) {
// TODO: handle exception
}
bmap.put("PALLETNAME", pallet);
String sql = "UPDATE BS_MES_SHIPPED T SET T.LK_AREANAME = :areaName,T.LK_SHELFNAME = :shelfName, T.LK_DURABLENAME = :durableName WHERE T.LOTNAME = :PALLETNAME ";
IDMFrameServiceProxy.getSqlTemplate().update(sql, bmap);
}
}
JSONObject body = new JSONObject(true);
body.put("TRANSPORTCOMMANDID",in.get("TRANSPORTCOMMANDID"));
body.put("RETURNCODE","200");
body.put("RETURNMESSAGE","");
return body.toJSONString();
}
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);
}
}