#
18516761980
2021-11-05 acdc4b3427cbd2a6dc811aed202fbd3e9c309d69
src/main/java/com/zy/asrs/service/impl/LocNormalServiceImpl.java
@@ -1,20 +1,24 @@
package com.zy.asrs.service.impl;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.core.common.Cools;
import com.core.exception.CoolException;
import com.zy.asrs.entity.LocNormalLog;
import com.zy.asrs.entity.LocNormal;
import com.zy.asrs.entity.WaitPakin;
import com.zy.asrs.entity.WaitPakinLog;
import com.zy.asrs.entity.param.ERPselectParam;
import com.zy.asrs.mapper.LocNormalMapper;
import com.zy.asrs.mapper.OutStockMapper;
import com.zy.asrs.service.LocNormalLogService;
import com.zy.asrs.service.LocNormalService;
import com.zy.asrs.service.WaitPakinLogService;
import com.zy.asrs.service.WaitPakinService;
import com.zy.asrs.utils.VersionUtils;
import com.zy.common.service.erp.ErpService;
import com.zy.common.service.erp.ErpSqlServer;
import com.zy.common.service.erp.entity.CPICMO;
import com.zy.common.service.erp.entity.OutStockBillEntry;
@@ -41,6 +45,10 @@
    WaitPakinService waitPakinService;
    @Autowired
    WaitPakinLogService waitPakinLogService;
    @Autowired
    ErpService erpService;
    @Autowired
    LocNormalLogService locNormalLogService;
    @Override
    public List<LocNormal> getLocNormalData() {
@@ -55,11 +63,35 @@
    @Override
    public void outLocNormal(String matnr, Long modiUser, Date modiTime, Integer id) {
        baseMapper.outLocNormal(matnr, modiUser, modiTime, id);
        LocNormal data = locNormalService.selectOne(new EntityWrapper<LocNormal>().eq("id", id));
        // 生成平仓出入库记录
        LocNormalLog locLog = new LocNormalLog();
        VersionUtils.setLocNormalLog(locLog, data);
        locLog.setAnfme(data.getAnfme().doubleValue());
        locLog.setIoType(2);
        locLog.setCreateTime(new Date());
        locLog.setCreateUser(modiUser);
        if (!locNormalLogService.insert(locLog)) {
            String logStr = JSON.toJSONString(locLog);
            log.info("平仓出库记录插入失败,数据:" + logStr);
        }
    }
    @Override
    public void removeLocNormal(String matnr, Long modiUser, Date modiTime, Integer id) {
        baseMapper.removeLocNormal(matnr, modiUser, modiTime, id);
        LocNormal data = locNormalService.selectOne(new EntityWrapper<LocNormal>().eq("id", id));
        // 生成平仓出入库记录
        LocNormalLog locLog = new LocNormalLog();
        VersionUtils.setLocNormalLog(locLog, data);
        locLog.setAnfme(data.getAnfme().doubleValue());
        locLog.setIoType(4); // 删除
        locLog.setCreateTime(new Date());
        locLog.setCreateUser(modiUser);
        if (!locNormalLogService.insert(locLog)) {
            String logStr = JSON.toJSONString(locLog);
            log.info("平仓库存删除记录插入失败,数据:" + logStr);
        }
    }
    @Override
@@ -83,6 +115,17 @@
                            // cust_wait_pakin转cust_wait_pakin_log,并更新数量
                            custWaitPakinToLog(list.get(i), updateAnfme);
                        }
                        // 生成平仓出入库记录
                        LocNormalLog locLog = new LocNormalLog();
                        VersionUtils.setLocNormalLog(locLog, list.get(i));
                        locLog.setAnfme(updateAnfme);
                        locLog.setIoType(1);
                        locLog.setCreateTime(new Date());
                        locLog.setCreateUser(list.get(i).getAppeUser());
                        if (!locNormalLogService.insert(locLog)) {
                            String logStr = JSON.toJSONString(locLog);
                            log.info("平仓入库记录插入失败,数据:" + logStr);
                        }
                    } else {
                        // erp更新
                        updateCPICMO(list.get(i));
@@ -92,6 +135,17 @@
                            // cust_wait_pakin转cust_wait_pakin_log,并更新数量
                            custWaitPakinToLog(list.get(i), list.get(i).getAnfme().doubleValue());
                        }
                        // 生成平仓出入库记录
                        LocNormalLog locLog = new LocNormalLog();
                        VersionUtils.setLocNormalLog(locLog, list.get(i));
                        locLog.setAnfme(list.get(i).getAnfme().doubleValue());
                        locLog.setIoType(1);
                        locLog.setCreateTime(new Date());
                        locLog.setCreateUser(list.get(i).getAppeUser());
                        if (!locNormalLogService.insert(locLog)) {
                            String logStr = JSON.toJSONString(locLog);
                            log.info("平仓入库记录插入失败,数据:" + logStr);
                        }
                    }
                } else {
                    // throw new CoolException("通知单号不可为空"); 通知单号空的情况下,往CPICMO表插入手动入库数据
@@ -100,13 +154,139 @@
                    if (!Cools.isEmpty(oldLocList)) {
                        // erp更新
                        if (Cools.isEmpty(list.get(i).getSupplier())) {
                            String maxKeySql = "select max(FInterID) as num from CPICMO";
                            String maxKeySql = "select min(FInterID) as num from CPICMO";
                            List<ERPselectParam> maxKeyList = erpSqlServer.select(maxKeySql, ERPselectParam.class);
                            Integer maxKey = maxKeyList.get(0).getNum();
                            String ErpSql = "insert into CPICMO(FBrNo, FSourceBillNo, FBillNo, FTranType, FStatus, FMRP, FItemID, FQty, FCommitQty, FSourceEntryID, FClosed, FUnitID, FAuxCommitQty, FCancellation, FQtyFinish, FQtyScrap, FQtyLost, FAuxQtyFinish, FAuxQtyScrap, FAuxQtyLost, FMrpClosed, FBomInterID, FQtyPass, FAuxQtyPass, FQtyBack, FAuxQtyBack, FFinishTime, FReadyTIme, FPowerCutTime, FFixTime, FWaitItemTime, FWaitToolTime, FTaskID, FWorkTypeID, FCostObjID, FStockQty, FAuxStockQty, FSuspend, FReleasedQty, FReleasedAuxQty, FUnScheduledQty, FUnScheduledAuxQty, FSubEntryID, FScheduleID, FPlanOrderInterID, FProcessPrice, FProcessFee, FGMPBatchNo, FGMPCollectRate, FGMPItemBalance, FGMPBulkQty, FCustID, FMRPLockFlag, FHandworkClose, FInHighLimit, FInHighLimitQty, FInLowLimit, FInLowLimitQty, FChangeTimes, FCheckCommitQty, FAuxCheckCommitQty, FPlanConfirmed, FPlanMode, FMTONo, FPrintCount, FFinClosed, FStockFlag, FStartFlag, FVchBillNo, FVchInterID, FCardClosed, FHRReadyTime, FSourceTranType, FSourceInterId, FInterID, FAuxQty, FAuxInHighLimitQty, FAuxInLowLimitQty, Fnumber, FWorkShop) values (0, ''{6}'', '0', 85, 0, 1052, 0, 0, 0, 0, 0, 250, {5,number,#}, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '0', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14036, '0', 0, 0, 14215, 0, '0', 0, 1059, 0, 0, 0, 0, {0,number,#}, {1,number,#}, {2,number,#}, {3,number,#}, ''{4}'', 11378)";
                            ErpSql = MessageFormat.format(ErpSql, maxKey + 1, list.get(i).getAnfme(), list.get(i).getAnfme(), list.get(i).getAnfme(), list.get(i).getMatnr(), list.get(i).getAnfme(), list.get(i).getMnemonic());
                            ErpSql = MessageFormat.format(ErpSql, maxKey - 1, list.get(i).getAnfme(), list.get(i).getAnfme(), list.get(i).getAnfme(), list.get(i).getMatnr(), list.get(i).getAnfme(), list.get(i).getMnemonic());
                            erpSqlServer.update(ErpSql);
                        }
                        Double updateAnfme = new Double(list.get(i).getAnfme().doubleValue());
                        // 平仓入库(更新)逻辑
                        list.get(i).setAnfme(oldLocList.getAnfme().add(list.get(i).getAnfme()));
                        updateList.add(list.get(i));
                        if (baseMapper.withoutSupplierLocNormalUpdate(updateList) > 0) {
                            // cust_wait_pakin转cust_wait_pakin_log,并更新数量
//                            custWaitPakinToLog(list.get(i), updateAnfme);
                        }
                        // 生成平仓出入库记录
                        LocNormalLog locLog = new LocNormalLog();
                        VersionUtils.setLocNormalLog(locLog, list.get(i));
                        locLog.setAnfme(updateAnfme);
                        locLog.setIoType(1);
                        locLog.setCreateTime(new Date());
                        locLog.setCreateUser(list.get(i).getAppeUser());
                        if (!locNormalLogService.insert(locLog)) {
                            String logStr = JSON.toJSONString(locLog);
                            log.info("平仓入库记录插入失败,数据:" + logStr);
                        }
                    } else {
                        // erp更新
                        if (Cools.isEmpty(list.get(i).getSupplier())) {
                            String maxKeySql = "select min(FInterID) as num from CPICMO";
                            List<ERPselectParam> maxKeyList = erpSqlServer.select(maxKeySql, ERPselectParam.class);
                            Integer maxKey = maxKeyList.get(0).getNum();
                            String ErpSql = "insert into CPICMO(FBrNo, FSourceBillNo, FBillNo, FTranType, FStatus, FMRP, FItemID, FQty, FCommitQty, FSourceEntryID, FClosed, FUnitID, FAuxCommitQty, FCancellation, FQtyFinish, FQtyScrap, FQtyLost, FAuxQtyFinish, FAuxQtyScrap, FAuxQtyLost, FMrpClosed, FBomInterID, FQtyPass, FAuxQtyPass, FQtyBack, FAuxQtyBack, FFinishTime, FReadyTIme, FPowerCutTime, FFixTime, FWaitItemTime, FWaitToolTime, FTaskID, FWorkTypeID, FCostObjID, FStockQty, FAuxStockQty, FSuspend, FReleasedQty, FReleasedAuxQty, FUnScheduledQty, FUnScheduledAuxQty, FSubEntryID, FScheduleID, FPlanOrderInterID, FProcessPrice, FProcessFee, FGMPBatchNo, FGMPCollectRate, FGMPItemBalance, FGMPBulkQty, FCustID, FMRPLockFlag, FHandworkClose, FInHighLimit, FInHighLimitQty, FInLowLimit, FInLowLimitQty, FChangeTimes, FCheckCommitQty, FAuxCheckCommitQty, FPlanConfirmed, FPlanMode, FMTONo, FPrintCount, FFinClosed, FStockFlag, FStartFlag, FVchBillNo, FVchInterID, FCardClosed, FHRReadyTime, FSourceTranType, FSourceInterId, FInterID, FAuxQty, FAuxInHighLimitQty, FAuxInLowLimitQty, Fnumber, FWorkShop) values (0, ''{6}'', '0', 85, 0, 1052, 0, 0, 0, 0, 0, 250, {5,number,#}, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '0', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14036, '0', 0, 0, 14215, 0, '0', 0, 1059, 0, 0, 0, 0, {0,number,#}, {1,number,#}, {2,number,#}, {3,number,#}, ''{4}'', 11378)";
                            ErpSql = MessageFormat.format(ErpSql, maxKey - 1, list.get(i).getAnfme(), list.get(i).getAnfme(), list.get(i).getAnfme(), list.get(i).getMatnr(), list.get(i).getAnfme(), list.get(i).getMnemonic());
                            erpSqlServer.update(ErpSql);
                        }
                        // 平仓入库逻辑
                        addList.add(list.get(i));
                        if (baseMapper.pdaLocNormalIn(addList) > 0) {
                            // cust_wait_pakin转cust_wait_pakin_log,并更新数量
//                            custWaitPakinToLog(list.get(i), list.get(i).getAnfme().doubleValue());
                        }
                        // 生成平仓出入库记录
                        LocNormalLog locLog = new LocNormalLog();
                        VersionUtils.setLocNormalLog(locLog, list.get(i));
                        locLog.setAnfme(list.get(i).getAnfme().doubleValue());
                        locLog.setIoType(1);
                        locLog.setCreateTime(new Date());
                        locLog.setCreateUser(list.get(i).getAppeUser());
                        if (!locNormalLogService.insert(locLog)) {
                            String logStr = JSON.toJSONString(locLog);
                            log.info("平仓入库记录插入失败,数据:" + logStr);
                        }
                    }
                }
            }
        }
    }
    @Override
    public void locNormalInSource(List<LocNormal> list) {
        // 平仓入库后更新中间表数据,Fflag_finish改为1,表示平仓入库成功
        if (list.size() > 0) {
            for (Integer i = 0; i < list.size(); i++) {
                List<LocNormal> addList = new ArrayList<>();
                List<LocNormal> updateList = new ArrayList<>();
                if (!Cools.isEmpty(list.get(i).getSupplier())) { // 存在入库单号的才进行erp更新
                    // 判断原先平仓是否存在有货,如果有货数量进行累加
                    LocNormal oldLocList = locNormalService.selectOne(new EntityWrapper<LocNormal>().eq("supplier", list.get(i).getSupplier()).and().eq("state", "1").eq("warehouse", list.get(i).getWarehouse()).and().eq("matnr", list.get(i).getMatnr()));
                    if (!Cools.isEmpty(oldLocList)) {
                        Double updateAnfme = new Double(list.get(i).getAnfme().doubleValue());
                        // 平仓入库(更新)逻辑
                        BigDecimal increaseAnfme = new BigDecimal(String.valueOf(list.get(i).getAnfme()));
                        list.get(i).setAnfme(oldLocList.getAnfme().add(list.get(i).getAnfme()));
                        updateList.add(list.get(i));
                        if (baseMapper.pdaLocNormalUpdate(updateList) > 0) {
                            // cust_wait_pakin转cust_wait_pakin_log,并更新数量
                            custWaitPakinToLog(list.get(i), updateAnfme);
                        }
                        // 生成平仓出入库记录
                        LocNormalLog locLog = new LocNormalLog();
                        VersionUtils.setLocNormalLog(locLog, list.get(i));
                        if (Cools.isEmpty(locLog.getMemo())) {
                            locLog.setMemo("原材料");
                        }
                        locLog.setAnfme(increaseAnfme.doubleValue());
                        locLog.setIoType(1);
                        locLog.setCreateTime(new Date());
                        locLog.setCreateUser(list.get(i).getAppeUser());
                        if (!locNormalLogService.insert(locLog)) {
                            String logStr = JSON.toJSONString(locLog);
                            log.info("平仓材料入库记录插入失败,数据:" + logStr);
                        }
                        // erp更新 InStockbill和InStockBillEntry
                        erpService.incrementPakIn(list.get(i).getSupplier(), list.get(i).getMatnr(), increaseAnfme.doubleValue());
                    } else {
                        // 平仓入库逻辑
                        addList.add(list.get(i));
                        if (baseMapper.pdaLocNormalIn(addList) > 0) {
                            // cust_wait_pakin转cust_wait_pakin_log,并更新数量
                            custWaitPakinToLog(list.get(i), list.get(i).getAnfme().doubleValue());
                        }
                        // 生成平仓出入库记录
                        LocNormalLog locLog = new LocNormalLog();
                        VersionUtils.setLocNormalLog(locLog, list.get(i));
                        locLog.setAnfme(list.get(i).getAnfme().doubleValue());
                        if (Cools.isEmpty(locLog.getMemo())) {
                            locLog.setMemo("原材料");
                        }
                        locLog.setIoType(1);
                        locLog.setCreateTime(new Date());
                        locLog.setCreateUser(list.get(i).getAppeUser());
                        if (!locNormalLogService.insert(locLog)) {
                            String logStr = JSON.toJSONString(locLog);
                            log.info("平仓材料入库记录插入失败,数据:" + logStr);
                        }
                        // erp更新 InStockbill和InStockBillEntry
                        erpService.incrementPakIn(list.get(i).getSupplier(), list.get(i).getMatnr(), list.get(i).getAnfme().doubleValue());
                    }
                } else {
                    // throw new CoolException("通知单号不可为空"); 通知单号空的情况下,往CPICMO表插入手动入库数据
                    // 判断原先平仓是否存在有货,如果有货数量进行累加
                    LocNormal oldLocList = locNormalService.selectOne(new EntityWrapper<LocNormal>().eq("matnr", list.get(i).getMatnr()).and().eq("warehouse", list.get(i).getWarehouse()).and().eq("mnemonic", list.get(i).getMnemonic()).and().eq("state", "1"));
                    if (!Cools.isEmpty(oldLocList)) {
                        // erp更新
//                        if (Cools.isEmpty(list.get(i).getSupplier())) {
//                            String maxKeySql = "select max(FInterID) as num from CPICMO";
//                            List<ERPselectParam> maxKeyList = erpSqlServer.select(maxKeySql, ERPselectParam.class);
//                            Integer maxKey = maxKeyList.get(0).getNum();
//                            String ErpSql = "insert into CPICMO(FBrNo, FSourceBillNo, FBillNo, FTranType, FStatus, FMRP, FItemID, FQty, FCommitQty, FSourceEntryID, FClosed, FUnitID, FAuxCommitQty, FCancellation, FQtyFinish, FQtyScrap, FQtyLost, FAuxQtyFinish, FAuxQtyScrap, FAuxQtyLost, FMrpClosed, FBomInterID, FQtyPass, FAuxQtyPass, FQtyBack, FAuxQtyBack, FFinishTime, FReadyTIme, FPowerCutTime, FFixTime, FWaitItemTime, FWaitToolTime, FTaskID, FWorkTypeID, FCostObjID, FStockQty, FAuxStockQty, FSuspend, FReleasedQty, FReleasedAuxQty, FUnScheduledQty, FUnScheduledAuxQty, FSubEntryID, FScheduleID, FPlanOrderInterID, FProcessPrice, FProcessFee, FGMPBatchNo, FGMPCollectRate, FGMPItemBalance, FGMPBulkQty, FCustID, FMRPLockFlag, FHandworkClose, FInHighLimit, FInHighLimitQty, FInLowLimit, FInLowLimitQty, FChangeTimes, FCheckCommitQty, FAuxCheckCommitQty, FPlanConfirmed, FPlanMode, FMTONo, FPrintCount, FFinClosed, FStockFlag, FStartFlag, FVchBillNo, FVchInterID, FCardClosed, FHRReadyTime, FSourceTranType, FSourceInterId, FInterID, FAuxQty, FAuxInHighLimitQty, FAuxInLowLimitQty, Fnumber, FWorkShop) values (0, ''{6}'', '0', 85, 0, 1052, 0, 0, 0, 0, 0, 250, {5,number,#}, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '0', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14036, '0', 0, 0, 14215, 0, '0', 0, 1059, 0, 0, 0, 0, {0,number,#}, {1,number,#}, {2,number,#}, {3,number,#}, ''{4}'', 11378)";
//                            ErpSql = MessageFormat.format(ErpSql, maxKey + 1, list.get(i).getAnfme(), list.get(i).getAnfme(), list.get(i).getAnfme(), list.get(i).getMatnr(), list.get(i).getAnfme(), list.get(i).getMnemonic());
//                            erpSqlServer.update(ErpSql);
//                        }
//                        Double updateAnfme = new Double(list.get(i).getAnfme().doubleValue());
                        // 平仓入库(更新)逻辑
                        list.get(i).setAnfme(oldLocList.getAnfme().add(list.get(i).getAnfme()));
@@ -117,14 +297,14 @@
                        }
                    } else {
                        // erp更新
                        if (Cools.isEmpty(list.get(i).getSupplier())) {
                            String maxKeySql = "select max(FInterID) as num from CPICMO";
                            List<ERPselectParam> maxKeyList = erpSqlServer.select(maxKeySql, ERPselectParam.class);
                            Integer maxKey = maxKeyList.get(0).getNum();
                            String ErpSql = "insert into CPICMO(FBrNo, FSourceBillNo, FBillNo, FTranType, FStatus, FMRP, FItemID, FQty, FCommitQty, FSourceEntryID, FClosed, FUnitID, FAuxCommitQty, FCancellation, FQtyFinish, FQtyScrap, FQtyLost, FAuxQtyFinish, FAuxQtyScrap, FAuxQtyLost, FMrpClosed, FBomInterID, FQtyPass, FAuxQtyPass, FQtyBack, FAuxQtyBack, FFinishTime, FReadyTIme, FPowerCutTime, FFixTime, FWaitItemTime, FWaitToolTime, FTaskID, FWorkTypeID, FCostObjID, FStockQty, FAuxStockQty, FSuspend, FReleasedQty, FReleasedAuxQty, FUnScheduledQty, FUnScheduledAuxQty, FSubEntryID, FScheduleID, FPlanOrderInterID, FProcessPrice, FProcessFee, FGMPBatchNo, FGMPCollectRate, FGMPItemBalance, FGMPBulkQty, FCustID, FMRPLockFlag, FHandworkClose, FInHighLimit, FInHighLimitQty, FInLowLimit, FInLowLimitQty, FChangeTimes, FCheckCommitQty, FAuxCheckCommitQty, FPlanConfirmed, FPlanMode, FMTONo, FPrintCount, FFinClosed, FStockFlag, FStartFlag, FVchBillNo, FVchInterID, FCardClosed, FHRReadyTime, FSourceTranType, FSourceInterId, FInterID, FAuxQty, FAuxInHighLimitQty, FAuxInLowLimitQty, Fnumber, FWorkShop) values (0, ''{6}'', '0', 85, 0, 1052, 0, 0, 0, 0, 0, 250, {5,number,#}, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '0', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14036, '0', 0, 0, 14215, 0, '0', 0, 1059, 0, 0, 0, 0, {0,number,#}, {1,number,#}, {2,number,#}, {3,number,#}, ''{4}'', 11378)";
                            ErpSql = MessageFormat.format(ErpSql, maxKey + 1, list.get(i).getAnfme(), list.get(i).getAnfme(), list.get(i).getAnfme(), list.get(i).getMatnr(), list.get(i).getAnfme(), list.get(i).getMnemonic());
                            erpSqlServer.update(ErpSql);
                        }
//                        if (Cools.isEmpty(list.get(i).getSupplier())) {
//                            String maxKeySql = "select max(FInterID) as num from CPICMO";
//                            List<ERPselectParam> maxKeyList = erpSqlServer.select(maxKeySql, ERPselectParam.class);
//                            Integer maxKey = maxKeyList.get(0).getNum();
//                            String ErpSql = "insert into CPICMO(FBrNo, FSourceBillNo, FBillNo, FTranType, FStatus, FMRP, FItemID, FQty, FCommitQty, FSourceEntryID, FClosed, FUnitID, FAuxCommitQty, FCancellation, FQtyFinish, FQtyScrap, FQtyLost, FAuxQtyFinish, FAuxQtyScrap, FAuxQtyLost, FMrpClosed, FBomInterID, FQtyPass, FAuxQtyPass, FQtyBack, FAuxQtyBack, FFinishTime, FReadyTIme, FPowerCutTime, FFixTime, FWaitItemTime, FWaitToolTime, FTaskID, FWorkTypeID, FCostObjID, FStockQty, FAuxStockQty, FSuspend, FReleasedQty, FReleasedAuxQty, FUnScheduledQty, FUnScheduledAuxQty, FSubEntryID, FScheduleID, FPlanOrderInterID, FProcessPrice, FProcessFee, FGMPBatchNo, FGMPCollectRate, FGMPItemBalance, FGMPBulkQty, FCustID, FMRPLockFlag, FHandworkClose, FInHighLimit, FInHighLimitQty, FInLowLimit, FInLowLimitQty, FChangeTimes, FCheckCommitQty, FAuxCheckCommitQty, FPlanConfirmed, FPlanMode, FMTONo, FPrintCount, FFinClosed, FStockFlag, FStartFlag, FVchBillNo, FVchInterID, FCardClosed, FHRReadyTime, FSourceTranType, FSourceInterId, FInterID, FAuxQty, FAuxInHighLimitQty, FAuxInLowLimitQty, Fnumber, FWorkShop) values (0, ''{6}'', '0', 85, 0, 1052, 0, 0, 0, 0, 0, 250, {5,number,#}, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '0', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14036, '0', 0, 0, 14215, 0, '0', 0, 1059, 0, 0, 0, 0, {0,number,#}, {1,number,#}, {2,number,#}, {3,number,#}, ''{4}'', 11378)";
//                            ErpSql = MessageFormat.format(ErpSql, maxKey + 1, list.get(i).getAnfme(), list.get(i).getAnfme(), list.get(i).getAnfme(), list.get(i).getMatnr(), list.get(i).getAnfme(), list.get(i).getMnemonic());
//                            erpSqlServer.update(ErpSql);
//                        }
                        // 平仓入库逻辑
                        addList.add(list.get(i));
                        if (baseMapper.pdaLocNormalIn(addList) > 0) {
@@ -136,7 +316,6 @@
            }
        }
    }
    /**
     * 成品入库单标记完成
     */
@@ -167,6 +346,18 @@
                            // cust_wait_pakin转cust_wait_pakin_log,并更新数量
                            custWaitPakinToLog(list.get(i), updateAnfme);
                        }
                        // 生成平仓出入库记录
                        LocNormalLog locLog = new LocNormalLog();
                        VersionUtils.setLocNormalLog(locLog, list.get(i));
                        locLog.setAnfme(updateAnfme);
                        locLog.setIoType(1);
                        locLog.setCreateTime(new Date());
                        locLog.setCreateUser(list.get(i).getAppeUser());
                        if (!locNormalLogService.insert(locLog)) {
                            String logStr = JSON.toJSONString(locLog);
                            log.info("平仓入库记录插入失败,数据:" + logStr);
                        }
                    } else {
                        // erp更新
                        updateCPICMO(list.get(i));
@@ -175,6 +366,17 @@
                        if (baseMapper.pdaLocNormalIn(addList) > 0){
                            // cust_wait_pakin转cust_wait_pakin_log,并更新数量
                            custWaitPakinToLog(list.get(i), list.get(i).getAnfme().doubleValue());
                        }
                        // 生成平仓出入库记录
                        LocNormalLog locLog = new LocNormalLog();
                        VersionUtils.setLocNormalLog(locLog, list.get(i));
                        locLog.setAnfme(list.get(i).getAnfme().doubleValue());
                        locLog.setIoType(1);
                        locLog.setCreateTime(new Date());
                        locLog.setCreateUser(list.get(i).getAppeUser());
                        if (!locNormalLogService.insert(locLog)) {
                            String logStr = JSON.toJSONString(locLog);
                            log.info("平仓入库记录插入失败,数据:" + logStr);
                        }
                    }
                } else {
@@ -270,10 +472,32 @@
        for (Integer i = 0; i < list.size(); i++) {
            if (list.get(i).getAnfme().equals(list.get(i).getAnfmeOut())) {
                baseMapper.pdaLocNormalOut1(list.get(i).getId(), list.get(i).getMatnr(), list.get(i).getModiUser(), list.get(i).getModiTime(), list.get(i).getWarehouse());
                // 生成平仓出入库记录
                LocNormalLog locLog = new LocNormalLog();
                VersionUtils.setLocNormalLog(locLog, list.get(i));
                locLog.setAnfme(list.get(i).getAnfmeOut().doubleValue());
                locLog.setIoType(2);
                locLog.setCreateTime(new Date());
                locLog.setCreateUser(list.get(i).getAppeUser());
                if (!locNormalLogService.insert(locLog)) {
                    String logStr = JSON.toJSONString(locLog);
                    log.info("平仓出库记录插入失败,数据:" + logStr);
                }
            }
            if (list.get(i).getAnfmeOut().compareTo(list.get(i).getAnfme()) == -1) {
                BigDecimal diff = (list.get(i).getAnfme()).subtract(list.get(i).getAnfmeOut());
                baseMapper.pdaLocNormalOut2(list.get(i).getId(), list.get(i).getMatnr(), diff, list.get(i).getModiUser(), list.get(i).getModiTime(), list.get(i).getWarehouse());
                // 生成平仓出入库记录
                LocNormalLog locLog = new LocNormalLog();
                VersionUtils.setLocNormalLog(locLog, list.get(i));
                locLog.setAnfme((list.get(i).getAnfmeOut()).doubleValue());
                locLog.setIoType(2);
                locLog.setCreateTime(new Date());
                locLog.setCreateUser(list.get(i).getAppeUser());
                if (!locNormalLogService.insert(locLog)) {
                    String logStr = JSON.toJSONString(locLog);
                    log.info("平仓出库记录插入失败,数据:" + logStr);
                }
            }
        }
    }
@@ -289,12 +513,12 @@
    }
    @Override
    public List<LocNormal> queryLocNorlMatnr(String fbillNo) {
    public List<LocNormal> queryLocNorlMatnr(String fbillNo, String mnemonic) {
        List<OutStockBillEntry> matList = outStockMapper.queryMatnrWithBillNo(fbillNo);
        List<LocNormal> locNormal = new ArrayList<>();
        List<LocNormal> locNormalResult = new ArrayList<>();
        for (Integer i = 0; i < matList.size(); i++) {
            locNormal = baseMapper.queryLocNorlMatnr(matList.get(i).getFnumber()) ;
            locNormal = baseMapper.queryLocNorlMatnr(matList.get(i).getFnumber(), mnemonic) ;
            if (locNormal.size() > 0) {
                for (LocNormal e:locNormal) {
                    LocNormal obj = new LocNormal();