231 lines
11 KiB
Java
231 lines
11 KiB
Java
![]() |
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);
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
|