fix:自动转仓 修改冲销
This commit is contained in:
parent
939b3aed5b
commit
9860c5eff4
@ -4941,7 +4941,7 @@ public class ToSAPServiceImpl {
|
|||||||
ErpMessageLog erplog = new ErpMessageLog();
|
ErpMessageLog erplog = new ErpMessageLog();
|
||||||
erplog.setEventUser("");
|
erplog.setEventUser("");
|
||||||
erplog.setServerName("WmsToErp");
|
erplog.setServerName("WmsToErp");
|
||||||
erplog.setEventName("qms质检判定自动转库-311");
|
erplog.setEventName("qms质检判定自动转库311");
|
||||||
erplog.setId(uuid.toString());
|
erplog.setId(uuid.toString());
|
||||||
erplog.setInterfaceTime(TimeStampUtil.getCurrentTime(TimeStampUtil.FORMAT_DEFAULT));
|
erplog.setInterfaceTime(TimeStampUtil.getCurrentTime(TimeStampUtil.FORMAT_DEFAULT));
|
||||||
erplog.setMessageId(UUID.randomUUID().toString());
|
erplog.setMessageId(UUID.randomUUID().toString());
|
||||||
|
@ -2,7 +2,9 @@ package com.cim.idm.controller;
|
|||||||
|
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.cim.idm.framework.util.time.TimeStampUtil;
|
||||||
import com.cim.idm.model.MaterialUndoDto;
|
import com.cim.idm.model.MaterialUndoDto;
|
||||||
|
import com.cim.idm.mwmsextend.materialpacking.service.MaterialPackingServiceImpl;
|
||||||
import com.cim.idm.service.Impl.MaterialUndoServiceImpl;
|
import com.cim.idm.service.Impl.MaterialUndoServiceImpl;
|
||||||
import com.cim.idm.utils.AjaxResult;
|
import com.cim.idm.utils.AjaxResult;
|
||||||
import com.cim.idm.utils.CommonUtils;
|
import com.cim.idm.utils.CommonUtils;
|
||||||
@ -13,6 +15,10 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
|||||||
import org.springframework.web.bind.annotation.RequestMethod;
|
import org.springframework.web.bind.annotation.RequestMethod;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.format.DateTimeFormatter;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 物料冲销控制器
|
* 物料冲销控制器
|
||||||
* @author ZXYGY17
|
* @author ZXYGY17
|
||||||
@ -38,6 +44,7 @@ public class MaterialUndoController {
|
|||||||
String inv_TYPE = undoDto.getINV_TYPE();
|
String inv_TYPE = undoDto.getINV_TYPE();
|
||||||
String lastEventName = undoDto.getLastEventName();
|
String lastEventName = undoDto.getLastEventName();
|
||||||
String commitDate = undoDto.getCommitDate();
|
String commitDate = undoDto.getCommitDate();
|
||||||
|
|
||||||
//根据物料凭证校验物料状态是否一致
|
//根据物料凭证校验物料状态是否一致
|
||||||
try {
|
try {
|
||||||
Boolean checkUndoCondition = untils.CheckUndoCondition(undoId);
|
Boolean checkUndoCondition = untils.CheckUndoCondition(undoId);
|
||||||
@ -64,11 +71,12 @@ public class MaterialUndoController {
|
|||||||
// return AjaxResult.me().setSuccess(false).setMessage("单据类型不支持冲销");
|
// return AjaxResult.me().setSuccess(false).setMessage("单据类型不支持冲销");
|
||||||
// }
|
// }
|
||||||
|
|
||||||
if ("Z001".equals(inv_TYPE) || "Z005".equals(inv_TYPE) || "Z006".equals(inv_TYPE) || "Z007".equals(inv_TYPE) || "Z008".equals(inv_TYPE)) {
|
if ("Z001".equals(inv_TYPE) || "Z005".equals(inv_TYPE) || "Z006".equals(inv_TYPE) || "Z007".equals(inv_TYPE)) {
|
||||||
materialUndoServiceImpl.rkUndo(undoId, userId); // 入库
|
// materialUndoServiceImpl.rkUndo(undoId, userId); // 入库
|
||||||
|
materialUndoServiceImpl.cgrkUndo(undoId, userId); // 采购入库
|
||||||
} else if ("Z002".equals(inv_TYPE) || "Z003".equals(inv_TYPE) || "Z004".equals(inv_TYPE)) {
|
} else if ("Z002".equals(inv_TYPE) || "Z003".equals(inv_TYPE) || "Z004".equals(inv_TYPE)) {
|
||||||
materialUndoServiceImpl.cprkUndo(undoId, userId);// 成品入库
|
materialUndoServiceImpl.cprkUndo(undoId, userId);// 成品入库
|
||||||
} else if (inv_TYPE.contains("ZLF")) { // 出库冲销
|
} else if (inv_TYPE.contains("ZLF") || "Z008".equals(inv_TYPE)) { // 出库冲销
|
||||||
materialUndoServiceImpl.ckUndo(undoId, userId);
|
materialUndoServiceImpl.ckUndo(undoId, userId);
|
||||||
} else if (inv_TYPE.contains("ZLR")) {
|
} else if (inv_TYPE.contains("ZLR")) {
|
||||||
materialUndoServiceImpl.ckUndo(undoId, userId);
|
materialUndoServiceImpl.ckUndo(undoId, userId);
|
||||||
|
@ -14,6 +14,7 @@ import com.cim.idm.exception.GlobalException;
|
|||||||
import com.cim.idm.framework.data.EventInfo;
|
import com.cim.idm.framework.data.EventInfo;
|
||||||
import com.cim.idm.model.po.MaterialReceiveRequest;
|
import com.cim.idm.model.po.MaterialReceiveRequest;
|
||||||
import com.cim.idm.model.ShelfDto;
|
import com.cim.idm.model.ShelfDto;
|
||||||
|
import com.cim.idm.service.Impl.NoInvoiceManagerServiceImpl;
|
||||||
import com.cim.idm.service.Impl.SDKMaterialPackingServiceImpl;
|
import com.cim.idm.service.Impl.SDKMaterialPackingServiceImpl;
|
||||||
import com.cim.idm.service.impl.ToSAPServiceImpl;
|
import com.cim.idm.service.impl.ToSAPServiceImpl;
|
||||||
import com.cim.idm.utils.AjaxResult;
|
import com.cim.idm.utils.AjaxResult;
|
||||||
@ -234,7 +235,7 @@ public class NoInvoiceManagerContoller {
|
|||||||
|
|
||||||
String commitDate = commitDateString + " 00:00:00";
|
String commitDate = commitDateString + " 00:00:00";
|
||||||
|
|
||||||
// NoInvoiceManagerServiceImpl.QTR(boxList,user2,commitDate,opCode);
|
NoInvoiceManagerServiceImpl.QTR(boxList,user2,commitDate,opCode);
|
||||||
|
|
||||||
return AjaxResult.me().setResultObj(null);
|
return AjaxResult.me().setResultObj(null);
|
||||||
|
|
||||||
|
@ -9,6 +9,7 @@ import com.cim.idm.framework.util.sys.SystemPropHelper;
|
|||||||
import com.cim.idm.model.ErpMessageLog;
|
import com.cim.idm.model.ErpMessageLog;
|
||||||
import com.cim.idm.service.impl.ToSAPServiceImpl;
|
import com.cim.idm.service.impl.ToSAPServiceImpl;
|
||||||
import com.cim.idm.utils.AjaxResult;
|
import com.cim.idm.utils.AjaxResult;
|
||||||
|
import com.cim.idm.utils.CommonUtils;
|
||||||
import com.cim.idm.utils.EventInfoUtil;
|
import com.cim.idm.utils.EventInfoUtil;
|
||||||
import com.cim.idm.wmsextend.generic.GenericServiceProxy;
|
import com.cim.idm.wmsextend.generic.GenericServiceProxy;
|
||||||
import com.cim.idm.wmsextend.generic.errorHandler.CustomException;
|
import com.cim.idm.wmsextend.generic.errorHandler.CustomException;
|
||||||
@ -63,6 +64,8 @@ public class QMSController {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private ToSAPServiceImpl toSAPService;
|
private ToSAPServiceImpl toSAPService;
|
||||||
|
|
||||||
|
private CommonUtils untils=new CommonUtils();
|
||||||
|
|
||||||
private static final Logger log = LoggerFactory.getLogger(QMSController.class);
|
private static final Logger log = LoggerFactory.getLogger(QMSController.class);
|
||||||
|
|
||||||
// private NCWServiceImpl NCWServiceImpl = new NCWServiceImpl ();
|
// private NCWServiceImpl NCWServiceImpl = new NCWServiceImpl ();
|
||||||
@ -987,11 +990,15 @@ public class QMSController {
|
|||||||
|
|
||||||
// }else {
|
// }else {
|
||||||
// billCode = NCWServiceImpl.OQZkNoInvoice(LocationBoxList, sendUser);
|
// billCode = NCWServiceImpl.OQZkNoInvoice(LocationBoxList, sendUser);
|
||||||
// }
|
|
||||||
|
|
||||||
if (billCode == null || "".equals(billCode)) {
|
if (billCode == null || "".equals(billCode)) {
|
||||||
throw new CustomException("ERP过账失败!");
|
throw new CustomException("ERP过账失败!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EventInfoUtil eventInfoUtil = new EventInfoUtil();
|
||||||
|
EventInfo makeEventInfo = eventInfoUtil.makeEventInfo("自动转库311", user, "qms质检自动转库311");
|
||||||
|
untils.SaveUnDoInfo_ForSap(boxList2, billCode, makeEventInfo);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -777,7 +777,7 @@ public class MaterialShipServiceImpl implements IMaterialShipService {
|
|||||||
String billCode = "";
|
String billCode = "";
|
||||||
switch (shipRequestType) {
|
switch (shipRequestType) {
|
||||||
case "NLCC" : //STO调拨出库
|
case "NLCC" : //STO调拨出库
|
||||||
|
// 辅材出库
|
||||||
// 拆条码,查询MATERIALQUANTITY 与 MATERIALQUANTITY2是否相等,如果相等则未修改了数量,不相等则修改了数量
|
// 拆条码,查询MATERIALQUANTITY 与 MATERIALQUANTITY2是否相等,如果相等则未修改了数量,不相等则修改了数量
|
||||||
// 如果已修改数量,则进行拆条码
|
// 如果已修改数量,则进行拆条码
|
||||||
for (int z = 0; z < packingQueryForList.size(); z++) {
|
for (int z = 0; z < packingQueryForList.size(); z++) {
|
||||||
@ -2045,6 +2045,7 @@ public class MaterialShipServiceImpl implements IMaterialShipService {
|
|||||||
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);
|
||||||
|
@ -58,6 +58,41 @@ public class MaterialUndoServiceImpl implements IMaterialUndoService {
|
|||||||
MaterialPackingServiceProxy.getMaterialPackingService().setEvent(key, makeEventInfo, setEventInfo);
|
MaterialPackingServiceProxy.getMaterialPackingService().setEvent(key, makeEventInfo, setEventInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// String sql = "UPDATE BS_MATERIALPACKINGUNDOINFO b SET b.FLAG = 'Y' WHERE b.UNDOID = :UNDOID";
|
||||||
|
// Map<String, Object> hashMap2 = new HashMap<String, Object> ();
|
||||||
|
// hashMap2.put("UNDOID", undoId);
|
||||||
|
// IDMFrameServiceProxy.getSqlTemplate().update(sql, hashMap2);
|
||||||
|
// 更新凭证冲销状态
|
||||||
|
MaterialReversalDao.updateReversalUnDoId(undoId);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 采购入库冲销
|
||||||
|
* @param undoId
|
||||||
|
* @param user
|
||||||
|
*/
|
||||||
|
@Transactional
|
||||||
|
public void cgrkUndo (String undoId, String user) throws Exception {
|
||||||
|
|
||||||
|
String billCode = toSAPService.cancelShipInter(undoId, user);
|
||||||
|
if (billCode == null) {
|
||||||
|
throw new GlobalException("报送ERP失败,请联系IT处理!");
|
||||||
|
}
|
||||||
|
|
||||||
|
EventInfo makeEventInfo = new EventInfoUtil().makeEventInfo("MakeUndo", user, "MakeUndo");
|
||||||
|
String condition="WHERE UNDOID =? ";
|
||||||
|
String[] bindSet={undoId};
|
||||||
|
//根据物料凭证找到所有的待冲销数据,更新库存状态为创建
|
||||||
|
List<MaterialPacking> list = MaterialPackingServiceProxy.getMaterialPackingService().select(condition, bindSet);
|
||||||
|
Map<String, Object> hashMap = new HashMap<String, Object> ();
|
||||||
|
hashMap.put("stockState", "Created");
|
||||||
|
SetEventInfo setEventInfo = new SetEventInfo();
|
||||||
|
setEventInfo.setUserColumns(hashMap);
|
||||||
|
for (MaterialPacking materialPacking : list) {
|
||||||
|
MaterialPackingKey key = materialPacking.getKey();
|
||||||
|
MaterialPackingServiceProxy.getMaterialPackingService().setEvent(key, makeEventInfo, setEventInfo);
|
||||||
|
}
|
||||||
|
|
||||||
// String sql = "UPDATE BS_MATERIALPACKINGUNDOINFO b SET b.FLAG = 'Y' WHERE b.UNDOID = :UNDOID";
|
// String sql = "UPDATE BS_MATERIALPACKINGUNDOINFO b SET b.FLAG = 'Y' WHERE b.UNDOID = :UNDOID";
|
||||||
// Map<String, Object> hashMap2 = new HashMap<String, Object> ();
|
// Map<String, Object> hashMap2 = new HashMap<String, Object> ();
|
||||||
// hashMap2.put("UNDOID", undoId);
|
// hashMap2.put("UNDOID", undoId);
|
||||||
@ -277,15 +312,65 @@ public class MaterialUndoServiceImpl implements IMaterialUndoService {
|
|||||||
String materialPackingName = list.get(i).getMaterialPackingName();
|
String materialPackingName = list.get(i).getMaterialPackingName();
|
||||||
materialPackingKeyList.add(materialPackingName);
|
materialPackingKeyList.add(materialPackingName);
|
||||||
}
|
}
|
||||||
String billCode = toSAPService.outOrderChancel(undoId, "SKD",user, materialPackingKeyList,commitDate);
|
|
||||||
if (billCode == null) {
|
// String billCode = toSAPService.outOrderChancel(undoId, "SKD",user, materialPackingKeyList,commitDate);
|
||||||
throw new GlobalException("报送ERP失败,请联系IT处理!");
|
// 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", "");
|
||||||
SetEventInfo setEventInfo = new SetEventInfo();
|
SetEventInfo setEventInfo = new SetEventInfo();
|
||||||
|
|
||||||
|
|
||||||
|
for (MaterialPacking materialPackingSplit : list) {
|
||||||
|
|
||||||
|
String MATERIALPACKINGNAME1 = materialPackingSplit.getMaterialPackingName().toString();
|
||||||
|
String CHARGE = materialPackingSplit.getCharge();
|
||||||
|
|
||||||
|
Map<String, Object> hashMapsplit = new HashMap<String, Object> ();
|
||||||
|
hashMapsplit.put("MATERIALPACKINGNAME", MATERIALPACKINGNAME1);
|
||||||
|
// 如果是拆分批次
|
||||||
|
if ("Y".equals(materialPackingSplit.getSplit())) {
|
||||||
|
|
||||||
|
// 如果不是辅材出库,则合并批次数量并删除拆分的批次和sub
|
||||||
|
if(!CHARGE.isEmpty()) {
|
||||||
|
// 拆分的批次数量
|
||||||
|
Double spitMaterialQuantity = materialPackingSplit.getMaterialQuantity();
|
||||||
|
// 查出非拆分的原批次
|
||||||
|
String NsplitCondition="WHERE charge =? AND split IS NULL";
|
||||||
|
String[] NspliBindSet={CHARGE};
|
||||||
|
//根据物料凭证找到所有的待冲销数据,更新库存状态为创建
|
||||||
|
List<MaterialPacking> noSplitList = MaterialPackingServiceProxy.getMaterialPackingService().select(NsplitCondition, NspliBindSet);
|
||||||
|
String NoSMaterialPackingName = noSplitList.get(0).getMaterialPackingName();
|
||||||
|
|
||||||
|
// 存在原批次
|
||||||
|
if(!NoSMaterialPackingName.isEmpty()) {
|
||||||
|
MaterialPackingKey noSKey = noSplitList.get(0).getKey();
|
||||||
|
// 原批次数量
|
||||||
|
Double NoPMaterialQuantity = noSplitList.get(0).getMaterialQuantity();
|
||||||
|
Map<String, Object> hashMapNosplit = new HashMap<String, Object> ();
|
||||||
|
|
||||||
|
//累加数量
|
||||||
|
hashMapNosplit.put("materialQuantity", NoPMaterialQuantity + spitMaterialQuantity);
|
||||||
|
setEventInfo.setUserColumns(hashMapNosplit);
|
||||||
|
MaterialPackingServiceProxy.getMaterialPackingService().setEvent(noSKey, makeEventInfo, setEventInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
String delSplitSql = "DELETE FROM MATERIALPACKING WHERE MATERIALPACKINGNAME = :MATERIALPACKINGNAME";
|
||||||
|
// 删除拆分出的批次
|
||||||
|
IDMFrameServiceProxy.getSqlTemplate().update(delSplitSql, hashMapsplit);
|
||||||
|
}
|
||||||
|
//如果是辅材、更新为在库,删除sub,不是辅材 删除sub
|
||||||
|
String delSubSql = "DELETE FROM MATERIALPACKINGSUB WHERE MATERIALPACKINGNAME = :MATERIALPACKINGNAME";
|
||||||
|
IDMFrameServiceProxy.getSqlTemplate().update(delSubSql, hashMapsplit);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
for (MaterialPacking materialPacking : list) {
|
for (MaterialPacking materialPacking : list) {
|
||||||
MaterialPackingKey key = materialPacking.getKey();
|
MaterialPackingKey key = materialPacking.getKey();
|
||||||
//获取实际发货数量
|
//获取实际发货数量
|
||||||
@ -339,6 +424,7 @@ public class MaterialUndoServiceImpl implements IMaterialUndoService {
|
|||||||
String MATERIALPACKINGNAME = materialPacking.getMaterialPackingName().toString();
|
String MATERIALPACKINGNAME = materialPacking.getMaterialPackingName().toString();
|
||||||
hashMap.put("MATERIALPACKINGNAME", MATERIALPACKINGNAME);
|
hashMap.put("MATERIALPACKINGNAME", MATERIALPACKINGNAME);
|
||||||
hashMap.put("SHIPREQUESTNAME", shipRequestName);
|
hashMap.put("SHIPREQUESTNAME", shipRequestName);
|
||||||
|
|
||||||
IDMFrameServiceProxy.getSqlTemplate().update(pcSql, hashMap);
|
IDMFrameServiceProxy.getSqlTemplate().update(pcSql, hashMap);
|
||||||
IDMFrameServiceProxy.getSqlTemplate().update(cxSql, hashMap);
|
IDMFrameServiceProxy.getSqlTemplate().update(cxSql, hashMap);
|
||||||
}
|
}
|
||||||
|
@ -25,7 +25,39 @@ public class NoInvoiceManagerServiceImpl {
|
|||||||
private SDKMaterialPackingServiceImpl SDKMaterialPackingServiceImpl = new SDKMaterialPackingServiceImpl();
|
private SDKMaterialPackingServiceImpl SDKMaterialPackingServiceImpl = new SDKMaterialPackingServiceImpl();
|
||||||
|
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
public void QTR(List<MaterialPacking> list,String user,String commitDate,String opCode) {
|
||||||
|
EventInfo makeEventInfo = EventInfoUtil.makeEventInfo("QTR", user, "QTR", "", "");
|
||||||
|
SetEventInfo setEventInfo = new SetEventInfo();
|
||||||
|
HashMap<String, Object> hashMap = new HashMap<String,Object> ();
|
||||||
|
hashMap.put("StockState", "Stocked");
|
||||||
|
hashMap.put("packingState","Released");
|
||||||
|
hashMap.put("oqaResultState","END");
|
||||||
|
hashMap.put("oqaResult","OK");
|
||||||
|
hashMap.put("packingGrade","OK");
|
||||||
|
for (MaterialPacking materialPacking : list) {
|
||||||
|
//判断标签是否存在
|
||||||
|
String sql = "SELECT * FROM MATERIALPACKING m WHERE MATERIALPACKINGNAME = :MATERIALPACKINGNAME AND STOCKSTATE <> 'Stocked' ";
|
||||||
|
Map<String, Object> hashMap2 = new HashMap<String,Object> ();
|
||||||
|
String materialPackingName = materialPacking.getMaterialPackingName();
|
||||||
|
MaterialPackingKey materialPackingKey = new MaterialPackingKey("SDK", materialPackingName);
|
||||||
|
hashMap2.put("MATERIALPACKINGNAME", materialPackingName);
|
||||||
|
List<Map<String, Object>> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql, hashMap2);
|
||||||
|
if (queryForList == null || queryForList.size() < 1) {
|
||||||
|
throw new GlobalException(materialPackingName + "标签未有系统流转记录!");
|
||||||
|
}
|
||||||
|
hashMap.put("locationName", materialPacking.getLocationName());
|
||||||
|
hashMap.put("erpFactory", materialPacking.getErpFactory());
|
||||||
|
hashMap.put("erpLocation", materialPacking.getErpLocation());
|
||||||
|
setEventInfo.setObjectValueUserColumns(hashMap);
|
||||||
|
MaterialPackingServiceProxy.getMaterialPackingService().setEvent(materialPackingKey, makeEventInfo, setEventInfo);
|
||||||
|
}
|
||||||
|
String undoid = "";
|
||||||
|
// undoid = NCWServiceImpl.qtrNoInvoice(list,user,commitDate,opCode);
|
||||||
|
SDKMaterialPackingServiceImpl.updateUndoIdByList(list, undoid, makeEventInfo,opCode);
|
||||||
|
//更新库存状态
|
||||||
|
SDKMaterialPackingServiceImpl.SaveUnDoInfo( undoid,commitDate);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
|
@ -1,12 +1,15 @@
|
|||||||
package com.cim.idm.utils;
|
package com.cim.idm.utils;
|
||||||
|
|
||||||
import com.cim.idm.framework.IDMFrameServiceProxy;
|
import com.cim.idm.framework.IDMFrameServiceProxy;
|
||||||
|
import com.cim.idm.mwmsextend.materialpacking.service.MaterialPackingServiceImpl;
|
||||||
import com.cim.idm.wmsextend.generic.errorHandler.CustomException;
|
import com.cim.idm.wmsextend.generic.errorHandler.CustomException;
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
// gf 生成流水码
|
// gf 生成流水码
|
||||||
@ -67,6 +70,7 @@ public class CodeGenerator {
|
|||||||
String query = "SELECT MATERIALPACKINGNAME FROM MATERIALPACKING WHERE CHARGE = :CHARGE";
|
String query = "SELECT MATERIALPACKINGNAME FROM MATERIALPACKING WHERE CHARGE = :CHARGE";
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
Map<String, String> bindMap = new HashMap<String, String>();
|
Map<String, String> bindMap = new HashMap<String, String>();
|
||||||
bindMap.put("CHARGE", Charge);
|
bindMap.put("CHARGE", Charge);
|
||||||
List<Map<String, Object>> result = IDMFrameServiceProxy.getSqlTemplate().queryForList(query, bindMap);
|
List<Map<String, Object>> result = IDMFrameServiceProxy.getSqlTemplate().queryForList(query, bindMap);
|
||||||
@ -99,9 +103,10 @@ 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()) {
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
// else if (Charge.isEmpty()) {
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
|
||||||
// 3. 遍历结果集,生成新条码并更新数据库
|
// 3. 遍历结果集,生成新条码并更新数据库
|
||||||
List<Integer> idsToUpdate = new ArrayList<Integer>();
|
List<Integer> idsToUpdate = new ArrayList<Integer>();
|
||||||
@ -117,7 +122,31 @@ public class CodeGenerator {
|
|||||||
for (int i = 0; i < parts.length - 4; i++) { // 不包括最后两个部分
|
for (int i = 0; i < parts.length - 4; i++) { // 不包括最后两个部分
|
||||||
newBasePart.append(parts[i]).append("|");
|
newBasePart.append(parts[i]).append("|");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 辅材出库没有批次
|
||||||
|
if(Charge.isEmpty()) {
|
||||||
|
// 生成一个新的批次
|
||||||
|
LocalDate currentDate = LocalDate.now();
|
||||||
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
||||||
|
String formattedDate = currentDate.format(formatter);
|
||||||
|
List<String> boxIDs = MaterialPackingServiceImpl.generateBoxID("LabelId", "SDK",
|
||||||
|
1 + ""
|
||||||
|
, formattedDate, "SH", "1010");
|
||||||
|
// 打印boxIDs信息
|
||||||
|
System.out.println("boxIDs:" + boxIDs + formattedDate);
|
||||||
|
|
||||||
|
//生成3位随机数
|
||||||
|
// 计算哈希值并取绝对值
|
||||||
|
int hash = Math.abs(currentDate.toString().hashCode());
|
||||||
|
// 取后3位(范围 000-999)
|
||||||
|
int randomNumber = hash % 1000;
|
||||||
|
// 确保结果为3位数(补零)
|
||||||
|
String formatted = String.format("%03d", randomNumber);
|
||||||
|
newBasePart.append(boxIDs.get(0)).append("-").append(formatted); // 在第五部分后添加流水码
|
||||||
|
}else {
|
||||||
newBasePart.append(parts[4]).append("-").append(sequence++); // 在第五部分后添加流水码
|
newBasePart.append(parts[4]).append("-").append(sequence++); // 在第五部分后添加流水码
|
||||||
|
}
|
||||||
|
|
||||||
// for (int i = 6; i < parts.length; i++) { // 添加最后两个部分
|
// for (int i = 6; i < parts.length; i++) { // 添加最后两个部分
|
||||||
// newBasePart.append("|").append(parts[i]);
|
// newBasePart.append("|").append(parts[i]);
|
||||||
// }
|
// }
|
||||||
@ -132,7 +161,6 @@ public class CodeGenerator {
|
|||||||
|
|
||||||
return newBasePart.toString();
|
return newBasePart.toString();
|
||||||
|
|
||||||
|
|
||||||
}catch (Exception e) {
|
}catch (Exception e) {
|
||||||
log.error("Failed to generate pallet number: " + e.getMessage());
|
log.error("Failed to generate pallet number: " + e.getMessage());
|
||||||
throw new RuntimeException("生成流水码错误: " + e.getMessage());
|
throw new RuntimeException("生成流水码错误: " + e.getMessage());
|
||||||
|
@ -632,7 +632,7 @@ public void SaveUnDoInfo_ForSap(List<String> list, String undoid, EventInfo mak
|
|||||||
|
|
||||||
// 插入undo物料包装信息
|
// 插入undo物料包装信息
|
||||||
// 此SQL语句用于插入新的记录到BS_MATERIALPACKINGUNDOINFO表中,记录详细的undo信息
|
// 此SQL语句用于插入新的记录到BS_MATERIALPACKINGUNDOINFO表中,记录详细的undo信息
|
||||||
String insertUnDOMaterialPackingInfo = "insert into BS_MATERIALPACKINGUNDOINFO (unDoID,preundoid,UNDODETAILNAME,undoidstate,UNDOIDDATE,"
|
String insertUnDOMaterialPackingInfo = "insert into BS_MATERIALPACKINGUNDOINFO (unDoID,preundoid,UNDODETAILNAME,undoidstate,UNDOIDDATE,PREERPLOCATION,PRELOCATIONNAME,"
|
||||||
+ "SITENAME, MATERIALPACKINGNAME, MATERIALPACKINGTYPE, CONTENTMATERIALTYPE,"
|
+ "SITENAME, MATERIALPACKINGNAME, MATERIALPACKINGTYPE, CONTENTMATERIALTYPE,"
|
||||||
+ "MATERIALTYPE, MATERIALSPECNAME, SUPERMATERIALPACKINGNAME, PACKINGGRADE, SUBPACKINGQUANTITY, MATERIALCREATEQUANTITY,"
|
+ "MATERIALTYPE, MATERIALSPECNAME, SUPERMATERIALPACKINGNAME, PACKINGGRADE, SUBPACKINGQUANTITY, MATERIALCREATEQUANTITY,"
|
||||||
+ "MATERIALQUANTITY, PACKINGSTATE, OLDPACKINGSTATE, STOCKSTATE, OLDSTOCKSTATE, HOLDSTATE, AREANAME, LOCATIONNAME,"
|
+ "MATERIALQUANTITY, PACKINGSTATE, OLDPACKINGSTATE, STOCKSTATE, OLDSTOCKSTATE, HOLDSTATE, AREANAME, LOCATIONNAME,"
|
||||||
@ -640,7 +640,7 @@ public void SaveUnDoInfo_ForSap(List<String> list, String undoid, EventInfo mak
|
|||||||
+ "LASTEVENTCOMMENT, CREATETIME, CREATEUSER, RECEIVEREQUESTNAME, RECEIVEREQUESTDETAILNAME,"
|
+ "LASTEVENTCOMMENT, CREATETIME, CREATEUSER, RECEIVEREQUESTNAME, RECEIVEREQUESTDETAILNAME,"
|
||||||
+ "MAKEDATE, RECEIVEACTNO, STOCKINTYPE, RECEIVETIME, RECEIVEUSER, SHIPREQUESTNAME, SHIPREQUESTDETAILNAME, SHIPTIME,"
|
+ "MAKEDATE, RECEIVEACTNO, STOCKINTYPE, RECEIVETIME, RECEIVEUSER, SHIPREQUESTNAME, SHIPREQUESTDETAILNAME, SHIPTIME,"
|
||||||
+ "SHIPUSER, REASONCODETYPE, OQARESULTSTATE, OQARESULT, ERPLOCATION, ERPFACTORY, REASONCODE, CHARGE, SUPPLIERNAME,ETCSTATE,ERPEVENTTIME,NPFLAG)"
|
+ "SHIPUSER, REASONCODETYPE, OQARESULTSTATE, OQARESULT, ERPLOCATION, ERPFACTORY, REASONCODE, CHARGE, SUPPLIERNAME,ETCSTATE,ERPEVENTTIME,NPFLAG)"
|
||||||
+ "select unDoID,'' as preundoid,UNDODETAILNAME,'Created' as undoidstate,:UNDOIDDATE AS UNDOIDDATE," //
|
+ "select unDoID,'' as preundoid,UNDODETAILNAME,'Created' as undoidstate,:UNDOIDDATE AS UNDOIDDATE, PREERPLOCATION,PRELOCATIONNAME,"
|
||||||
+ "SITENAME, MATERIALPACKINGNAME, MATERIALPACKINGTYPE, CONTENTMATERIALTYPE,"
|
+ "SITENAME, MATERIALPACKINGNAME, MATERIALPACKINGTYPE, CONTENTMATERIALTYPE,"
|
||||||
+ "MATERIALTYPE, MATERIALSPECNAME, SUPERMATERIALPACKINGNAME, PACKINGGRADE, SUBPACKINGQUANTITY, MATERIALCREATEQUANTITY,"
|
+ "MATERIALTYPE, MATERIALSPECNAME, SUPERMATERIALPACKINGNAME, PACKINGGRADE, SUBPACKINGQUANTITY, MATERIALCREATEQUANTITY,"
|
||||||
+ "DECODE(MATERIALQUANTITY2,0,MATERIALQUANTITY,MATERIALQUANTITY2) MATERIALQUANTITY, PACKINGSTATE, OLDPACKINGSTATE, STOCKSTATE, OLDSTOCKSTATE, HOLDSTATE, AREANAME, LOCATIONNAME,"
|
+ "DECODE(MATERIALQUANTITY2,0,MATERIALQUANTITY,MATERIALQUANTITY2) MATERIALQUANTITY, PACKINGSTATE, OLDPACKINGSTATE, STOCKSTATE, OLDSTOCKSTATE, HOLDSTATE, AREANAME, LOCATIONNAME,"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user