This commit is contained in:
郭飞 2025-05-23 17:00:04 +08:00
commit 8fc2cc900e
5 changed files with 90 additions and 99 deletions

View File

@ -48,7 +48,7 @@ public class QMSServiceImpl implements QMSService{
" TO_CHAR(T.RECEIVETIME ,'YYYY-MM-DD' ) deliveryDate, \r\n" +
" T.RECEIVEREQUESTNAME , \r\n" +
" M3.MATERIALSPECNAME materialCode, \r\n" +
" M3.DESC_CN materialName, \r\n" +
" M3.DESCRIPTION materialName, \r\n" +
" M3.MATERIALGROUP materialGroup, \r\n" +
" COUNT(DISTINCT T.CHARGE ) batchQuantity, \r\n" +
" T.UNIT quantityUnit, \r\n" +
@ -410,7 +410,7 @@ public class QMSServiceImpl implements QMSService{
" T.LOCATIONNAME,\r\n" +
" TO_CHAR(T.RECEIVETIME, 'YYYY-MM-DD') deliveryDate,\r\n" +
" M3.MATERIALSPECNAME materialCode,\r\n" +
" M3.DESC_CN materialName,\r\n" +
" M3.DESCRIPTION materialName,\r\n" +
" M3.MATERIALGROUP materialGroup,\r\n" +
" COUNT(DISTINCT T.CHARGE) batchQuantity,\r\n" +
" T.UNIT quantityUnit,\r\n" +
@ -479,41 +479,53 @@ public class QMSServiceImpl implements QMSService{
public String sendToIQCByDataList(String opCode, String siteName, String deliveryName) throws CustomException {
String sql = " \n" +
"SELECT \n" +
"WITH AA AS (\n" +
"\tSELECT\n" +
"\t\tP.SITENAME,\n" +
" \t\tEL.DESCRIPTION AS ERPLOCATIONDESC,\n" +
"\t\tP.LOCATIONNAME,\t\n" +
"\t\tTO_CHAR(P.RECEIVETIME ,'YYYY-MM-DD' ) deliveryDate,\n" +
"\t\tDR.RECEIVEREQUESTNAME,\n" +
"\t\tP.RECEIVEREQUESTNAME,\n" +
"\t\tP.ERPFACTORY,\n" +
"\t\tP.ERPLOCATION,\n" +
"\t\tP.MATERIALSPECNAME AS materialCode,\n" +
"\t\tMP.DESC_CN AS materialName,\n" +
"\t\tMP.MATERIALGROUP AS materialGroup,\n" +
"\t\tP.LOCATIONNAME,\t\n" +
"\t\tP.UNIT AS quantityUnit,\n" +
"\t\tLISTAGG(DISTINCT P.CHARGE , ';') WITHIN GROUP (ORDER BY P.CHARGE) AS LOTS,\n" +
"\t\tCOUNT(DISTINCT P.CHARGE ) batchQuantity,\n" +
" P.UNIT AS quantityUnit,\n" +
"\t\tSP.SUPPLIERNO AS SUPPLIERCODE,\n" +
"\t\tSP.SUPPLIERNAME,\n" +
"\t\tLISTAGG(DISTINCT P.CHARGE , ';') WITHIN GROUP (ORDER BY P.CHARGE) AS LOTS\n" +
"\t\t\tFROM\n" +
" MATERIALPACKING P \n" +
"LEFT JOIN SUPPLIER SP\tON SP.SUPPLIERNO = P.SUPPLIERNAME\n" +
"LEFT JOIN BS_ERPLOCATION EL ON EL.ERPLOCATIONNAME = P.ERPLOCATION AND EL.SITENAME = P.SITENAME\n" +
"LEFT JOIN MATERIALSPEC MP ON MP.MATERIALSPECNAME = P.MATERIALSPECNAME AND MP.SITENAME = P.SITENAME\n" +
"LEFT JOIN BS_MATERIALFACTORY BF ON BF.MATERIALSPECNAME = P.MATERIALSPECNAME AND BF.ERPFACTORY = P.ERPFACTORY\n" +
"LEFT JOIN MATERIALRECEIVEREQUESTDETAIL RD ON P.SITENAME = RD.SITENAME \n" +
"LEFT JOIN MATERIALRECEIVEREQUEST R ON RD.RECEIVEREQUESTNAME = R.RECEIVEREQUESTNAME AND RD.SITENAME = R.SITENAME\n" +
"LEFT JOIN MATERIALDELIVERYRECEIVE DR ON R.RECEIVEREQUESTNAME=DR.RECEIVEREQUESTNAME \n" +
"LEFT JOIN MATERIALDELIVERY D ON DR.DELIVERYNAME = D.DELIVERYNAME WHERE\n" +
" D.SITENAME =:SITENAME\n" +
" AND D.DELIVERYNAME =:DELIVERYNAME\n" +
" AND D.DELIVERYSTATE = '02'\n" +
"\t\tAND DR.MATERIALSPECNAME=RD.MATERIALSPECNAME\n" +
"\t\tAND RD.RECEIVEREQUESTDETAILNAME=DR.RECEIVEREQUESTDETAILNAME\n" +
"\t\tAND P.RECEIVEREQUESTNAME = DR.DELIVERYNAME \n" +
"\t\tAND P.MATERIALSPECNAME = DR.MATERIALSPECNAME AND P.STOCKSTATE = 'Created' \n" +
"\t\tP.SUPPLIERNAME\n" +
"\tFROM\n" +
"\t\tMATERIALPACKING P \n" +
"\tWHERE\n" +
"\t\tP.RECEIVEREQUESTNAME =:DELIVERYNAME\n" +
"\t\tGROUP BY \n" +
"\t\tP.SITENAME,EL.DESCRIPTION,TO_CHAR(P.RECEIVETIME ,'YYYY-MM-DD' ),\n" +
"\t\tP.MATERIALSPECNAME,MP.DESC_CN, MP.MATERIALGROUP,P.UNIT,SP.SUPPLIERNO, SP.SUPPLIERNAME,\n" +
"\t\tSUBSTR(P.TRUEGG , 1, INSTR(P.TRUEGG , '*') - 1) ,P.LOCATIONNAME,DR.RECEIVEREQUESTNAME ";
"\t\tP.SITENAME,\n" +
"\t\tP.RECEIVEREQUESTNAME,\n" +
"\t\tP.ERPFACTORY,\n" +
"\t\tP.ERPLOCATION,\n" +
"\t\tP.MATERIALSPECNAME,\n" +
"\t\tP.LOCATIONNAME,\n" +
"\t\tP.UNIT,\n" +
"\t\tP.SUPPLIERNAME\n" +
"\t\t)\n" +
"\t\t\n" +
"SELECT\n" +
"\tAA.SITENAME,\n" +
"AA.RECEIVEREQUESTNAME,\n" +
"\t\tAA.ERPFACTORY,\n" +
"\t\tAA.ERPLOCATION,\n" +
"\t\tAA.materialCode,\n" +
"\t\tAA.LOCATIONNAME,\t\n" +
"\t\tAA.quantityUnit,\n" +
"\t\tAA.LOTS,\n" +
"\t\tAA.batchQuantity,\n" +
"\t\tAA.SUPPLIERNAME,\n" +
"\t\tEL.DESCRIPTION AS ERPLOCATIONDESC,\n" +
"\t\tMP.MATERIALGROUP,\n" +
"\t\tMP.DESCRIPTION\n" +
"FROM\n" +
"AA\n" +
"LEFT JOIN BS_ERPLOCATION EL ON EL.ERPLOCATIONNAME = AA.ERPLOCATION\n" +
"LEFT JOIN MATERIALSPEC MP ON MP.MATERIALSPECNAME = AA.materialCode\n" +
"WHERE\n" +
"\tAA.RECEIVEREQUESTNAME =:DELIVERYNAME ";
Map<String, Object> hashMap = new HashMap<String,Object> ();
hashMap.put("SITENAME", siteName);
hashMap.put("DELIVERYNAME", deliveryName);

View File

@ -6602,53 +6602,43 @@ public class ToSAPServiceImpl {
List<MaterialPackingKey> materialPackingKeyList = new ArrayList<>();
List<Map<String, Object>> qmsDataList = new ArrayList<>();
//依据采购订单查询待入库的物料(MATERIALPACKING)
String querySql = " SELECT " +
" DR.DELIVERYNUM AS MATERIALQUANTITY,\n" +
" DR.RECEIVEREQUESTNAME,\n" +
" DR.RECEIVEREQUESTDETAILNAME,\n" +
" P.ERPLOCATION,\n" +
" P.ERPFACTORY,\n" +
" P.UNIT,\n" +
"\t\tSUM(P.FQTY) AS FQTY,\n" +
" P.FUNIT,\n" +
" P.REMARK,\n" +
"\t\tP.OQARESULTSTATE,\n" +
"\t\tBF.IQCFLAG,\n" +
" P.OQARESULT,\n" +
"\t\tR.RECEIVEREQUESTTYPE,\n" +
"\t\tEL.DESCRIPTION AS ERPLOCATIONDESC,\n" +
"\t\tSP.SUPPLIERNO AS SUPPLIERCODE,\n" +
"\t\tSP.SUPPLIERNAME,\n" +
"\t\tMP.MATERIALSPECNAME AS MATERIALSPECNAME,\n" +
"\t\tMP.DESC_CN AS MATERIALNAME,\n" +
"\t\tMP.MATERIALGROUP,\n" +
"\t\tP.LOCATIONNAME,\t\t\n" +
"\t\tP.RECEIVETIME,\n" +
"\t\tP.TRUEGG " +
String querySql = " \n" +
"\t\t\n" +
"\t\tWITH AA AS (\n" +
"\tSELECT DISTINCT\n" +
"\t\tP.RECEIVEREQUESTNAME,\n" +
"\t\tP.ERPFACTORY,\n" +
"\t\tP.ERPLOCATION,\n" +
"\t\tP.MATERIALSPECNAME \n" +
"\tFROM\n" +
"\t\tMATERIALPACKING P \n" +
"\tWHERE\n" +
"\t\tP.RECEIVEREQUESTNAME =:DELIVERYNAME\n" +
"\t\tAND P.STOCKSTATE = 'Created' \n" +
"\t) \n" +
"SELECT\n" +
"\tDR.DELIVERYNAME,\n" +
"\tDR.DELIVERYNUM AS MATERIALQUANTITY,\n" +
"\tDR.RECEIVEREQUESTNAME,\n" +
"\tDR.MATERIALSPECNAME,\n" +
"\tDR.RECEIVEREQUESTDETAILNAME,\n" +
"\tAA.ERPLOCATION,\n" +
"\tAA.ERPFACTORY,\n" +
"\tRQ.SUPPLIERNO AS SUPPLIERNAME,\n" +
"\tRD.MATERIALUNIT AS UNIT,\n" +
"\tMP.FUNIT,\n" +
"\tBF.IQCFLAG\n" +
"FROM\n" +
" MATERIALPACKING P \n" +
"LEFT JOIN SUPPLIER SP\tON SP.SITENAME = P.SUPPLIERNAME\n" +
"LEFT JOIN BS_ERPLOCATION EL ON EL.ERPLOCATIONNAME = P.ERPLOCATION AND EL.SITENAME = P.SITENAME\n" +
"LEFT JOIN MATERIALSPEC MP ON MP.MATERIALSPECNAME = P.MATERIALSPECNAME AND MP.SITENAME = P.SITENAME\n" +
"LEFT JOIN BS_MATERIALFACTORY BF ON BF.MATERIALSPECNAME = P.MATERIALSPECNAME AND BF.ERPFACTORY = P.ERPFACTORY\n" +
"LEFT JOIN MATERIALRECEIVEREQUESTDETAIL RD ON P.SITENAME = RD.SITENAME \n" +
"LEFT JOIN MATERIALRECEIVEREQUEST R ON RD.RECEIVEREQUESTNAME = R.RECEIVEREQUESTNAME AND RD.SITENAME = R.SITENAME\n" +
"LEFT JOIN MATERIALDELIVERYRECEIVE DR ON R.RECEIVEREQUESTNAME=DR.RECEIVEREQUESTNAME \n" +
"LEFT JOIN MATERIALDELIVERY D ON DR.DELIVERYNAME = D.DELIVERYNAME " +
"\tMATERIALDELIVERYRECEIVE DR\n" +
"\tLEFT JOIN MATERIALRECEIVEREQUESTDETAIL RD ON DR.RECEIVEREQUESTNAME = RD.RECEIVEREQUESTNAME AND DR.RECEIVEREQUESTDETAILNAME = RD.RECEIVEREQUESTDETAILNAME\n" +
"\tLEFT JOIN MATERIALRECEIVEREQUEST RQ ON RQ.RECEIVEREQUESTNAME = RD.RECEIVEREQUESTNAME\n" +
"\tLEFT JOIN MATERIALSPEC MP ON MP.MATERIALSPECNAME = DR.MATERIALSPECNAME\n" +
"\tLEFT JOIN BS_MATERIALFACTORY BF ON BF.MATERIALSPECNAME = RD.MATERIALSPECNAME \n" +
"\tAND BF.ERPFACTORY = RD.ERPFACTORY\n" +
"\tLEFT JOIN AA ON DR.MATERIALSPECNAME = AA.MATERIALSPECNAME \n" +
"WHERE\n" +
" D.SITENAME =:SITENAME\n" +
" AND D.DELIVERYNAME =:DELIVERYNAME\n" +
" AND D.DELIVERYSTATE = '02'\n" +
"\t\tAND DR.MATERIALSPECNAME=RD.MATERIALSPECNAME\n" +
"\t\tAND RD.RECEIVEREQUESTDETAILNAME=DR.RECEIVEREQUESTDETAILNAME\n" +
"\t\tAND P.RECEIVEREQUESTNAME = DR.DELIVERYNAME \n" +
"\t\tAND P.MATERIALSPECNAME = DR.MATERIALSPECNAME" +
" AND P.STOCKSTATE = 'Created' " +
" GROUP BY DR.RECEIVEREQUESTNAME, DR.RECEIVEREQUESTDETAILNAME\n" +
"\t\t,P.OQARESULT, P.OQARESULTSTATE, P.UNIT, P.FUNIT, P.REMARK, P.SUPPLIERNAME\n" +
"\t\t,P.ERPFACTORY, P.ERPLOCATION, BF.IQCFLAG, R.RECEIVEREQUESTTYPE\n" +
"\t\t,EL.DESCRIPTION, SP.SUPPLIERNO,SP.SUPPLIERNAME,MP.MATERIALSPECNAME\n" +
"\t\t,MP.DESC_CN, MP.MATERIALGROUP, P.LOCATIONNAME, P.RECEIVETIME,P.TRUEGG,DR.DELIVERYNUM ";
"\tDELIVERYNAME =:DELIVERYNAME\n" +
"\t " ;
Map<String, Object> hashMap = new HashMap<String, Object>();
hashMap.put("DELIVERYNAME", deliveryName);
hashMap.put("SITENAME", siteName);
@ -6674,7 +6664,7 @@ public class ToSAPServiceImpl {
item.put("LIFNR", mm.get("SUPPLIERNAME"));
item.put("MENGE", mm.get("MATERIALQUANTITY"));
item.put("MEINS", mm.get("UNIT"));
item.put("BPMNG", mm.get("FQTY"));//采购价格单位数量
item.put("BPMNG", mm.get("FQTY") == null ? "0" : mm.get("FQTY"));//采购价格单位数量
item.put("BPRME", mm.get("FUNIT"));//采购价格单位
item.put("EBELN", mm.get("RECEIVEREQUESTNAME"));
@ -6690,9 +6680,9 @@ public class ToSAPServiceImpl {
// String insmk = StringUtils.equals(mm.get("OQARESULTSTATE").toString(),"END")?"":"X";
item.put("INSMK", insmk);
itemData.add(item);
if (!saleList.contains(mm.get("RECEIVEREQUESTTYPE").toString())){
/*if (!saleList.contains(mm.get("RECEIVEREQUESTTYPE").toString())){
qmsDataList.add(mm);
}
}*/
/**
//存储条码更新UNDOID用
MaterialPackingKey materialPackingKey = new MaterialPackingKey(siteName, mm.get("MATERIALPACKINGNAME").toString());
@ -6726,21 +6716,7 @@ public class ToSAPServiceImpl {
throw new RuntimeException("SAP返回" + rmsg);
}
if("S".equals(rcode) && qmsDataList.size() > 0) {
/**
jsonObject.put("warehouse", list.get(i).get("ERPLOCATIONDESC"));
jsonObject.put("supplierName", list.get(i).get("SUPPLIERNAME"));
jsonObject.put("supplierCode", list.get(i).get("SUPPLIERCODE"));
jsonObject.put("materialName", list.get(i).get("MATERIALNAME"));
jsonObject.put("materialCode", list.get(i).get("MATERIALCODE"));
jsonObject.put("materialGroup", list.get(i).get("MATERIALGROUP"));
jsonObject.put("batchQuantity", list.get(i).get("BATCHQUANTITY"));
jsonObject.put("quantityUnit", list.get(i).get("QUANTITYUNIT"));
jsonObject.put("deliveryDate", list.get(i).get("DELIVERYDATE"));
jsonObject.put("specifications", list.get(i).get("BATCHNUMBER"));
jsonObject.put("LOCATIONNAME", list.get(i).get("LOCATIONNAME"));
String receiveRequestName = list.get(i).get("RECEIVEREQUESTNAME") == null ? "" : list.get(i).get("RECEIVEREQUESTNAME").toString();
*/
if("S".equals(rcode)) {
// 调用 QMS
//qMSServiceImpl.PreIQCInfoSend(receiveRequestName, "SDK",opCode, erpFactory);
exceptionMsg = "QMS返回";

View File

@ -29,6 +29,7 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@ -634,6 +635,7 @@ public class MaterialReceiveActController {
* @param in receiveRequestName到货单号
* @return 返回信息
*/
@Transactional(rollbackFor = Exception.class)
@RequestMapping(value = "/commitDeliveryStockInToSAP", method = RequestMethod.POST)
public AjaxResult CommitDeliveryStockInToSAP(@RequestBody JSONObject in ) throws Exception {
try {

View File

@ -68,5 +68,5 @@ public interface IMaterialShipService {
* @param eventInfo 事件信息
* @param materialDelivery 到货单信息
*/
void DeliveryStockInUpdateReceiveRequestQty(EventInfo eventInfo, MaterialDelivery materialDelivery);
void DeliveryStockInUpdateReceiveRequestQty(EventInfo eventInfo, MaterialDelivery materialDelivery) throws Exception;
}

View File

@ -2066,7 +2066,7 @@ public class MaterialShipServiceImpl implements IMaterialShipService {
* @param eventInfo 事件信息
* @param materialDelivery 到货单信息
*/
public void DeliveryStockInUpdateReceiveRequestQty(EventInfo eventInfo, MaterialDelivery materialDelivery){
public void DeliveryStockInUpdateReceiveRequestQty(EventInfo eventInfo, MaterialDelivery materialDelivery) throws Exception{
//获取到货单关联的所有入库单
StoreDetailDto storeDetailDto = new StoreDetailDto();
storeDetailDto.setDocumentName(materialDelivery.getDeliveryName());
@ -2090,6 +2090,7 @@ public class MaterialShipServiceImpl implements IMaterialShipService {
updateReceiveRequestQtyMap.put("SITENAME", materialDelivery.getSiteName());
updateReceiveRequestQtyMap.put("MATERIALSPECNAME", materialDeliveryReceive.getMaterialSpecName());
updateReceiveRequestQtyMap.put("RECEIVEREQUESTNAME", materialDeliveryReceive.getReceiveRequestName());
updateReceiveRequestQtyMap.put("RECEIVEREQUESTDETAILNAME", materialDeliveryReceive.getReceiveRequestDetailName());
updateReceiveRequestQtyMap.put("LASTEVENTNAME", eventInfo.getEventUser());
updateReceiveRequestQtyMap.put("LASTEVENTTIMEKEY", eventInfo.getEventTimeKey());
updateReceiveRequestQtyMap.put("LASTEVENTTIME", eventInfo.getEventTime());