Compare commits
2 Commits
04149428a7
...
939b3aed5b
Author | SHA1 | Date | |
---|---|---|---|
939b3aed5b | |||
e873887b32 |
@ -137,6 +137,8 @@ public class MaterialPacking extends FieldAccessor implements DataInfo<MaterialP
|
|||||||
private String saleShipRequestName; // 销售订单号
|
private String saleShipRequestName; // 销售订单号
|
||||||
private String saleShipRequestDetailName; // 销售订单号行项
|
private String saleShipRequestDetailName; // 销售订单号行项
|
||||||
|
|
||||||
|
private String split; // 是否是拆分
|
||||||
|
|
||||||
public String getLastHoldUser() {
|
public String getLastHoldUser() {
|
||||||
return lastHoldUser;
|
return lastHoldUser;
|
||||||
}
|
}
|
||||||
@ -1030,6 +1032,14 @@ public class MaterialPacking extends FieldAccessor implements DataInfo<MaterialP
|
|||||||
this.saleShipRequestDetailName = saleShipRequestDetailName;
|
this.saleShipRequestDetailName = saleShipRequestDetailName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getSplit() {
|
||||||
|
return split;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSplit(String split) {
|
||||||
|
this.split = split;
|
||||||
|
}
|
||||||
|
|
||||||
public static class Field {
|
public static class Field {
|
||||||
public static final String messageID = "messageId";
|
public static final String messageID = "messageId";
|
||||||
}
|
}
|
||||||
|
@ -347,6 +347,153 @@ public class ToSAPServiceImpl {
|
|||||||
return undoId;
|
return undoId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 调拨出库、销售出库冲销过账
|
||||||
|
public String outOrderChancel(String shipRequestName, String siteName, String user,List<String> boxList,String commitDate) throws Exception {
|
||||||
|
String rcode;
|
||||||
|
String undoId = "";
|
||||||
|
String key01 = "";
|
||||||
|
String rmsg = null;
|
||||||
|
String sql=" SELECT \r\n" +
|
||||||
|
" count(*) AS ZROL, \r\n" +
|
||||||
|
" m1.SHIPREQUESTDETAILNAME , \r\n" +
|
||||||
|
" t.ERPLOCATION, \r\n" +
|
||||||
|
" sum(m.QTY)MATERIALQUANTITY \r\n" +
|
||||||
|
" FROM \r\n" +
|
||||||
|
" MATERIALPACKINGSUB m \r\n" +
|
||||||
|
" LEFT JOIN MATERIALPACKING T ON \r\n" +
|
||||||
|
" m.MATERIALPACKINGNAME = T.MATERIALPACKINGNAME AND m.RECEIVEREQUESTNAME = T.SHIPREQUESTNAME \r\n" +
|
||||||
|
" LEFT JOIN MATERIALSHIPREQUESTDETAIL M1 \r\n" +
|
||||||
|
" ON \r\n" +
|
||||||
|
" m.RECEIVEREQUESTNAME = M1.SHIPREQUESTNAME \r\n" +
|
||||||
|
" AND m.RECEIVEREQUESTDETAILNAME = M1.SHIPREQUESTDETAILNAME \r\n" +
|
||||||
|
" LEFT JOIN MATERIALSHIPREQUEST M2 \r\n" +
|
||||||
|
" ON \r\n" +
|
||||||
|
" M1.SHIPREQUESTNAME = M2.SHIPREQUESTNAME \r\n" +
|
||||||
|
" WHERE \r\n" +
|
||||||
|
" T.SHIPREQUESTNAME = :SHIPREQUESTNAME \r\n" +
|
||||||
|
" AND T.SITENAME = :SITENAME \r\n" +
|
||||||
|
" AND T.STOCKSTATE = 'StockOut' AND T.MATERIALPACKINGNAME IN (:BOXLIST)\r\n" +
|
||||||
|
" GROUP BY m1.SHIPREQUESTDETAILNAME , t.ERPLOCATION";
|
||||||
|
|
||||||
|
Map<String, Object> hashMap = new HashMap<String, Object>();
|
||||||
|
hashMap.put("SHIPREQUESTNAME", shipRequestName);
|
||||||
|
hashMap.put("SITENAME", siteName);
|
||||||
|
hashMap.put("BOXLIST", boxList);
|
||||||
|
List<Map<String, Object>> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql.toString(), hashMap);
|
||||||
|
try {
|
||||||
|
|
||||||
|
JSONObject sendData = new JSONObject(true);
|
||||||
|
JSONObject header = new JSONObject(true);
|
||||||
|
sendData.put("HEAD", header);
|
||||||
|
JSONObject body = new JSONObject(true);
|
||||||
|
sendData.put("BODY", body);
|
||||||
|
JSONArray itemArray = new JSONArray();
|
||||||
|
|
||||||
|
/*
|
||||||
|
HEAD
|
||||||
|
*/
|
||||||
|
header.put("DEST_SYSTEM", "SAP");
|
||||||
|
header.put("INTF_ID", "SD023");
|
||||||
|
header.put("SRC_SYSTEM", "WMS");
|
||||||
|
String uniqueID = UUID.randomUUID().toString();
|
||||||
|
header.put("SRC_MSGID", uniqueID);
|
||||||
|
header.put("BACKUP1", uniqueID);
|
||||||
|
header.put("BACKUP2", uniqueID);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
BODY
|
||||||
|
*/
|
||||||
|
//交货单号
|
||||||
|
body.put("VBELN", shipRequestName);
|
||||||
|
|
||||||
|
SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd");
|
||||||
|
SimpleDateFormat outputFormat = new SimpleDateFormat("yyyyMMdd");
|
||||||
|
Date date = inputFormat.parse(commitDate);
|
||||||
|
String outputDate = outputFormat.format(date);
|
||||||
|
//实际过账日期
|
||||||
|
body.put("WADAT_IST", outputDate);//yyyyMMddhhmmss
|
||||||
|
//发送日期
|
||||||
|
body.put("Z_SENDDATE", outputDate);
|
||||||
|
//操作类型(过账) 1、过账 2、冲销
|
||||||
|
body.put("Z_OPTION", "2");
|
||||||
|
|
||||||
|
if (queryForList.size() >= 1) {
|
||||||
|
for (Map<String, Object> mm : queryForList) {
|
||||||
|
JSONObject item = new JSONObject(true);
|
||||||
|
|
||||||
|
//交货单行号
|
||||||
|
item.put("POSNR", mm.get("SHIPREQUESTDETAILNAME"));
|
||||||
|
//交货数量
|
||||||
|
item.put("PIKMG", mm.get("MATERIALQUANTITY"));
|
||||||
|
//库存地点
|
||||||
|
item.put("LGORT", mm.get("ERPLOCATION"));
|
||||||
|
//实际发货卷数
|
||||||
|
item.put("Z_ROL", mm.get("ZROL"));
|
||||||
|
//实际发货平方米
|
||||||
|
item.put("Z_SQUE", mm.get("MATERIALQUANTITY"));
|
||||||
|
|
||||||
|
itemArray.add(item);
|
||||||
|
}
|
||||||
|
body.put("ITEMS", itemArray);
|
||||||
|
}else {
|
||||||
|
for (Map<String, Object> mm : queryForList) {
|
||||||
|
|
||||||
|
//交货单行号
|
||||||
|
body.put("POSNR", mm.get("SHIPREQUESTDETAILNAME"));
|
||||||
|
//交货数量
|
||||||
|
body.put("PIKMG", mm.get("MATERIALQUANTITY")); //SUM
|
||||||
|
//库存地点
|
||||||
|
body.put("LGORT", mm.get("ERPLOCATION"));
|
||||||
|
//实际发货卷数
|
||||||
|
body.put("Z_ROL", mm.get("ZROL")); //COUNT
|
||||||
|
//实际发货平方米
|
||||||
|
body.put("Z_SQUE", mm.get("MATERIALQUANTITY"));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// log.info("SendTOSAP >>>>" + sendData);
|
||||||
|
String sapreturn = toSAPMessageUtil.sendHttpPost(toSAPMessageUtil.DNUrl, "", sendData.toJSONString());
|
||||||
|
org.json.JSONObject receiveJsonObject = new org.json.JSONObject(sapreturn);
|
||||||
|
|
||||||
|
//销售交货单过账不返回物料凭证,且RETURN为JsonArray
|
||||||
|
org.json.JSONObject returnJsonObject = (org.json.JSONObject) receiveJsonObject.get("RETURN");
|
||||||
|
rcode = returnJsonObject.get("STATUS").toString();
|
||||||
|
rmsg = returnJsonObject.get("MSGTXT").toString();
|
||||||
|
key01 = returnJsonObject.get("KEY01") == null ? "" : returnJsonObject.get("KEY01").toString(); // 返回单号,后面用单号冲销
|
||||||
|
|
||||||
|
if ("S".equals(rcode)) {
|
||||||
|
if(key01.isEmpty()) {
|
||||||
|
undoId = "S";
|
||||||
|
}else {
|
||||||
|
undoId = key01;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
//将log写到表里
|
||||||
|
ErpMessageLog erplog = new ErpMessageLog();
|
||||||
|
erplog.setEventUser(user);
|
||||||
|
erplog.setServerName("WmsToErp");
|
||||||
|
erplog.setEventName("调拨出库和销售出库冲销");
|
||||||
|
erplog.setInterfaceTime(TimeStampUtil.getCurrentTime(TimeStampUtil.FORMAT_DEFAULT));
|
||||||
|
erplog.setMessageId(UUID.randomUUID().toString());
|
||||||
|
erplog.setSendMsg(sendData.toJSONString());
|
||||||
|
erplog.setSendMsg2(sendData.toJSONString());
|
||||||
|
erplog.setReturnMsg2(sapreturn);
|
||||||
|
erplog.setResultCode(rcode);
|
||||||
|
MessageLogUtil.writeMessageLog(erplog);
|
||||||
|
} catch (Exception e) {
|
||||||
|
// log.info(e.getMessage(), e);
|
||||||
|
throw new RuntimeException("SAP返回" + rmsg);
|
||||||
|
}
|
||||||
|
if (!"S".equals(rcode)) {
|
||||||
|
throw new RuntimeException("SAP返回" + rmsg);
|
||||||
|
}
|
||||||
|
return undoId;
|
||||||
|
}
|
||||||
|
|
||||||
// 取消物料入库凭证冲销
|
// 取消物料入库凭证冲销
|
||||||
public String cancelShipInter(String undoId, String user) throws Exception {
|
public String cancelShipInter(String undoId, String user) throws Exception {
|
||||||
|
|
||||||
|
@ -62,7 +62,7 @@ public class MESToWMSController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "取消物料入库请求")
|
@ApiOperation(value = "物料冲销接口请求")
|
||||||
@RequestMapping(value = "/meswms_cancelship_request", method = RequestMethod.POST)
|
@RequestMapping(value = "/meswms_cancelship_request", method = RequestMethod.POST)
|
||||||
public AjaxResult cancelShipByMES(@RequestBody JSONArray in) {
|
public AjaxResult cancelShipByMES(@RequestBody JSONArray in) {
|
||||||
log.info("Received cancel ship request: {}", in.toJSONString());
|
log.info("Received cancel ship request: {}", in.toJSONString());
|
||||||
|
@ -37,6 +37,7 @@ public class MaterialUndoController {
|
|||||||
String flag = undoDto.getFlag();
|
String flag = undoDto.getFlag();
|
||||||
String inv_TYPE = undoDto.getINV_TYPE();
|
String inv_TYPE = undoDto.getINV_TYPE();
|
||||||
String lastEventName = undoDto.getLastEventName();
|
String lastEventName = undoDto.getLastEventName();
|
||||||
|
String commitDate = undoDto.getCommitDate();
|
||||||
//根据物料凭证校验物料状态是否一致
|
//根据物料凭证校验物料状态是否一致
|
||||||
try {
|
try {
|
||||||
Boolean checkUndoCondition = untils.CheckUndoCondition(undoId);
|
Boolean checkUndoCondition = untils.CheckUndoCondition(undoId);
|
||||||
@ -74,7 +75,7 @@ public class MaterialUndoController {
|
|||||||
}else if(inv_TYPE.contains("ZK")) { // 转库
|
}else if(inv_TYPE.contains("ZK")) { // 转库
|
||||||
materialUndoServiceImpl.zkUndo(undoId, userId);
|
materialUndoServiceImpl.zkUndo(undoId, userId);
|
||||||
}else if(inv_TYPE.contains("NLCC") && lastEventName.contains("调拨出库")) { // 调拨出库
|
}else if(inv_TYPE.contains("NLCC") && lastEventName.contains("调拨出库")) { // 调拨出库
|
||||||
materialUndoServiceImpl.orderUndo(undoId, userId);
|
materialUndoServiceImpl.orderUndo(undoId, userId,commitDate);
|
||||||
}else {
|
}else {
|
||||||
return AjaxResult.me().setSuccess(false).setMessage("单据类型不支持冲销");
|
return AjaxResult.me().setSuccess(false).setMessage("单据类型不支持冲销");
|
||||||
}
|
}
|
||||||
|
@ -1,12 +1,15 @@
|
|||||||
package com.cim.idm.dao;
|
package com.cim.idm.dao;
|
||||||
|
|
||||||
|
|
||||||
|
import com.cim.idm.framework.IDMFrameServiceProxy;
|
||||||
import com.cim.idm.wmspackage.materialpacking.management.data.MaterialPacking;
|
import com.cim.idm.wmspackage.materialpacking.management.data.MaterialPacking;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
@Mapper
|
@Mapper
|
||||||
@ -14,6 +17,10 @@ public interface MaterialReversalDao {
|
|||||||
|
|
||||||
//更新冲销凭证为已冲销
|
//更新冲销凭证为已冲销
|
||||||
public static void updateReversalUnDoId(@Param("undoId") String undoId) throws Exception {
|
public static void updateReversalUnDoId(@Param("undoId") String undoId) throws Exception {
|
||||||
|
// String sql = "UPDATE IF_ERPUNDO T SET T.FLAG = 'Y' WHERE T.UNDOID = :UNDOID ";
|
||||||
|
String sql = "UPDATE BS_MATERIALPACKINGUNDOINFO T SET T.FLAG = 'Y' WHERE T.UNDOID = :UNDOID ";
|
||||||
|
Map<String, Object> hashMap2 = new HashMap<String, Object>();
|
||||||
|
hashMap2.put("UNDOID", undoId);
|
||||||
|
IDMFrameServiceProxy.getSqlTemplate().update(sql, hashMap2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,4 +15,5 @@ public class MaterialUndoDto {
|
|||||||
|
|
||||||
private String lastEventName;
|
private String lastEventName;
|
||||||
|
|
||||||
|
private String commitDate;
|
||||||
}
|
}
|
||||||
|
@ -801,6 +801,7 @@ public class InvoiceServiceImpl implements InvoiceService {
|
|||||||
bindMap.put("WEIGHT", WEIGHT);
|
bindMap.put("WEIGHT", WEIGHT);
|
||||||
bindMap.put("DIAMETER", DIAMETER);
|
bindMap.put("DIAMETER", DIAMETER);
|
||||||
bindMap.put("shelfName", shelfName);
|
bindMap.put("shelfName", shelfName);
|
||||||
|
bindMap.put("split", "Y");
|
||||||
createInfo1.setUserColumns(bindMap);
|
createInfo1.setUserColumns(bindMap);
|
||||||
|
|
||||||
MaterialPackingServiceProxy.getMaterialPackingService().create(makeEventInfo, createInfo1);
|
MaterialPackingServiceProxy.getMaterialPackingService().create(makeEventInfo, createInfo1);
|
||||||
|
@ -1153,7 +1153,7 @@ public class MaterialShipServiceImpl implements IMaterialShipService {
|
|||||||
}
|
}
|
||||||
//将log写到表里
|
//将log写到表里
|
||||||
ErpMessageLog erplog = new ErpMessageLog();
|
ErpMessageLog erplog = new ErpMessageLog();
|
||||||
erplog.setEventUser("");
|
erplog.setEventUser(user);
|
||||||
erplog.setServerName("WmsToErp");
|
erplog.setServerName("WmsToErp");
|
||||||
erplog.setEventName("辅材出库-调拨出库(NLCC)");
|
erplog.setEventName("辅材出库-调拨出库(NLCC)");
|
||||||
erplog.setInterfaceTime(TimeStampUtil.getCurrentTime(TimeStampUtil.FORMAT_DEFAULT));
|
erplog.setInterfaceTime(TimeStampUtil.getCurrentTime(TimeStampUtil.FORMAT_DEFAULT));
|
||||||
|
@ -18,6 +18,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -263,18 +264,24 @@ public class MaterialUndoServiceImpl implements IMaterialUndoService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
public void orderUndo (String undoId, String user) throws Exception {
|
public void orderUndo (String undoId, String user, String commitDate) throws Exception {
|
||||||
|
|
||||||
String billCode = toSAPService.cancelShipInter(undoId, user);
|
|
||||||
if (billCode == null) {
|
|
||||||
throw new GlobalException("报送ERP失败,请联系IT处理!");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
List<String> materialPackingKeyList = new ArrayList<>();
|
||||||
EventInfo makeEventInfo = new EventInfoUtil ().makeEventInfo("MakeUndo", user, "MakeUndo");
|
EventInfo makeEventInfo = new EventInfoUtil ().makeEventInfo("MakeUndo", user, "MakeUndo");
|
||||||
String condition="WHERE UNDOID =? ";
|
String condition="WHERE UNDOID =? ";
|
||||||
String[] bindSet={undoId};
|
String[] bindSet={undoId};
|
||||||
//根据物料凭证找到所有的待冲销数据,更新库存状态为创建
|
//根据物料凭证找到所有的待冲销数据,更新库存状态为创建
|
||||||
List<MaterialPacking> list = MaterialPackingServiceProxy.getMaterialPackingService().select(condition, bindSet);
|
List<MaterialPacking> list = MaterialPackingServiceProxy.getMaterialPackingService().select(condition, bindSet);
|
||||||
|
for (int i = 0; i < list.size(); ++ i) {
|
||||||
|
String materialPackingName = list.get(i).getMaterialPackingName();
|
||||||
|
materialPackingKeyList.add(materialPackingName);
|
||||||
|
}
|
||||||
|
String billCode = toSAPService.outOrderChancel(undoId, "SKD",user, materialPackingKeyList,commitDate);
|
||||||
|
if (billCode == null) {
|
||||||
|
throw new GlobalException("报送ERP失败,请联系IT处理!");
|
||||||
|
}
|
||||||
|
|
||||||
Map<String, Object> hashMap = new HashMap<String, Object> ();
|
Map<String, Object> hashMap = new HashMap<String, Object> ();
|
||||||
hashMap.put("stockState", "Stocked");
|
hashMap.put("stockState", "Stocked");
|
||||||
hashMap.put("shipRequestName", "");
|
hashMap.put("shipRequestName", "");
|
||||||
|
@ -99,6 +99,8 @@ public class CodeGenerator {
|
|||||||
Collections.sort(chargeNoList);
|
Collections.sort(chargeNoList);
|
||||||
int max = Integer.parseInt(chargeNoList.get(chargeNoList.size() - 1));
|
int max = Integer.parseInt(chargeNoList.get(chargeNoList.size() - 1));
|
||||||
sequence = max + 1;
|
sequence = max + 1;
|
||||||
|
} else if (Charge.isEmpty()) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 3. 遍历结果集,生成新条码并更新数据库
|
// 3. 遍历结果集,生成新条码并更新数据库
|
||||||
|
Loading…
x
Reference in New Issue
Block a user