Merge branch 'main' of http://162.14.99.253:3000/10539622/2025-03-JS-SDK-svr
This commit is contained in:
commit
dcb919b97e
@ -63,6 +63,8 @@ public class MaterialReceiveRequestDetail extends FieldAccessor implements DataI
|
|||||||
private String businessDivision; // 事业部zzsyb
|
private String businessDivision; // 事业部zzsyb
|
||||||
|
|
||||||
private String phase;
|
private String phase;
|
||||||
|
private String remark; // 备注
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public String getLocationName() {
|
public String getLocationName() {
|
||||||
@ -548,4 +550,12 @@ public class MaterialReceiveRequestDetail extends FieldAccessor implements DataI
|
|||||||
public void setPhase(String phase) {
|
public void setPhase(String phase) {
|
||||||
this.phase = phase;
|
this.phase = phase;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getRemark() {
|
||||||
|
return remark;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRemark(String remark) {
|
||||||
|
this.remark = remark;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -477,11 +477,11 @@ public class QMSServiceImpl implements QMSService{
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String sendToIQCByDataList(String opCode, String siteName, String deliveryName) throws CustomException {
|
public String sendToIQCByDataList(String opCode, String siteName, String deliveryName,String commitDate) throws CustomException {
|
||||||
String sql = " \n" +
|
String sql = " \n" +
|
||||||
"WITH AA AS (\n" +
|
"WITH AA AS (\n" +
|
||||||
"\tSELECT\n" +
|
"\tSELECT\n" +
|
||||||
"\t\tP.SITENAME,\n" +
|
" P.SITENAME,\n" +
|
||||||
"\t\tP.RECEIVEREQUESTNAME,\n" +
|
"\t\tP.RECEIVEREQUESTNAME,\n" +
|
||||||
"\t\tP.ERPFACTORY,\n" +
|
"\t\tP.ERPFACTORY,\n" +
|
||||||
"\t\tP.ERPLOCATION,\n" +
|
"\t\tP.ERPLOCATION,\n" +
|
||||||
@ -490,36 +490,39 @@ public class QMSServiceImpl implements QMSService{
|
|||||||
"\t\tP.UNIT AS quantityUnit,\n" +
|
"\t\tP.UNIT AS quantityUnit,\n" +
|
||||||
"\t\tLISTAGG(DISTINCT P.CHARGE , ';') WITHIN GROUP (ORDER BY P.CHARGE) AS LOTS,\n" +
|
"\t\tLISTAGG(DISTINCT P.CHARGE , ';') WITHIN GROUP (ORDER BY P.CHARGE) AS LOTS,\n" +
|
||||||
"\t\tCOUNT(DISTINCT P.CHARGE ) batchQuantity,\n" +
|
"\t\tCOUNT(DISTINCT P.CHARGE ) batchQuantity,\n" +
|
||||||
"\t\tP.SUPPLIERNAME\n" +
|
"\t\tP.SUPPLIERNAME,\n" +
|
||||||
|
"\t\tP.TRUEGG " +
|
||||||
"\tFROM\n" +
|
"\tFROM\n" +
|
||||||
"\t\tMATERIALPACKING P \n" +
|
"\t\tMATERIALPACKING P \n" +
|
||||||
"\tWHERE\n" +
|
"\tWHERE\n" +
|
||||||
"\t\tP.RECEIVEREQUESTNAME =:DELIVERYNAME\n" +
|
"\t\tP.RECEIVEREQUESTNAME =:DELIVERYNAME\n" +
|
||||||
"\t\tGROUP BY \n" +
|
"\t\tGROUP BY \n" +
|
||||||
"\t\tP.SITENAME,\n" +
|
" P.SITENAME,\n" +
|
||||||
"\t\tP.RECEIVEREQUESTNAME,\n" +
|
"\t\tP.RECEIVEREQUESTNAME,\n" +
|
||||||
"\t\tP.ERPFACTORY,\n" +
|
"\t\tP.ERPFACTORY,\n" +
|
||||||
"\t\tP.ERPLOCATION,\n" +
|
"\t\tP.ERPLOCATION,\n" +
|
||||||
"\t\tP.MATERIALSPECNAME,\n" +
|
"\t\tP.MATERIALSPECNAME,\n" +
|
||||||
"\t\tP.LOCATIONNAME,\n" +
|
"\t\tP.LOCATIONNAME,\n" +
|
||||||
"\t\tP.UNIT,\n" +
|
"\t\tP.UNIT,\n" +
|
||||||
"\t\tP.SUPPLIERNAME\n" +
|
"\t\tP.SUPPLIERNAME,\n" +
|
||||||
|
"\t\tP.TRUEGG " +
|
||||||
"\t\t)\n" +
|
"\t\t)\n" +
|
||||||
"\t\t\n" +
|
"\t\t\n" +
|
||||||
"SELECT\n" +
|
"SELECT\n" +
|
||||||
"\tAA.SITENAME,\n" +
|
" AA.SITENAME,\n" +
|
||||||
"AA.RECEIVEREQUESTNAME,\n" +
|
"AA.RECEIVEREQUESTNAME,\n" +
|
||||||
"\t\tAA.ERPFACTORY,\n" +
|
"\t\tAA.ERPFACTORY,\n" +
|
||||||
"\t\tAA.ERPLOCATION,\n" +
|
"\t\tAA.ERPLOCATION,\n" +
|
||||||
"\t\tAA.materialCode,\n" +
|
"\t\tAA.MATERIALCODE AS MATERIALSPECNAME,\n" +
|
||||||
"\t\tAA.LOCATIONNAME,\t\n" +
|
"\t\tAA.LOCATIONNAME,\t\n" +
|
||||||
"\t\tAA.quantityUnit,\n" +
|
"\t\tAA.quantityUnit AS UNIT,\n" +
|
||||||
"\t\tAA.LOTS,\n" +
|
"\t\tAA.LOTS,\n" +
|
||||||
"\t\tAA.batchQuantity,\n" +
|
"\t\tAA.batchQuantity,\n" +
|
||||||
"\t\tAA.SUPPLIERNAME,\n" +
|
"\t\tAA.SUPPLIERNAME AS SUPPLIERCODE,\n" +
|
||||||
"\t\tEL.DESCRIPTION AS ERPLOCATIONDESC,\n" +
|
"\t\tEL.DESCRIPTION AS ERPLOCATIONDESC,\n" +
|
||||||
"\t\tMP.MATERIALGROUP,\n" +
|
"\t\tMP.MATERIALGROUP,\n" +
|
||||||
"\t\tMP.DESCRIPTION\n" +
|
"\t\tMP.DESCRIPTION AS MATERIALNAME,\n" +
|
||||||
|
"\t\tAA.TRUEGG AS BATCHNUMBER " +
|
||||||
"FROM\n" +
|
"FROM\n" +
|
||||||
"AA\n" +
|
"AA\n" +
|
||||||
"LEFT JOIN BS_ERPLOCATION EL ON EL.ERPLOCATIONNAME = AA.ERPLOCATION\n" +
|
"LEFT JOIN BS_ERPLOCATION EL ON EL.ERPLOCATIONNAME = AA.ERPLOCATION\n" +
|
||||||
@ -548,7 +551,7 @@ public class QMSServiceImpl implements QMSService{
|
|||||||
// "deliveryDate": "2024-1-1 12:2:2"
|
// "deliveryDate": "2024-1-1 12:2:2"
|
||||||
jsonObject.put("opCode", opCode);
|
jsonObject.put("opCode", opCode);
|
||||||
jsonObject.put("deliveryNumber", opCode);
|
jsonObject.put("deliveryNumber", opCode);
|
||||||
jsonObject.put("warehouse", list.get(i).get("ERPLOCATIONDESC"));
|
//jsonObject.put("warehouse", list.get(i).get("ERPLOCATIONDESC"));
|
||||||
jsonObject.put("supplierName", list.get(i).get("SUPPLIERNAME"));
|
jsonObject.put("supplierName", list.get(i).get("SUPPLIERNAME"));
|
||||||
jsonObject.put("supplierCode", list.get(i).get("SUPPLIERCODE"));
|
jsonObject.put("supplierCode", list.get(i).get("SUPPLIERCODE"));
|
||||||
jsonObject.put("materialName", list.get(i).get("MATERIALNAME"));
|
jsonObject.put("materialName", list.get(i).get("MATERIALNAME"));
|
||||||
@ -556,7 +559,7 @@ public class QMSServiceImpl implements QMSService{
|
|||||||
jsonObject.put("materialGroup", list.get(i).get("MATERIALGROUP"));
|
jsonObject.put("materialGroup", list.get(i).get("MATERIALGROUP"));
|
||||||
jsonObject.put("batchQuantity", list.get(i).get("BATCHQUANTITY"));//
|
jsonObject.put("batchQuantity", list.get(i).get("BATCHQUANTITY"));//
|
||||||
jsonObject.put("quantityUnit", list.get(i).get("UNIT"));//QUANTITYUNIT
|
jsonObject.put("quantityUnit", list.get(i).get("UNIT"));//QUANTITYUNIT
|
||||||
jsonObject.put("deliveryDate", list.get(i).get("DELIVERYDATE"));//
|
jsonObject.put("deliveryDate", commitDate);//
|
||||||
jsonObject.put("specifications", list.get(i).get("BATCHNUMBER"));//
|
jsonObject.put("specifications", list.get(i).get("BATCHNUMBER"));//
|
||||||
jsonObject.put("LOCATIONNAME", list.get(i).get("LOCATIONNAME"));
|
jsonObject.put("LOCATIONNAME", list.get(i).get("LOCATIONNAME"));
|
||||||
jsonObject.put("inspector", "检验室(原材仓)");
|
jsonObject.put("inspector", "检验室(原材仓)");
|
||||||
|
@ -7123,7 +7123,7 @@ public class ToSAPServiceImpl {
|
|||||||
// 调用 QMS
|
// 调用 QMS
|
||||||
//qMSServiceImpl.PreIQCInfoSend(receiveRequestName, "SDK",opCode, erpFactory);
|
//qMSServiceImpl.PreIQCInfoSend(receiveRequestName, "SDK",opCode, erpFactory);
|
||||||
exceptionMsg = "QMS返回";
|
exceptionMsg = "QMS返回";
|
||||||
qmsServiceImpl.sendToIQCByDataList(opCode, "SDK",deliveryName);
|
qmsServiceImpl.sendToIQCByDataList(opCode, "SDK",deliveryName, commitDate);
|
||||||
}
|
}
|
||||||
// 更新入库凭证,更新库存状态
|
// 更新入库凭证,更新库存状态
|
||||||
if (StringUtils.isNotEmpty(undoId)){
|
if (StringUtils.isNotEmpty(undoId)){
|
||||||
|
@ -97,8 +97,10 @@ public class MaterialUndoController {
|
|||||||
materialUndoServiceImpl.orderUndo(undoId, userId,commitDate);
|
materialUndoServiceImpl.orderUndo(undoId, userId,commitDate);
|
||||||
} else if (inv_TYPE.contains("ZLF")) { // 销售发货出库
|
} else if (inv_TYPE.contains("ZLF")) { // 销售发货出库
|
||||||
materialUndoServiceImpl.orderUndo(undoId, userId,commitDate);
|
materialUndoServiceImpl.orderUndo(undoId, userId,commitDate);
|
||||||
} else if (inv_TYPE.contains("无来源转库")) { // 无来源转库
|
} else if (lastEventName.contains("无来源转库")) { // 备货出库转现场仓,无来源转库
|
||||||
materialUndoServiceImpl.wlyZkUndo(undoId, userId,preErpLocation,preLocationName);
|
materialUndoServiceImpl.wlyZkUndo(undoId, userId,preErpLocation,preLocationName);
|
||||||
|
} else if (lastEventName.contains("生产领料出库")) { // 生产领料直接出库
|
||||||
|
materialUndoServiceImpl.ckUndo(undoId, userId);
|
||||||
} else {
|
} else {
|
||||||
return AjaxResult.me().setSuccess(false).setMessage("单据类型不支持冲销");
|
return AjaxResult.me().setSuccess(false).setMessage("单据类型不支持冲销");
|
||||||
}
|
}
|
||||||
|
@ -1348,6 +1348,7 @@ public class SAPToWMSController {
|
|||||||
String xloek= MapUtils.getString(item, "xloek"); // 删除标识
|
String xloek= MapUtils.getString(item, "xloek"); // 删除标识
|
||||||
String auart= MapUtils.getString(item, "AUART"); // 接收生产订单类型 返工ZP05 复卷ZP01
|
String auart= MapUtils.getString(item, "AUART"); // 接收生产订单类型 返工ZP05 复卷ZP01
|
||||||
String lifnr= MapUtils.getString(item, "LIFNR"); // 委外
|
String lifnr= MapUtils.getString(item, "LIFNR"); // 委外
|
||||||
|
String msgtxt = MapUtils.getString(item, "MSGTXT"); // 备注
|
||||||
|
|
||||||
|
|
||||||
MaterialShipRequestDetail mrd =new MaterialShipRequestDetail();
|
MaterialShipRequestDetail mrd =new MaterialShipRequestDetail();
|
||||||
@ -1460,6 +1461,7 @@ public class SAPToWMSController {
|
|||||||
bindMapItem.put("saleOutQuantity", 0);
|
bindMapItem.put("saleOutQuantity", 0);
|
||||||
bindMapItem.put("auart", auart);
|
bindMapItem.put("auart", auart);
|
||||||
bindMapItem.put("deliveryAddress", lifnr);
|
bindMapItem.put("deliveryAddress", lifnr);
|
||||||
|
bindMapItem.put("remark", msgtxt);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -1544,6 +1546,7 @@ public class SAPToWMSController {
|
|||||||
bindMapItem.put("phase", phase);
|
bindMapItem.put("phase", phase);
|
||||||
bindMapItem.put("saleOutQuantity", 0);
|
bindMapItem.put("saleOutQuantity", 0);
|
||||||
bindMapItem.put("auart", auart);
|
bindMapItem.put("auart", auart);
|
||||||
|
bindMapItem.put("remark", msgtxt);
|
||||||
|
|
||||||
nonPrimaryKeyValueInfo.setUserColumns(bindMapItem);
|
nonPrimaryKeyValueInfo.setUserColumns(bindMapItem);
|
||||||
EventInfo eventInfo = new EventInfo();
|
EventInfo eventInfo = new EventInfo();
|
||||||
|
@ -1183,4 +1183,77 @@ public class SaleOutController {
|
|||||||
}
|
}
|
||||||
return AjaxResult.me().setSuccess(true).setErrorCode(200);
|
return AjaxResult.me().setSuccess(true).setErrorCode(200);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 临时出库(补过账)
|
||||||
|
* 2025-05-27
|
||||||
|
* @param in
|
||||||
|
* @return
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
@Transactional
|
||||||
|
@RequestMapping(value = "/completeShipRequestRepairStockOut", method = RequestMethod.POST)
|
||||||
|
public AjaxResult CompleteShipRequestRepairStockOut(@RequestBody JSONObject in ) throws Exception{
|
||||||
|
StockOutDto ms = JSON.toJavaObject(in, StockOutDto.class);
|
||||||
|
String shipRequestName = ms.getShipRequestName();
|
||||||
|
String siteName = "SDK";
|
||||||
|
String user = ms.getUser();
|
||||||
|
String commitDate = ms.getCommitDate();
|
||||||
|
String opCode = ms.getOpCode();
|
||||||
|
String reMark = ms.getReMark();
|
||||||
|
List<com.cim.idm.wmspackage.materialpacking.management.data.MaterialPacking> boxList = new ArrayList<>();
|
||||||
|
|
||||||
|
Map<String, Object> hashMap = new HashMap<String,Object> ();
|
||||||
|
hashMap.put("SHIPREQUESTNAME", shipRequestName);
|
||||||
|
String sqlGetBox = " SELECT m.MATERIALPACKINGNAME,\n" +
|
||||||
|
" m.MATERIALQUANTITY,\n" +
|
||||||
|
" DECODE(NVL(m.MATERIALQUANTITY2, 0), 0 , m.MATERIALQUANTITY, m.MATERIALQUANTITY2) MATERIALQUANTITY2\n" +
|
||||||
|
"FROM MATERIALPACKING m\n" +
|
||||||
|
"WHERE " +
|
||||||
|
"m.SHIPREQUESTNAME =:SHIPREQUESTNAME\n" +
|
||||||
|
"AND m.STOCKSTATE = 'Stocked'\n" +
|
||||||
|
"AND m.MATERIALQUANTITY > 0\n" +
|
||||||
|
"AND NOT EXISTS (\n" +
|
||||||
|
" SELECT 1 FROM MATERIALSHIPREQUESTDETAIL mdl\n" +
|
||||||
|
" WHERE mdl.SHIPREQUESTNAME = m.SHIPREQUESTNAME\n" +
|
||||||
|
" AND mdl.MATERIALSPECNAME = m.MATERIALSPECNAME\n" +
|
||||||
|
" AND (m.ERPLOCATION = mdl.ERPRECEIVELOCATION AND mdl.ERPRECEIVELOCATION IS NOT NULL)\n" +
|
||||||
|
") ";
|
||||||
|
List<Map<String, Object>> sr = IDMFrameServiceProxy.getSqlTemplate().queryForList(sqlGetBox, hashMap);
|
||||||
|
if(sr.size()>0)
|
||||||
|
{
|
||||||
|
for(int i=0;i<sr.size();i++)
|
||||||
|
{
|
||||||
|
MaterialPackingKey mpk=new MaterialPackingKey(siteName, sr.get(i).get("MATERIALPACKINGNAME").toString());
|
||||||
|
com.cim.idm.wmspackage.materialpacking.management.data.MaterialPacking mp = MaterialPackingServiceProxy.getMaterialPackingService().selectByKey(mpk);
|
||||||
|
mp.setMaterialQuantity( Double.parseDouble(sr.get(i).get("MATERIALQUANTITY").toString()));
|
||||||
|
mp.setMaterialQuantity2( Double.parseDouble(sr.get(i).get("MATERIALQUANTITY2").toString()));
|
||||||
|
boxList.add(mp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
throw new CustomException("找不到出库单号" + shipRequestName);
|
||||||
|
}
|
||||||
|
String sendERPStockOut = null;
|
||||||
|
String shipRequestType="";
|
||||||
|
String sql = "SELECT m.SHIPREQUESTTYPE FROM MATERIALSHIPREQUEST m WHERE m.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 {
|
||||||
|
return AjaxResult.me().setSuccess(false).setMessage("找不到出库单据" + shipRequestName);
|
||||||
|
}
|
||||||
|
InvoiceServiceImpl invoiceServiceImpl=new InvoiceServiceImpl();
|
||||||
|
// sendERPStockOut=invoiceServiceImpl.SendERPStockOut20240802(shipRequestName, siteName, user, boxList,commitDate,opCode);
|
||||||
|
sendERPStockOut=invoiceServiceImpl.RepairStockUpOutSendSAPOrMES(shipRequestName, siteName, user, boxList,commitDate,opCode);
|
||||||
|
// sendERPStockOut="1";
|
||||||
|
if (sendERPStockOut == null || "".equals(sendERPStockOut)) {
|
||||||
|
return AjaxResult.me().setSuccess(false).setMessage("过账失败");
|
||||||
|
}
|
||||||
|
return AjaxResult.me().setSuccess(true).setErrorCode(200);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -562,7 +562,7 @@ public class InvoiceServiceImpl implements InvoiceService {
|
|||||||
//抛送MES数据
|
//抛送MES数据
|
||||||
untils.sendMaterialInfoToMES_NEW2(shipRequestName, "", materialPackingKeyList,billCode,eventUser);
|
untils.sendMaterialInfoToMES_NEW2(shipRequestName, "", materialPackingKeyList,billCode,eventUser);
|
||||||
|
|
||||||
WlySaveUnDoInfo( billCode,commitDate);
|
WlySaveUnDoInfo( materialPackingKeyList,billCode,commitDate);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -956,7 +956,18 @@ public class InvoiceServiceImpl implements InvoiceService {
|
|||||||
return undoId;
|
return undoId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void WlySaveUnDoInfo( String undoid,String commitDate) {
|
public void WlySaveUnDoInfo( List<String> list,String undoid,String commitDate) {
|
||||||
|
|
||||||
|
// 更新事件名
|
||||||
|
// 此SQL语句用于更新物料包装的最后事件名称、评论和时间
|
||||||
|
String sqlu="UPDATE MATERIALPACKING m SET m.LASTEVENTNAME=:LASTEVENTNAME,m.LASTEVENTCOMMENT =:LASTEVENTCOMMENT,m.LASTEVENTTIME =SYSDATE \r\n" +
|
||||||
|
" WHERE m.SITENAME =:SITENAME AND m.MATERIALPACKINGNAME in (:BOXLIST)";
|
||||||
|
Map<String,Object> bpu = new HashMap<String,Object> ();
|
||||||
|
bpu.put("LASTEVENTNAME", makeEventInfo.getEventName());
|
||||||
|
bpu.put("LASTEVENTCOMMENT", makeEventInfo.getEventComment());
|
||||||
|
bpu.put("SITENAME", "SDK");
|
||||||
|
bpu.put("BOXLIST", list);
|
||||||
|
IDMFrameServiceProxy.getSqlTemplate().update(sqlu, bpu);
|
||||||
|
|
||||||
String insertUnDOMaterialPackingInfo = "insert into BS_MATERIALPACKINGUNDOINFO (unDoID,preundoid,UNDODETAILNAME,undoidstate,UNDOIDDATE,"
|
String insertUnDOMaterialPackingInfo = "insert into BS_MATERIALPACKINGUNDOINFO (unDoID,preundoid,UNDODETAILNAME,undoidstate,UNDOIDDATE,"
|
||||||
+ "SITENAME, MATERIALPACKINGNAME, MATERIALPACKINGTYPE, CONTENTMATERIALTYPE,"
|
+ "SITENAME, MATERIALPACKINGNAME, MATERIALPACKINGTYPE, CONTENTMATERIALTYPE,"
|
||||||
@ -3428,6 +3439,7 @@ public class InvoiceServiceImpl implements InvoiceService {
|
|||||||
" t.MATERIALSPECNAME,\r\n" +
|
" t.MATERIALSPECNAME,\r\n" +
|
||||||
" t.ERPFACTORY,\r\n" +
|
" t.ERPFACTORY,\r\n" +
|
||||||
" t.ERPLOCATION,\r\n" +
|
" t.ERPLOCATION,\r\n" +
|
||||||
|
" t.LOCATIONNAME,\r\n" +
|
||||||
" m2.SHIPREQUESTDETAILTYPE,\r\n" +
|
" m2.SHIPREQUESTDETAILTYPE,\r\n" +
|
||||||
" t.UNIT,\r\n" +
|
" t.UNIT,\r\n" +
|
||||||
" m1.COSTCENTER,\r\n" +
|
" m1.COSTCENTER,\r\n" +
|
||||||
@ -3497,8 +3509,8 @@ public class InvoiceServiceImpl implements InvoiceService {
|
|||||||
}
|
}
|
||||||
makeEventInfo.setEventName("备货出库无来源转库");
|
makeEventInfo.setEventName("备货出库无来源转库");
|
||||||
makeEventInfo.setEventComment("备货出库无来源转库");
|
makeEventInfo.setEventComment("备货出库无来源转库");
|
||||||
// WlySaveUnDoInfo( billCode,commitDate);
|
WlySaveUnDoInfo( materialPackingKeyList,billCode,commitDate);
|
||||||
untils.SaveUnDoInfo_ForSap(materialPackingKeyList, billCode, makeEventInfo);
|
// untils.SaveUnDoInfo_ForSap(materialPackingKeyList, billCode, makeEventInfo);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -3521,7 +3533,8 @@ public class InvoiceServiceImpl implements InvoiceService {
|
|||||||
throw new GlobalException("发送到mes失败!");
|
throw new GlobalException("发送到mes失败!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
makeEventInfo.setEventName("备货出库生产领料出库");
|
||||||
|
makeEventInfo.setEventComment("备货出库生产领料出库");
|
||||||
untils.SaveUnDoInfo_ForSap(materialPackingKeyList, billCode, makeEventInfo);
|
untils.SaveUnDoInfo_ForSap(materialPackingKeyList, billCode, makeEventInfo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3804,4 +3817,650 @@ public class InvoiceServiceImpl implements InvoiceService {
|
|||||||
}
|
}
|
||||||
return message;
|
return message;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
public String RepairStockUpOutSendSAPOrMES(String shipRequestName, String siteName, String eventUser,
|
||||||
|
List<MaterialPacking> list , String commitDate, String opCode) throws Exception {
|
||||||
|
//判断单据类型调用不同的NC接口
|
||||||
|
String sql = "SELECT m.SHIPREQUESTTYPE,m.SHIPREQUESTDETAILTYPE FROM MATERIALSHIPREQUEST m WHERE m.SHIPREQUESTNAME = :SHIPREQUESTNAME";
|
||||||
|
Map<String, Object> hashMap = new HashMap<String,Object> ();
|
||||||
|
hashMap.put("SHIPREQUESTNAME", shipRequestName);
|
||||||
|
List<String> materialPackingKeyList = new ArrayList<> ();
|
||||||
|
List<MaterialPackingKey> arrayList = new ArrayList<MaterialPackingKey> ();
|
||||||
|
List<Map<String, Object>> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql, hashMap);
|
||||||
|
String shipRequestType = queryForList.get(0).get("SHIPREQUESTTYPE").toString();
|
||||||
|
String detailype = queryForList.get(0).get("SHIPREQUESTDETAILTYPE").toString();
|
||||||
|
if ("4C".equals(shipRequestType)) {
|
||||||
|
String sql222 = "SELECT SUM(m.REQUESTQUANTITY - m.ASSIGNEDQUANTITY) QTY,MATERIALSPECNAME FROM MATERIALSHIPREQUESTDETAIL m WHERE m.SHIPREQUESTNAME = :SHIPREQUESTNAME GROUP BY MATERIALSPECNAME";
|
||||||
|
List<Map<String, Object>> queryForList2 = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql222, hashMap);
|
||||||
|
for (int i = 0; i < queryForList2.size(); i++) {
|
||||||
|
String string = queryForList2.get(i).get("QTY").toString();
|
||||||
|
String MATERIALSPECNAME = queryForList2.get(i).get("MATERIALSPECNAME").toString();
|
||||||
|
BigDecimal bigDecimal = new BigDecimal(string);
|
||||||
|
if (bigDecimal.compareTo(BigDecimal.ZERO) < 0 ) {
|
||||||
|
throw new CustomException( MATERIALSPECNAME + "销售不允许超发");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//备份过账条码表的信息,并删除
|
||||||
|
String bfSql = "INSERT\r\n" +
|
||||||
|
" INTO\r\n" +
|
||||||
|
" MATERIALPACKINGSUBHISTORY T (T.MATERIALPACKINGNAME,\r\n" +
|
||||||
|
" T.RECEIVEREQUESTNAME,\r\n" +
|
||||||
|
" T.RECEIVEREQUESTDETAILNAME,\r\n" +
|
||||||
|
" T.QTY)\r\n" +
|
||||||
|
"SELECT\r\n" +
|
||||||
|
" M.MATERIALPACKINGNAME,\r\n" +
|
||||||
|
" M.RECEIVEREQUESTNAME,\r\n" +
|
||||||
|
" M.RECEIVEREQUESTDETAILNAME,\r\n" +
|
||||||
|
" M.QTY\r\n" +
|
||||||
|
"FROM\r\n" +
|
||||||
|
" MATERIALPACKINGSUB M\r\n" +
|
||||||
|
"WHERE\r\n" +
|
||||||
|
" M.RECEIVEREQUESTNAME = :SHIPREQUESTNAME";
|
||||||
|
String scSql = "DELETE FROM MATERIALPACKINGSUB WHERE RECEIVEREQUESTNAME = :SHIPREQUESTNAME";
|
||||||
|
IDMFrameServiceProxy.getSqlTemplate().update(bfSql, hashMap);
|
||||||
|
IDMFrameServiceProxy.getSqlTemplate().update(scSql, hashMap);
|
||||||
|
EventInfoUtil eventInfoUtil = new EventInfoUtil();
|
||||||
|
EventInfo makeEventInfo = eventInfoUtil.makeEventInfo("CompletedShipRequest", eventUser, "CompletedShipRequest");
|
||||||
|
//循环过账批次
|
||||||
|
for (int i = 0; i < list.size(); ++ i) {
|
||||||
|
String materialPackingName = list.get(i).getMaterialPackingName();
|
||||||
|
String sdk_ID = list.get(i).getSDK_ID();
|
||||||
|
String phase = list.get(i).getPHASE();
|
||||||
|
String materialSpecName = list.get(i).getMaterialSpecName();
|
||||||
|
// float materialQuantity = list.get(i).getMaterialQuantity();
|
||||||
|
//重新获取下数量,通过sql查询取数
|
||||||
|
String SLsQL = "SELECT m.MATERIALPACKINGNAME,m.MATERIALQUANTITY,"
|
||||||
|
+ "DECODE(NVL(m.MATERIALQUANTITY2,0), 0 ,m.MATERIALQUANTITY,m.MATERIALQUANTITY2) MATERIALQUANTITY2 FROM MATERIALPACKING m"
|
||||||
|
+ " WHERE m.SHIPREQUESTNAME = :SHIPRQEUESTNAME AND MATERIALPACKINGNAME = :MATERIALPACKINGNAME ";
|
||||||
|
Map<String, Object> hashMap2 = new HashMap<String,Object> ();
|
||||||
|
hashMap2.put("SHIPRQEUESTNAME", shipRequestName);
|
||||||
|
hashMap2.put("MATERIALPACKINGNAME", materialPackingName);
|
||||||
|
String materialQuantity2 = list.get(i).getMaterialQuantity2() + "";
|
||||||
|
List<Map<String, Object>> queryForList3 = IDMFrameServiceProxy.getSqlTemplate().queryForList(SLsQL, hashMap2);
|
||||||
|
if (queryForList3 != null && queryForList3.size() > 0) {
|
||||||
|
materialQuantity2 = queryForList3.get(0).get("MATERIALQUANTITY2").toString();
|
||||||
|
} else {
|
||||||
|
throw new CustomException("单据" + shipRequestName + "库存" + materialPackingName + "绑定关系不存在");
|
||||||
|
}
|
||||||
|
//循环单据查询过帐表
|
||||||
|
String pcSql = "SELECT SHIPREQUESTNAME, SHIPREQUESTDETAILNAME,\r\n" +
|
||||||
|
" m.MATERIALSPECNAME ,\r\n" +
|
||||||
|
" m.PHASE ,\r\n" +
|
||||||
|
" m.SDK_ID ,\r\n" +
|
||||||
|
" m.REQUESTQUANTITY ,\r\n" +
|
||||||
|
" m.ASSIGNEDQUANTITY ,\r\n" +
|
||||||
|
" (m.REQUESTQUANTITY - nvl(m.SALEOUTQUANTITY, 0) ) SALEOUTQUANTITY\r\n" +
|
||||||
|
"FROM\r\n" +
|
||||||
|
" MATERIALSHIPREQUESTDETAIL m\r\n" +
|
||||||
|
"WHERE\r\n" +
|
||||||
|
" m.MATERIALSPECNAME = :MATERIALSPECNAME\r\n" +
|
||||||
|
" AND SHIPREQUESTNAME = :SHIPREQUESTNAME ORDER BY TO_NUMBER(SHIPREQUESTDETAILNAME) ASC ";
|
||||||
|
hashMap.put("MATERIALSPECNAME", materialSpecName);
|
||||||
|
hashMap.put("SDK_ID", sdk_ID);
|
||||||
|
hashMap.put("PHASE", phase);
|
||||||
|
List<Map<String, Object>> queryForList2 = IDMFrameServiceProxy.getSqlTemplate().queryForList(pcSql, hashMap);
|
||||||
|
BigDecimal pcQty = new BigDecimal(materialQuantity2);//批次数量
|
||||||
|
BigDecimal temp;
|
||||||
|
for (int j = 0; j < queryForList2.size(); j++) {
|
||||||
|
String sq = queryForList2.get(j).get("SALEOUTQUANTITY").toString();//剩余发货数量
|
||||||
|
String shipRequestDetailName = queryForList2.get(j).get("SHIPREQUESTDETAILNAME").toString();//行项
|
||||||
|
BigDecimal saleQty = new BigDecimal(sq);//需要发货数量
|
||||||
|
if (pcQty.compareTo(BigDecimal.ZERO) == 0
|
||||||
|
|| (saleQty.compareTo(BigDecimal.ZERO) == 0 && (j != queryForList2.size() - 1) )
|
||||||
|
) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
int compareTo = saleQty.compareTo(pcQty);//大于等于0则批次全发,小于0则需要拆分
|
||||||
|
int compareToZero=saleQty.compareTo(BigDecimal.ZERO);
|
||||||
|
if (compareTo >= 0) {
|
||||||
|
untils.fahuoSplit(materialPackingName, shipRequestName, shipRequestDetailName, pcQty);
|
||||||
|
break;
|
||||||
|
} else {//需要拆行
|
||||||
|
if( (j != queryForList2.size() - 1) && compareToZero>0) {//判断是否是最后一行,不是最后一行就不允许超发,发货数量等于请求数量即拆
|
||||||
|
untils.fahuoSplit(materialPackingName, shipRequestName, shipRequestDetailName, saleQty);
|
||||||
|
pcQty = pcQty.subtract(saleQty);
|
||||||
|
continue;
|
||||||
|
} else {
|
||||||
|
untils.fahuoSplit(materialPackingName, shipRequestName, shipRequestDetailName, pcQty);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
materialPackingKeyList.add(materialPackingName);
|
||||||
|
}
|
||||||
|
//判断会有多少个仓库发货,不同仓库需要分开走账
|
||||||
|
StringBuffer cklx = new StringBuffer();
|
||||||
|
cklx.append("SELECT m.MATERIALPACKINGNAME,m.SITENAME FROM MATERIALPACKING m WHERE m.MATERIALPACKINGNAME IN ");
|
||||||
|
String str = "";
|
||||||
|
str += "(";
|
||||||
|
for (String materialPacking : materialPackingKeyList) {
|
||||||
|
str += "'" + materialPacking + "',";
|
||||||
|
}
|
||||||
|
str += "'')";
|
||||||
|
// 查询MATERIALQUANTITY 与 MATERIALQUANTITY2是否相等,如果相等则未修改数量,不相等则修改数量
|
||||||
|
List<Map<String, Object>> packingQueryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(cklx.toString() + str, hashMap);
|
||||||
|
|
||||||
|
String billCode = "";
|
||||||
|
switch (shipRequestType) {
|
||||||
|
case "NLCC" : //STO调拨出库
|
||||||
|
|
||||||
|
// 拆条码,查询MATERIALQUANTITY 与 MATERIALQUANTITY2是否相等,如果相等则未修改了数量,不相等则修改了数量
|
||||||
|
//如果已修改数量,则进行拆条码
|
||||||
|
for (int z = 0; z < packingQueryForList.size(); z++) {
|
||||||
|
String MATERIALPACKINGNAME = packingQueryForList.get(z).get("MATERIALPACKINGNAME").toString();
|
||||||
|
Object[] bindSet = {MATERIALPACKINGNAME};
|
||||||
|
String qtysql = "WHERE MATERIALPACKINGNAME = ?";
|
||||||
|
List<MaterialPacking> qtyQueryForList = MaterialPackingServiceProxy.getMaterialPackingService().select(qtysql, bindSet);
|
||||||
|
|
||||||
|
String qty = new Double(qtyQueryForList.get(0).getMaterialQuantity()) == null ? "0" : String.valueOf(qtyQueryForList.get(0).getMaterialQuantity());
|
||||||
|
|
||||||
|
String qty2 = new Double(qtyQueryForList.get(0).getMaterialQuantity2()) == null ? "0" : String.valueOf(qtyQueryForList.get(0).getMaterialQuantity2());
|
||||||
|
String materialPackingName = qtyQueryForList.get(0).getMaterialPackingName();
|
||||||
|
String charge = qtyQueryForList.get(0).getCharge();
|
||||||
|
BigDecimal bigQty = new BigDecimal(qty);
|
||||||
|
// 已拆数量
|
||||||
|
BigDecimal bigQty2 = new BigDecimal(qty2);
|
||||||
|
|
||||||
|
// 如果已拆数量不等于原数量,并且已拆数量为0(未拆分数量)
|
||||||
|
if(bigQty.compareTo(bigQty2) != 0 && !"0.0".equals(qty2)) {
|
||||||
|
// 剩余数量
|
||||||
|
BigDecimal restQty = bigQty.subtract(bigQty2);
|
||||||
|
|
||||||
|
// 生成新的拆分条码
|
||||||
|
String stringBigQty2 = bigQty2.toString();
|
||||||
|
String newPalletNo = CodeGenerator.packingGenerateCode(materialPackingName,stringBigQty2,charge);
|
||||||
|
|
||||||
|
// 写入拆分的新条码,更新原数据库
|
||||||
|
List<MaterialPacking> boxList = new ArrayList<MaterialPacking>();
|
||||||
|
// MaterialPackingKey materialpackingKey = new MaterialPackingKey();
|
||||||
|
MaterialPacking materialpackingNew = new MaterialPacking();
|
||||||
|
// materialpackingKey.setSiteName("SDK");
|
||||||
|
// materialpackingKey.setMaterialPackingName(newPalletNo);
|
||||||
|
// materialpackingNew.setKey(materialpackingKey);
|
||||||
|
|
||||||
|
// 复制一个当前的原标签数据
|
||||||
|
materialpackingNew.setKey(qtyQueryForList.get(0).getKey());
|
||||||
|
// MaterialPacking materialpackingNew = qtyQueryForList.get(z);
|
||||||
|
// 设置新为标签和数量
|
||||||
|
materialpackingNew.setMaterialPackingName(newPalletNo);
|
||||||
|
// bigQty2 转double类型
|
||||||
|
materialpackingNew.setMaterialQuantity(bigQty2.doubleValue());
|
||||||
|
boxList.add(qtyQueryForList.get(0));
|
||||||
|
boxList.add(materialpackingNew);
|
||||||
|
boolean moveTransformOut = packingChargeSplit(boxList, eventUser);
|
||||||
|
if (moveTransformOut != true) {
|
||||||
|
throw new RuntimeException("修改数量拆分失败");
|
||||||
|
}
|
||||||
|
|
||||||
|
//记录到拆分表
|
||||||
|
String subsql = "SELECT RECEIVEREQUESTDETAILNAME FROM MATERIALPACKINGSUB WHERE RECEIVEREQUESTNAME = :RECEIVEREQUESTNAME AND MATERIALPACKINGNAME = :MATERIALPACKINGNAME\n";
|
||||||
|
Map<String, Object> subHashMap = new HashMap<String, Object>();
|
||||||
|
subHashMap.put("RECEIVEREQUESTNAME", shipRequestName);
|
||||||
|
subHashMap.put("MATERIALPACKINGNAME", MATERIALPACKINGNAME);
|
||||||
|
List<Map<String, Object>> ZKqueryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(subsql, subHashMap);
|
||||||
|
String preReceiverequestdetailname = ZKqueryForList.get(0).get("RECEIVEREQUESTDETAILNAME").toString();
|
||||||
|
|
||||||
|
String shipRequestDetailName = qtyQueryForList.get(0).getShipRequestDetailName() == null ? "" : qtyQueryForList.get(0).getShipRequestDetailName().toString();
|
||||||
|
untils.fahuoSplit(newPalletNo, shipRequestName, preReceiverequestdetailname, bigQty2);
|
||||||
|
|
||||||
|
// 原条码扣减拆出的数量,用剩余数量更新原条码,条码不变,数量更新
|
||||||
|
SetEventInfo setEventInfo = new SetEventInfo();
|
||||||
|
Map<String, Object> pakHashMap = new HashMap<>();
|
||||||
|
pakHashMap.put("materialQuantity", restQty.doubleValue());
|
||||||
|
pakHashMap.put("materialQuantity2", 0);
|
||||||
|
pakHashMap.put("shipRequestName", "");
|
||||||
|
pakHashMap.put("shipRequestDetailName", "");
|
||||||
|
|
||||||
|
EventInfo eventInfo = new EventInfoUtil().makeEventInfo("备货出库调拨出拆分条码", eventUser, "拆分条码");
|
||||||
|
setEventInfo.setUserColumns(pakHashMap);
|
||||||
|
MaterialPackingServiceProxy.getMaterialPackingService().setEvent(new MaterialPackingKey( "SDK", MATERIALPACKINGNAME), eventInfo, setEventInfo);
|
||||||
|
|
||||||
|
// 删除被拆分的原条码数据,用拆分出的新条码覆盖,进行后面的过账,现场仓过账只过账已拆分出的数量,剩余数量的原条码不过账
|
||||||
|
boolean deletePacking = materialPackingKeyList.remove(MATERIALPACKINGNAME);
|
||||||
|
if (deletePacking) {
|
||||||
|
materialPackingKeyList.add(newPalletNo);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
makeEventInfo.setEventName("调拨出库");
|
||||||
|
makeEventInfo.setEventComment("备货调拨出库");
|
||||||
|
billCode=TransferStockOut_NLCC(shipRequestName, "SDK", eventUser,materialPackingKeyList,commitDate);
|
||||||
|
untils.SaveUnDoInfo_ForSap(materialPackingKeyList, billCode, makeEventInfo);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "01"://生产领料
|
||||||
|
case "02"://生产补料
|
||||||
|
if ("01".equals(shipRequestType)){
|
||||||
|
makeEventInfo.setEventName("CompletedShipRequestLL");
|
||||||
|
makeEventInfo.setEventComment("CompletedShipRequestLL");
|
||||||
|
}else {
|
||||||
|
makeEventInfo.setEventName("CompletedShipRequestBL");
|
||||||
|
makeEventInfo.setEventComment("CompletedShipRequestBL");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 判断是否是现场仓
|
||||||
|
String IsSql = "SELECT m.ERPRECEIVELOCATION,m.ERPLOCATION,m.ERPRECEIVEFACTORY FROM MATERIALSHIPREQUESTDETAIL m WHERE SHIPREQUESTNAME = :SHIPREQUESTNAME";
|
||||||
|
Map<String,Object> bpc=new HashMap<>();
|
||||||
|
bpc.put("SHIPREQUESTNAME", shipRequestName);
|
||||||
|
List<Map<String,Object>> receiveList = IDMFrameServiceProxy.getSqlTemplate().queryForList(IsSql, bpc);
|
||||||
|
String ERPRECEIVELOCATION = receiveList.get(0).get("ERPRECEIVELOCATION") == null ? "" : receiveList.get(0).get("ERPRECEIVELOCATION").toString();
|
||||||
|
String ERPLOCATION = receiveList.get(0).get("ERPLOCATION") == null ? "" : receiveList.get(0).get("ERPLOCATION").toString();
|
||||||
|
String ERPRECEIVEFACTORY = receiveList.get(0).get("ERPRECEIVEFACTORY") == null ? "" : receiveList.get(0).get("ERPRECEIVEFACTORY").toString();
|
||||||
|
|
||||||
|
//判断是否为MES需要二次接收的物料
|
||||||
|
/*String sqlc=" SELECT e.ENUMVALUE FROM MES_ENUMDEFVALUE e \r\n" +
|
||||||
|
" WHERE e.ENUMNAME ='ConfirmReceiveArea'\r\n" +
|
||||||
|
" AND e.ENUMVALUE in(\r\n" +
|
||||||
|
" SELECT p.AREANAME FROM MES_PRODUCTREQUEST p \r\n" +
|
||||||
|
" WHERE p.PRODUCTREQUESTNAME =(SELECT m.RECEIVEPRODUCTIONORDERNUMBER FROM MATERIALSHIPREQUESTDETAIL m \r\n" +
|
||||||
|
" WHERE m.SHIPREQUESTNAME=:SHIPREQUESTNAME AND RECEIVEPRODUCTIONORDERNUMBER IS NOT NULL AND ROWNUM=1))";*/
|
||||||
|
List<Map<String,Object>> src = new ArrayList<Map<String,Object>>();
|
||||||
|
String sqlQuery = " SELECT m.RECEIVEPRODUCTIONORDERNUMBER FROM MATERIALSHIPREQUESTDETAIL m " +
|
||||||
|
" WHERE m.SHIPREQUESTNAME=:SHIPREQUESTNAME AND RECEIVEPRODUCTIONORDERNUMBER IS NOT NULL AND ROWNUM=1";
|
||||||
|
List<Map<String,Object>> materialShipRequestDetailList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sqlQuery, bpc);
|
||||||
|
if (null != materialShipRequestDetailList && !materialShipRequestDetailList.isEmpty()){
|
||||||
|
String productRequestName = materialShipRequestDetailList.get(0).get("RECEIVEPRODUCTIONORDERNUMBER") == null ? "" : materialShipRequestDetailList.get(0).get("RECEIVEPRODUCTIONORDERNUMBER").toString().substring(4);
|
||||||
|
String sqlc = " SELECT e.ENUMVALUE FROM ENUMDEFVALUE@MES_PRODUCTREQUEST e \r\n" +
|
||||||
|
" WHERE e.ENUMNAME ='ConfirmReceiveArea'\r\n" +
|
||||||
|
" AND e.ENUMVALUE in(\r\n" +
|
||||||
|
" SELECT p.AREANAME FROM PRODUCTREQUEST@MES_PRODUCTREQUEST p \r\n" +
|
||||||
|
" WHERE p.PRODUCTREQUESTNAME =:PRODUCTREQUESTNAME)";
|
||||||
|
bpc.put("PRODUCTREQUESTNAME", productRequestName);
|
||||||
|
src = IDMFrameServiceProxy.getSqlTemplate().queryForList(sqlc, bpc);
|
||||||
|
}
|
||||||
|
//MES需要接收,则只抛送数据。 或如果是现场仓,先移到现场仓
|
||||||
|
if (src.size()>0){
|
||||||
|
billCode="Y";
|
||||||
|
String sqlZK=" SELECT\r\n" +
|
||||||
|
" t.MATERIALSPECNAME,m.MATERIALPACKINGNAME,\r\n" +
|
||||||
|
" t.ERPFACTORY,\r\n" +
|
||||||
|
" t.ERPLOCATION,\r\n" +
|
||||||
|
" m2.SHIPREQUESTDETAILTYPE,\r\n" +
|
||||||
|
" t.UNIT,\r\n" +
|
||||||
|
" m1.COSTCENTER,\r\n" +
|
||||||
|
" m1.SHIPREQUESTNAME,\r\n" +
|
||||||
|
" m1.SHIPREQUESTDETAILNAME,\r\n" +
|
||||||
|
" m1.ERPRECEIVELOCATION,\r\n" +
|
||||||
|
" m1.ERPRECEIVEFACTORY,\r\n" +
|
||||||
|
" m1.SENDSALESORDER ,m1.SENDSALESORDERDETAILNO,\r\n" +
|
||||||
|
" CASE WHEN m1.SENDSALESORDER IS NOT NULL THEN 'E' ELSE '' END SOBKZ,\r\n" +
|
||||||
|
" (\r\n" +
|
||||||
|
" SELECT\r\n" +
|
||||||
|
" RECEIVEPRODUCTIONORDERNUMBER\r\n" +
|
||||||
|
" FROM\r\n" +
|
||||||
|
" MATERIALSHIPREQUESTDETAIL m5\r\n" +
|
||||||
|
" WHERE\r\n" +
|
||||||
|
" m5.SHIPREQUESTNAME =:SHIPREQUESTNAME\r\n" +
|
||||||
|
" AND m5.MATERIALSPECNAME = t.MATERIALSPECNAME\r\n" +
|
||||||
|
" ORDER BY\r\n" +
|
||||||
|
" m5.USEDATE,\r\n" +
|
||||||
|
" m5.SHIPREQUESTDETAILNAME FETCH FIRST ROW ONLY)RECEIVEPRODUCTIONORDERNUMBER,\r\n" +
|
||||||
|
" SUM(m.QTY) AS MATERIALQUANTITY\r\n" +
|
||||||
|
" FROM \r\n" +
|
||||||
|
" MATERIALPACKINGSUB m\r\n" +
|
||||||
|
" LEFT JOIN MATERIALPACKING T ON \r\n" +
|
||||||
|
" m.MATERIALPACKINGNAME = T.MATERIALPACKINGNAME\r\n" +
|
||||||
|
" 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 = 'Stocked'\r\n" +
|
||||||
|
" AND T.MATERIALPACKINGNAME IN (:BOXLIST)\r\n" +
|
||||||
|
" GROUP BY\r\n" +
|
||||||
|
" t.MATERIALSPECNAME,\r\n" +
|
||||||
|
" t.ERPFACTORY,\r\n" +
|
||||||
|
" t.ERPLOCATION,\r\n" +
|
||||||
|
" m2.SHIPREQUESTDETAILTYPE,\r\n" +
|
||||||
|
" t.UNIT,\r\n" +
|
||||||
|
" m1.COSTCENTER,\r\n" +
|
||||||
|
" m1.SHIPREQUESTNAME,m1.SENDSALESORDER ,m1.SENDSALESORDERDETAILNO,\r\n" +
|
||||||
|
" m1.SHIPREQUESTDETAILNAME,\r\n" +
|
||||||
|
" m1.ERPRECEIVELOCATION,\r\n" +
|
||||||
|
" m1.ERPRECEIVEFACTORY,m.MATERIALPACKINGNAME";
|
||||||
|
|
||||||
|
// 转库到线边仓
|
||||||
|
Map<String, Object> hashMapZK = new HashMap<String, Object>();
|
||||||
|
hashMapZK.put("BOXLIST", materialPackingKeyList);
|
||||||
|
hashMapZK.put("SHIPREQUESTNAME", shipRequestName);
|
||||||
|
hashMapZK.put("SITENAME", siteName);
|
||||||
|
List<Map<String, Object>> ZKqueryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sqlZK.toString(), hashMapZK);
|
||||||
|
|
||||||
|
for (int z = 0; z < ZKqueryForList.size(); z++) {
|
||||||
|
String materialPackingName = ZKqueryForList.get(z).get("MATERIALPACKINGNAME").toString();
|
||||||
|
materialPackingKeyList.add(materialPackingName);
|
||||||
|
MaterialPackingKey materialPackingKey = new MaterialPackingKey("SDK",materialPackingName);
|
||||||
|
arrayList.add(materialPackingKey);
|
||||||
|
}
|
||||||
|
/*List<MaterialPackingKey> mpKeyList = new ArrayList<MaterialPackingKey> ();
|
||||||
|
SetEventInfo setEventInfo = new SetEventInfo();
|
||||||
|
for (MaterialPackingKey materialPacking : arrayList) {
|
||||||
|
MaterialPackingKey key = materialPacking;
|
||||||
|
mpKeyList.add(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, Object> hashMapPack = new HashMap<String,Object> ();
|
||||||
|
hashMapPack.put("erpLocation", ERPRECEIVELOCATION == null ? "" : ERPRECEIVELOCATION);
|
||||||
|
hashMapPack.put("erpFactory", ERPRECEIVEFACTORY == null ? "" : ERPRECEIVEFACTORY);
|
||||||
|
hashMapPack.put("locationName", "");
|
||||||
|
hashMapPack.put("lastEventUser", eventUser);
|
||||||
|
hashMapPack.put("unDoID", billCode);
|
||||||
|
setEventInfo.setUserColumns(hashMapPack);
|
||||||
|
MaterialPackingServiceProxy.getMaterialPackingService().setEvent(mpKeyList, makeEventInfo, setEventInfo);
|
||||||
|
*/
|
||||||
|
//抛送MES数据
|
||||||
|
//untils.sendMaterialInfoToMES_NEW2(shipRequestName, "", materialPackingKeyList);
|
||||||
|
untils.StockOutSendMaterialInfoToMES(shipRequestName, "", materialPackingKeyList);
|
||||||
|
//更新BOX状态
|
||||||
|
EventInfo mesEventInfo = eventInfoUtil.makeEventInfo("CompletedShipRequestMES", eventUser, "CompletedShipRequestMES");
|
||||||
|
SetEventInfo setEventInfo = new SetEventInfo();
|
||||||
|
Map<String, Object> hashMapPack = new HashMap<String,Object> ();
|
||||||
|
hashMapPack.put("stockState", GenericServiceProxy.getConstantMap().STOCKSTATE_STOCKPENDING);
|
||||||
|
hashMapPack.put("oldStockState", GenericServiceProxy.getConstantMap().STOCKSTATE_STOCKED);
|
||||||
|
setEventInfo.setUserColumns(hashMapPack);
|
||||||
|
MaterialPackingServiceProxy.getMaterialPackingService().setEvent(arrayList, mesEventInfo, setEventInfo);
|
||||||
|
} else {
|
||||||
|
if(!ERPRECEIVELOCATION.isEmpty()) {
|
||||||
|
|
||||||
|
// 拆条码,查询MATERIALQUANTITY 与 MATERIALQUANTITY2是否相等,如果相等则未修改了数量,不相等则修改了数量
|
||||||
|
// 如果已修改数量,则进行拆条码
|
||||||
|
for (int z = 0; z < packingQueryForList.size(); z++) {
|
||||||
|
String MATERIALPACKINGNAME = packingQueryForList.get(z).get("MATERIALPACKINGNAME").toString();
|
||||||
|
Object[] bindSet = {MATERIALPACKINGNAME};
|
||||||
|
String qtysql = "WHERE MATERIALPACKINGNAME = ?";
|
||||||
|
List<MaterialPacking> qtyQueryForList = MaterialPackingServiceProxy.getMaterialPackingService().select(qtysql, bindSet);
|
||||||
|
|
||||||
|
String qty = new Double(qtyQueryForList.get(0).getMaterialQuantity()) == null ? "0" : String.valueOf(qtyQueryForList.get(0).getMaterialQuantity());
|
||||||
|
|
||||||
|
String qty2 = new Double(qtyQueryForList.get(0).getMaterialQuantity2()) == null ? "0" : String.valueOf(qtyQueryForList.get(0).getMaterialQuantity2());
|
||||||
|
String materialPackingName = qtyQueryForList.get(0).getMaterialPackingName();
|
||||||
|
String charge = qtyQueryForList.get(0).getCharge();
|
||||||
|
BigDecimal bigQty = new BigDecimal(qty);
|
||||||
|
// 已拆数量
|
||||||
|
BigDecimal bigQty2 = new BigDecimal(qty2);
|
||||||
|
|
||||||
|
// 如果已拆数量不等于原数量,并且已拆数量为0(未拆分数量)
|
||||||
|
if(bigQty.compareTo(bigQty2) != 0 && !"0.0".equals(qty2)) {
|
||||||
|
// 剩余数量
|
||||||
|
BigDecimal restQty = bigQty.subtract(bigQty2);
|
||||||
|
|
||||||
|
// 生成新的拆分条码
|
||||||
|
String stringBigQty2 = bigQty2.toString();
|
||||||
|
String newPalletNo = CodeGenerator.packingGenerateCode(materialPackingName,stringBigQty2,charge);
|
||||||
|
|
||||||
|
// 写入拆分的新条码,更新原数据库
|
||||||
|
List<MaterialPacking> boxList = new ArrayList<MaterialPacking>();
|
||||||
|
// MaterialPackingKey materialpackingKey = new MaterialPackingKey();
|
||||||
|
MaterialPacking materialpackingNew = new MaterialPacking();
|
||||||
|
// materialpackingKey.setSiteName("SDK");
|
||||||
|
// materialpackingKey.setMaterialPackingName(newPalletNo);
|
||||||
|
// materialpackingNew.setKey(materialpackingKey);
|
||||||
|
|
||||||
|
// 复制一个当前的原标签数据
|
||||||
|
materialpackingNew.setKey(qtyQueryForList.get(0).getKey());
|
||||||
|
// MaterialPacking materialpackingNew = qtyQueryForList.get(z);
|
||||||
|
// 设置新为标签和数量
|
||||||
|
materialpackingNew.setMaterialPackingName(newPalletNo);
|
||||||
|
// bigQty2 转double类型
|
||||||
|
materialpackingNew.setMaterialQuantity(bigQty2.doubleValue());
|
||||||
|
boxList.add(qtyQueryForList.get(0));
|
||||||
|
boxList.add(materialpackingNew);
|
||||||
|
boolean moveTransformOut = packingChargeSplit(boxList, eventUser);
|
||||||
|
if (moveTransformOut != true) {
|
||||||
|
throw new RuntimeException("修改数量拆分失败");
|
||||||
|
}
|
||||||
|
|
||||||
|
//记录到拆分表
|
||||||
|
String subsql = "SELECT RECEIVEREQUESTDETAILNAME FROM MATERIALPACKINGSUB WHERE RECEIVEREQUESTNAME = :RECEIVEREQUESTNAME AND MATERIALPACKINGNAME = :MATERIALPACKINGNAME\n";
|
||||||
|
Map<String, Object> subHashMap = new HashMap<String, Object>();
|
||||||
|
subHashMap.put("RECEIVEREQUESTNAME", shipRequestName);
|
||||||
|
subHashMap.put("MATERIALPACKINGNAME", MATERIALPACKINGNAME);
|
||||||
|
List<Map<String, Object>> ZKqueryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(subsql, subHashMap);
|
||||||
|
String preReceiverequestdetailname = ZKqueryForList.get(0).get("RECEIVEREQUESTDETAILNAME").toString();
|
||||||
|
|
||||||
|
String shipRequestDetailName = qtyQueryForList.get(0).getShipRequestDetailName() == null ? "" : qtyQueryForList.get(0).getShipRequestDetailName().toString();
|
||||||
|
untils.fahuoSplit(newPalletNo, shipRequestName, preReceiverequestdetailname, bigQty2);
|
||||||
|
|
||||||
|
// 原条码扣减拆出的数量,用剩余数量更新原条码,条码不变,数量更新
|
||||||
|
SetEventInfo setEventInfo = new SetEventInfo();
|
||||||
|
Map<String, Object> pakHashMap = new HashMap<>();
|
||||||
|
pakHashMap.put("materialQuantity", restQty.doubleValue());
|
||||||
|
pakHashMap.put("materialQuantity2", 0);
|
||||||
|
pakHashMap.put("shipRequestName", "");
|
||||||
|
pakHashMap.put("shipRequestDetailName", "");
|
||||||
|
|
||||||
|
EventInfo eventInfo = new EventInfoUtil().makeEventInfo("拆分条码", eventUser, "备货出库拆分条码");
|
||||||
|
setEventInfo.setUserColumns(pakHashMap);
|
||||||
|
MaterialPackingServiceProxy.getMaterialPackingService().setEvent(new MaterialPackingKey( "SDK", MATERIALPACKINGNAME), eventInfo, setEventInfo);
|
||||||
|
|
||||||
|
// 删除被拆分的原条码数据,用拆分出的新条码覆盖,进行后面的过账,现场仓过账只过账已拆分出的数量,剩余数量的原条码不过账
|
||||||
|
boolean deletePacking = materialPackingKeyList.remove(MATERIALPACKINGNAME);
|
||||||
|
if (deletePacking) {
|
||||||
|
materialPackingKeyList.add(newPalletNo);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//new MESServiceImpl().NeedReceiveMaterialInfoSend_NEW(shipRequestName, "SDK", materialPackingKeyList);
|
||||||
|
billCode="Y";
|
||||||
|
String sqlZK=" SELECT\r\n" +
|
||||||
|
" t.MATERIALSPECNAME,m.MATERIALPACKINGNAME,\r\n" +
|
||||||
|
" t.ERPFACTORY,\r\n" +
|
||||||
|
" t.ERPLOCATION,\r\n" +
|
||||||
|
" t.LOCATIONNAME,\r\n" +
|
||||||
|
" m2.SHIPREQUESTDETAILTYPE,\r\n" +
|
||||||
|
" t.UNIT,\r\n" +
|
||||||
|
" m1.COSTCENTER,\r\n" +
|
||||||
|
" m1.SHIPREQUESTNAME,\r\n" +
|
||||||
|
" m1.SHIPREQUESTDETAILNAME,\r\n" +
|
||||||
|
" m1.ERPRECEIVELOCATION,\r\n" +
|
||||||
|
" m1.ERPRECEIVEFACTORY,\r\n" +
|
||||||
|
" m1.SENDSALESORDER ,m1.SENDSALESORDERDETAILNO,\r\n" +
|
||||||
|
" CASE WHEN m1.SENDSALESORDER IS NOT NULL THEN 'E' ELSE '' END SOBKZ,\r\n" +
|
||||||
|
" (\r\n" +
|
||||||
|
" SELECT\r\n" +
|
||||||
|
" RECEIVEPRODUCTIONORDERNUMBER\r\n" +
|
||||||
|
" FROM\r\n" +
|
||||||
|
" MATERIALSHIPREQUESTDETAIL m5\r\n" +
|
||||||
|
" WHERE\r\n" +
|
||||||
|
" m5.SHIPREQUESTNAME =:SHIPREQUESTNAME\r\n" +
|
||||||
|
" AND m5.MATERIALSPECNAME = t.MATERIALSPECNAME\r\n" +
|
||||||
|
" ORDER BY\r\n" +
|
||||||
|
" m5.USEDATE,\r\n" +
|
||||||
|
" m5.SHIPREQUESTDETAILNAME FETCH FIRST ROW ONLY)RECEIVEPRODUCTIONORDERNUMBER,\r\n" +
|
||||||
|
" SUM(m.QTY) AS MATERIALQUANTITY\r\n" +
|
||||||
|
" FROM \r\n" +
|
||||||
|
" MATERIALPACKINGSUB m\r\n" +
|
||||||
|
" LEFT JOIN MATERIALPACKING T ON \r\n" +
|
||||||
|
" m.MATERIALPACKINGNAME = T.MATERIALPACKINGNAME\r\n" +
|
||||||
|
" 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 = 'Stocked'\r\n" +
|
||||||
|
" AND T.MATERIALPACKINGNAME IN (:BOXLIST)\r\n" +
|
||||||
|
" GROUP BY\r\n" +
|
||||||
|
" t.MATERIALSPECNAME,\r\n" +
|
||||||
|
" t.ERPFACTORY,\r\n" +
|
||||||
|
" t.ERPLOCATION,\r\n" +
|
||||||
|
" t.LOCATIONNAME,\r\n" +
|
||||||
|
" m2.SHIPREQUESTDETAILTYPE,\r\n" +
|
||||||
|
" t.UNIT,\r\n" +
|
||||||
|
" m1.COSTCENTER,\r\n" +
|
||||||
|
" m1.SHIPREQUESTNAME,m1.SENDSALESORDER ,m1.SENDSALESORDERDETAILNO,\r\n" +
|
||||||
|
" m1.SHIPREQUESTDETAILNAME,\r\n" +
|
||||||
|
" m1.ERPRECEIVELOCATION,\r\n" +
|
||||||
|
" m1.ERPRECEIVEFACTORY,m.MATERIALPACKINGNAME";
|
||||||
|
|
||||||
|
// 转库到线边仓
|
||||||
|
// String sqlZK = "SELECT b.MATERIALPACKINGNAME FROM MATERIALPACKINGSUB b WHERE b.MATERIALPACKINGNAME IN (:BOXLIST)";
|
||||||
|
Map<String, Object> hashMapZK = new HashMap<String, Object>();
|
||||||
|
hashMapZK.put("BOXLIST", materialPackingKeyList);
|
||||||
|
hashMapZK.put("SHIPREQUESTNAME", shipRequestName);
|
||||||
|
hashMapZK.put("SITENAME", siteName);
|
||||||
|
List<Map<String, Object>> ZKqueryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sqlZK.toString(), hashMapZK);
|
||||||
|
List<String> SUBList = new ArrayList<> ();
|
||||||
|
for (int z = 0; z < ZKqueryForList.size(); z++) {
|
||||||
|
String materialPackingName = ZKqueryForList.get(z).get("MATERIALPACKINGNAME").toString();
|
||||||
|
SUBList.add(materialPackingName);
|
||||||
|
MaterialPackingKey materialPackingKey = new MaterialPackingKey("SDK",materialPackingName);
|
||||||
|
arrayList.add(materialPackingKey);
|
||||||
|
|
||||||
|
// 更新MATERIALPACKING表前仓库货位为现在货位和仓库数据,保存现仓库货位
|
||||||
|
Map<String, Object> row = ZKqueryForList.get(z);
|
||||||
|
String erpLocation = row.get("ERPLOCATION") == null ? "" : row.get("ERPLOCATION").toString();
|
||||||
|
String locationName = row.get("LOCATIONNAME") == null ? "" : row.get("LOCATIONNAME").toString();
|
||||||
|
String updSql = "UPDATE MATERIALPACKING SET PREERPLOCATION = :PREERPLOCATION, PRELOCATIONNAME = :PRELOCATIONNAME WHERE MATERIALPACKINGNAME = :MATERIALPACKINGNAME";
|
||||||
|
Map<String, Object> updHashMap = new HashMap<>();
|
||||||
|
updHashMap.put("PREERPLOCATION", erpLocation);
|
||||||
|
updHashMap.put("PRELOCATIONNAME", locationName);
|
||||||
|
updHashMap.put("MATERIALPACKINGNAME", materialPackingName);
|
||||||
|
try {
|
||||||
|
IDMFrameServiceProxy.getSqlTemplate().update(updSql, updHashMap);
|
||||||
|
} catch (Exception e) {
|
||||||
|
// 日志记录并抛出自定义异常,便于调试和事务回滚
|
||||||
|
throw new CustomException("更新仓库货位信息失败: " + materialPackingName, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
billCode = UnSourcedChangeLocation(arrayList,ERPRECEIVEFACTORY,
|
||||||
|
ERPRECEIVELOCATION, "", eventUser, commitDate );
|
||||||
|
|
||||||
|
List<MaterialPackingKey> mpKeyList = new ArrayList<MaterialPackingKey> ();
|
||||||
|
SetEventInfo setEventInfo = new SetEventInfo();
|
||||||
|
for (MaterialPackingKey materialPacking : arrayList) {
|
||||||
|
MaterialPackingKey key = materialPacking;
|
||||||
|
mpKeyList.add(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, Object> hashMapPack = new HashMap<String,Object> ();
|
||||||
|
hashMapPack.put("erpLocation", ERPRECEIVELOCATION == null ? "" : ERPRECEIVELOCATION);
|
||||||
|
hashMapPack.put("erpFactory", ERPRECEIVEFACTORY == null ? "" : ERPRECEIVEFACTORY);
|
||||||
|
hashMapPack.put("locationName", "");
|
||||||
|
hashMapPack.put("lastEventUser", eventUser);
|
||||||
|
hashMapPack.put("unDoID", billCode);
|
||||||
|
setEventInfo.setUserColumns(hashMapPack);
|
||||||
|
MaterialPackingServiceProxy.getMaterialPackingService().setEvent(mpKeyList, makeEventInfo, setEventInfo);
|
||||||
|
//抛送MES数据
|
||||||
|
Boolean success = untils.sendMaterialInfoToMES_NEW2(shipRequestName, "", SUBList,billCode,eventUser);
|
||||||
|
|
||||||
|
if (!success) {
|
||||||
|
String undo = cancelShipInter(billCode, eventUser);
|
||||||
|
if (undo == null || undo.isEmpty()) {
|
||||||
|
throw new GlobalException("下发mes失败后冲销失败!");
|
||||||
|
}else {
|
||||||
|
throw new GlobalException("发送到mes失败!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
makeEventInfo.setEventName("备货出库无来源转库");
|
||||||
|
makeEventInfo.setEventComment("备货出库无来源转库");
|
||||||
|
// WlySaveUnDoInfo( billCode,commitDate);
|
||||||
|
untils.SaveUnDoInfo_ForSap(materialPackingKeyList, billCode, makeEventInfo);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// billCode=toSAPService.ProductionStockOut_NEW(shipRequestName, "SDK", eventUser,materialPackingKeyList);
|
||||||
|
|
||||||
|
billCode=ProductionStockOut_NEW(shipRequestName, "SDK", eventUser,materialPackingKeyList,commitDate);
|
||||||
|
if (billCode.isEmpty()) {
|
||||||
|
throw new CustomException("SAP过账异常!");
|
||||||
|
}
|
||||||
|
//
|
||||||
|
//抛送MES数据
|
||||||
|
Boolean success = untils.sendMaterialInfoToMES_NEW(shipRequestName, "", materialPackingKeyList,billCode,eventUser);
|
||||||
|
//billCode = NCWServiceImpl.SaleOut2(shipRequestName, "SDK", eventUser,materialPackingKeyList,"");
|
||||||
|
// 如果mes发送失败,则进行sap过账冲销
|
||||||
|
if (!success) {
|
||||||
|
String undo = cancelShipInter(billCode, eventUser);
|
||||||
|
if (undo == null || undo.isEmpty()) {
|
||||||
|
throw new GlobalException("下发mes失败后冲销失败!");
|
||||||
|
}else {
|
||||||
|
throw new GlobalException("发送到mes失败!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
untils.SaveUnDoInfo_ForSap(materialPackingKeyList, billCode, makeEventInfo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "06"://成本中心领料
|
||||||
|
// billCode=toSAPService.orderStockOut(shipRequestName, "SDK", eventUser,materialPackingKeyList);
|
||||||
|
billCode=orderStockOut(shipRequestName, "SDK", eventUser,materialPackingKeyList,commitDate);
|
||||||
|
//抛送MES数据
|
||||||
|
Boolean success = untils.sendMaterialInfoToMES_NEW(shipRequestName, "", materialPackingKeyList,billCode,eventUser);
|
||||||
|
|
||||||
|
if (!success) {
|
||||||
|
String undo = cancelShipInter(billCode, eventUser);
|
||||||
|
if (undo == null || undo.isEmpty()) {
|
||||||
|
throw new GlobalException("下发mes失败后冲销失败!");
|
||||||
|
}else {
|
||||||
|
throw new GlobalException("发送到mes失败!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//更新MES管芯数据
|
||||||
|
new MESServiceImpl().updateDurable_ByCostcenter(shipRequestName, "SDK", eventUser, materialPackingKeyList);
|
||||||
|
//billCode = NCWServiceImpl.SaleOut2(shipRequestName, "SDK", eventUser,materialPackingKeyList,"");
|
||||||
|
untils.SaveUnDoInfo_ForSap(materialPackingKeyList, billCode, makeEventInfo);
|
||||||
|
break;
|
||||||
|
case "09"://研发领料
|
||||||
|
// billCode=toSAPService.orderStockOut(shipRequestName, "SDK", eventUser,materialPackingKeyList);
|
||||||
|
// billCode=orderStockOut(shipRequestName, "SDK", eventUser,materialPackingKeyList);
|
||||||
|
// //更新MES管芯数据
|
||||||
|
// new MESServiceImpl().updateDurable_ByCostcenter(shipRequestName, "SDK", eventUser, materialPackingKeyList);
|
||||||
|
// //billCode = NCWServiceImpl.SaleOut2(shipRequestName, "SDK", eventUser,materialPackingKeyList,"");
|
||||||
|
// untils.SaveUnDoInfo_ForSap(materialPackingKeyList, billCode, makeEventInfo);
|
||||||
|
break;
|
||||||
|
case "ZLF0"://销售出库确认 (单据类型ZLF0~ZLF8) SD023(销售回传)
|
||||||
|
case "ZLF1":
|
||||||
|
case "ZLF2":
|
||||||
|
case "ZLF3":
|
||||||
|
case "ZLF4":
|
||||||
|
case "ZLF5":
|
||||||
|
case "ZLF6":
|
||||||
|
case "ZLF7":
|
||||||
|
case "ZLF8":
|
||||||
|
makeEventInfo.setEventName("CompletedShipRequestZL");
|
||||||
|
makeEventInfo.setEventComment("CompletedShipRequestZL");
|
||||||
|
// billCode=toSAPService.saleStockOut_NEW(shipRequestName, "SDK", eventUser,materialPackingKeyList);
|
||||||
|
billCode=saleStockOut_NEW(shipRequestName, "SDK", eventUser,materialPackingKeyList,commitDate);
|
||||||
|
untils.SaveUnDoInfo_ForSap(materialPackingKeyList, billCode, makeEventInfo);
|
||||||
|
//单据类型等于ZLF0-ZLF9,物料编码以7开头都属于成品胶水需要调用QMS质检接口
|
||||||
|
String message = checkShipRequestTypeSendIQC(commitDate, siteName ,shipRequestName, makeEventInfo, materialPackingKeyList);
|
||||||
|
if (StringUtils.isNotEmpty(message)) {
|
||||||
|
throw new CustomException(message);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "08": // 委外
|
||||||
|
case "OEM": // 委外
|
||||||
|
// billCode=toSAPService.oemStockOut_NEW(shipRequestName, "SDK", eventUser,materialPackingKeyList);
|
||||||
|
billCode=oemStockOut_NEW(shipRequestName, "SDK", eventUser,materialPackingKeyList, commitDate);
|
||||||
|
untils.SaveUnDoInfo_ForSap(materialPackingKeyList, billCode, makeEventInfo);
|
||||||
|
break;
|
||||||
|
default :
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return billCode;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -287,7 +287,6 @@ public class MaterialUndoServiceImpl implements IMaterialUndoService {
|
|||||||
"GROUP BY RECEIVEREQUESTNAME,RECEIVEREQUESTDETAILNAME) M ON (T.SHIPREQUESTNAME = M.RECEIVEREQUESTNAME AND T.SHIPREQUESTDETAILNAME = M.RECEIVEREQUESTDETAILNAME)\r\n" +
|
"GROUP BY RECEIVEREQUESTNAME,RECEIVEREQUESTDETAILNAME) M ON (T.SHIPREQUESTNAME = M.RECEIVEREQUESTNAME AND T.SHIPREQUESTDETAILNAME = M.RECEIVEREQUESTDETAILNAME)\r\n" +
|
||||||
"WHEN MATCHED THEN UPDATE SET T.ASSIGNEDQUANTITY = T.ASSIGNEDQUANTITY - M.QTY,T.SALEOUTQUANTITY = T.SALEOUTQUANTITY - M.QTY";
|
"WHEN MATCHED THEN UPDATE SET T.ASSIGNEDQUANTITY = T.ASSIGNEDQUANTITY - M.QTY,T.SALEOUTQUANTITY = T.SALEOUTQUANTITY - M.QTY";
|
||||||
|
|
||||||
|
|
||||||
//根据当前的出库数量更新saleQty
|
//根据当前的出库数量更新saleQty
|
||||||
// String sql = "SELECT M.RECEIVEREQUESTNAME,M.RECEIVEREQUESTDETAILNAME,M.QTY FROM MATERIALPACKINGSUB M WHERE M.MATERIALPACKINGNAME = :MATERIALPACKINGNAME\r\n" +
|
// String sql = "SELECT M.RECEIVEREQUESTNAME,M.RECEIVEREQUESTDETAILNAME,M.QTY FROM MATERIALPACKINGSUB M WHERE M.MATERIALPACKINGNAME = :MATERIALPACKINGNAME\r\n" +
|
||||||
// "UNION \r\n" +
|
// "UNION \r\n" +
|
||||||
@ -359,6 +358,12 @@ public class MaterialUndoServiceImpl implements IMaterialUndoService {
|
|||||||
|
|
||||||
for (MaterialPacking materialPacking : list) {
|
for (MaterialPacking materialPacking : list) {
|
||||||
Map<String, Object> hashMap = new HashMap<String, Object> ();
|
Map<String, Object> hashMap = new HashMap<String, Object> ();
|
||||||
|
if(preLocationName == null) {
|
||||||
|
preLocationName = "";
|
||||||
|
}
|
||||||
|
if(preErpLocation == null) {
|
||||||
|
preErpLocation = "";
|
||||||
|
}
|
||||||
hashMap.put("erpLocation", preErpLocation);
|
hashMap.put("erpLocation", preErpLocation);
|
||||||
hashMap.put("locationName", preLocationName);
|
hashMap.put("locationName", preLocationName);
|
||||||
// hashMap.put("preErpLocation", materialPacking.getErpLocation());
|
// hashMap.put("preErpLocation", materialPacking.getErpLocation());
|
||||||
@ -381,7 +386,7 @@ public class MaterialUndoServiceImpl implements IMaterialUndoService {
|
|||||||
public void wlyZkUndo (String undoId, String user,String preErpLocation,String preLocationName) throws Exception {
|
public void wlyZkUndo (String undoId, String user,String preErpLocation,String preLocationName) throws Exception {
|
||||||
|
|
||||||
String billCode = toSAPService.cancelShipInter(undoId, user);
|
String billCode = toSAPService.cancelShipInter(undoId, user);
|
||||||
if (billCode == null) {
|
if (billCode == null || billCode.equals("")) {
|
||||||
throw new GlobalException("报送ERP失败,请联系IT处理!");
|
throw new GlobalException("报送ERP失败,请联系IT处理!");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -392,9 +397,15 @@ public class MaterialUndoServiceImpl implements IMaterialUndoService {
|
|||||||
List<MaterialPacking> list = MaterialPackingServiceProxy.getMaterialPackingService().select(condition, bindSet);
|
List<MaterialPacking> list = MaterialPackingServiceProxy.getMaterialPackingService().select(condition, bindSet);
|
||||||
SetEventInfo setEventInfo = new SetEventInfo();
|
SetEventInfo setEventInfo = new SetEventInfo();
|
||||||
|
|
||||||
|
// 新加
|
||||||
for (MaterialPacking materialPacking : list) {
|
for (MaterialPacking materialPacking : list) {
|
||||||
Map<String, Object> hashMap = new HashMap<String, Object> ();
|
Map<String, Object> hashMap = new HashMap<String, Object> ();
|
||||||
|
if(preLocationName == null) {
|
||||||
|
preLocationName = "";
|
||||||
|
}
|
||||||
|
if(preErpLocation == null) {
|
||||||
|
preErpLocation = "";
|
||||||
|
}
|
||||||
hashMap.put("erpLocation", preErpLocation);
|
hashMap.put("erpLocation", preErpLocation);
|
||||||
hashMap.put("locationName", preLocationName);
|
hashMap.put("locationName", preLocationName);
|
||||||
// hashMap.put("preErpLocation", materialPacking.getErpLocation());
|
// hashMap.put("preErpLocation", materialPacking.getErpLocation());
|
||||||
|
Loading…
x
Reference in New Issue
Block a user