1.库存调整(往StockCheckRecord插入盘盈、盘亏数据)
2.手动入库(无通知单号)往CPICMO插入数据,FWorkShop(部门)值erp提供[11378]
1个文件已添加
5个文件已修改
107 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/entity/param/ERPselectParam.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/LocNormalMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/LocNormalServiceImpl.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/LocNormalMapper.xml 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/locNormal/locNormalIn.js 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/param/ERPselectParam.java
New file
@@ -0,0 +1,8 @@
package com.zy.asrs.entity.param;
import lombok.Data;
@Data
public class ERPselectParam {
    private Integer num;
}
src/main/java/com/zy/asrs/mapper/LocNormalMapper.java
@@ -28,6 +28,8 @@
    public Integer pdaLocNormalUpdate(List<LocNormal> list);
    public Integer withoutSupplierLocNormalUpdate(List<LocNormal> list);
    public List<LocNormal> pdaLocNormalQuery(@Param("matnr") String matnr, @Param("warehouse") String warehouse, @Param("billNo") String billNo);
    public void pdaLocNormalOut1(@Param("id") Integer id,@Param("matnr") String matnr, @Param("modiUser") Long modiUser, @Param("modiTime") Date modiTime, @Param("warehouse") String warehouse);
src/main/java/com/zy/asrs/service/impl/LocNormalServiceImpl.java
@@ -9,6 +9,7 @@
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.LocNormalService;
@@ -93,7 +94,44 @@
                        }
                    }
                } else {
                    throw new CoolException("通知单号不可为空");
                    // 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, 0, '0', 85, 0, 1052, 0, 0, 0, 0, 0, 250, 0, 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());
                            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);
                        }
                    } 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, 0, '0', 85, 0, 1052, 0, 0, 0, 0, 0, 250, 0, 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());
                            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());
                        }
                    }
                }
            }
        }
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -16,11 +16,13 @@
import com.zy.common.model.OutLocDto;
import com.zy.common.model.StartupDto;
import com.zy.common.service.CommonService;
import com.zy.common.service.erp.ErpSqlServer;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.MessageFormat;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@@ -59,6 +61,8 @@
    private WrkMastLogService wrkMastLogService;
    @Autowired
    private WrkDetlLogService wrkDetlLogService;
    @Autowired
    private ErpSqlServer erpSqlServer;
    @Override
    @Transactional
@@ -161,6 +165,18 @@
        } else {
            throw new CoolException(dto.getLocNo()+"目标库位已被占用");
        }
        // 判断无通知单号supplier的入库数据,CPICMO插入数据
        List<FullStoreParam.MatCodeStore> erpMatList = param.getList();
        for (FullStoreParam.MatCodeStore es : erpMatList) {
            if (Cools.isEmpty(es.getStr6())) {
                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, 0, '0', 85, 0, 1052, 0, 0, 0, 0, 0, 250, 0, 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, es.getCount(), es.getCount(), es.getCount(), es.getMatNo());
                erpSqlServer.update(ErpSql);
            }
        }
        return dto.getLocNo();
    }
@@ -253,7 +269,9 @@
            // 生成工作档明细
            for (LocDetlDto detlDto : dto.getLocDetlDtos()) {
                // 出库时,数量为0的直接忽略
                if (detlDto.getCount()==null || detlDto.getCount() <= 0.0D) {continue;}
                if (detlDto.getCount() == null || detlDto.getCount() <= 0.0D) {
                    continue;
                }
                WrkDetl wrkDetl = new WrkDetl();
                wrkDetl.setWrkNo(workNo);
                wrkDetl.setIoTime(new Date());
@@ -583,8 +601,14 @@
                adjDetl.setOriQty(0.0D);
                adjDetl.setAdjQty(adjust.getCount());
                adjDetlService.save(adjDetl, userId);
                // 调整库存,新增,StockCheckRecord插入盘盈数据
                String ErpSql = "insert into StockCheckRecord(Fnumber, CheckQty, Fflag_rw, Fflag_finish) values (''{0}'', {1,number,#}, 0, 0)";
                ErpSql = MessageFormat.format(ErpSql, adjust.getMatnr(), adjust.getCount());
                erpSqlServer.update(ErpSql);
            // 修改原库存明细
            } else {
                // 库存原数量
                Double oldCount = one.getAnfme();
                // 如果数量修改,则更新库存明细
                if (!adjust.getCount().equals(one.getAnfme())) {
                    // 当数量被修改为 0 时,直接清除库存明细
@@ -610,6 +634,16 @@
                    adjDetl.setOriQty(one.getAnfme());
                    adjDetl.setAdjQty(adjust.getCount());
                    adjDetlService.save(adjDetl, userId);
                    // 调整库存,修改,StockCheckRecord插入盘盈、盘亏数据
                    Double erpCount = 0D;
                    if (adjust.getCount() == 0) {
                        erpCount = 0 - oldCount;
                    } else {
                        erpCount = adjust.getCount() - oldCount;
                    }
                    String ErpSql = "insert into StockCheckRecord(Fnumber, CheckQty, Fflag_rw, Fflag_finish) values (''{0}'', {1,number,#}, 0, 0)";
                    ErpSql = MessageFormat.format(ErpSql, adjust.getMatnr(), erpCount);
                    erpSqlServer.update(ErpSql);
                }
            }
        }
src/main/resources/mapper/LocNormalMapper.xml
@@ -59,14 +59,23 @@
        END;
    </insert>
    <insert id="pdaLocNormalUpdate">
    <update id="pdaLocNormalUpdate">
        BEGIN
        <foreach collection="list" item="item" index="index">
            update asr_loc_normal set anfme = #{item.anfme,jdbcType=DECIMAL}
            where supplier = #{item.supplier,jdbcType=VARCHAR} and state = '1' and warehouse = #{item.warehouse,jdbcType=VARCHAR}
        </foreach>
        END;
    </insert>
    </update>
    <update id="withoutSupplierLocNormalUpdate">
        BEGIN
        <foreach collection="list" item="item" index="index">
            update asr_loc_normal set anfme = #{item.anfme,jdbcType=DECIMAL}
            where matnr = #{item.matnr,jdbcType=VARCHAR} and state = '1' and warehouse = #{item.warehouse,jdbcType=VARCHAR} and mnemonic = #{item.mnemonic, jdbcType=VARCHAR}
        </foreach>
        END;
    </update>
    <select id="pdaLocNormalQuery" resultMap="BaseResultMap">
        select id, matnr,maktx, warehouse,anfme from asr_loc_normal
src/main/webapp/static/js/locNormal/locNormalIn.js
@@ -89,10 +89,10 @@
                        layer.msg("请输入生产单号");
                        return;
                    }
                    if (matCodeData[i].supplier == null || matCodeData[i].supplier == '' || matCodeData[i].supplier == undefined) {
                        layer.msg("请输入通知单号");
                        return;
                    }
                    // if (matCodeData[i].supplier == null || matCodeData[i].supplier == '' || matCodeData[i].supplier == undefined) {
                    //     layer.msg("请输入通知单号");
                    //     return;
                    // }
                }
                // 判断库区是否为空
                var warehouse = $('#putSiteSelect').val();