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.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;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import java.math.BigDecimal;
|
import java.text.MessageFormat;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
|
@Slf4j
|
@Service("locNormalService")
|
public class LocNormalServiceImpl extends ServiceImpl<LocNormalMapper, LocNormal> implements LocNormalService {
|
@Autowired
|
ErpSqlServer erpSqlServer;
|
@Autowired
|
OutStockMapper outStockMapper;
|
@Autowired
|
LocNormalService locNormalService;
|
@Autowired
|
WaitPakinService waitPakinService;
|
@Autowired
|
WaitPakinLogService waitPakinLogService;
|
@Autowired
|
ErpService erpService;
|
@Autowired
|
LocNormalLogService locNormalLogService;
|
|
@Override
|
public List<LocNormal> getLocNormalData() {
|
return baseMapper.getLocNormalData();
|
}
|
|
@Override
|
public void updateLocNormal(String matnr, BigDecimal anfme, Long modiUser, Date modiTime, Integer id) {
|
baseMapper.updateLocNormal(matnr, anfme, modiUser, modiTime, id);
|
}
|
|
@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
|
public void locNormalIn(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()));
|
if (!Cools.isEmpty(oldLocList)) {
|
// erp更新
|
updateCPICMO(list.get(i));
|
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.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));
|
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));
|
// 平仓入库逻辑
|
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);
|
}
|
}
|
} 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 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);
|
}
|
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()));
|
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, ''{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());
|
}
|
}
|
}
|
}
|
}
|
}
|
/**
|
* 成品入库单标记完成
|
*/
|
private boolean completeCPakIn(String FBillNo, String Fnumber){
|
String sql = "update CPICMO set Fflag_finish = 1 where FBillNo = ''{0}'' and Fnumber = ''{1}''";
|
sql = MessageFormat.format(sql, FBillNo, Fnumber);
|
return erpSqlServer.update(sql) > 0;
|
}
|
|
@Override
|
public void pdaLocNormalIn(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").and().eq("warehouse", list.get(i).getWarehouse()));
|
if (!Cools.isEmpty(oldLocList)) {
|
// erp更新
|
updateCPICMO(list.get(i));
|
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.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));
|
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));
|
// 平仓入库逻辑
|
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);
|
}
|
}
|
} else {
|
throw new CoolException("通知单号不可为空");
|
}
|
}
|
|
}
|
}
|
|
/* cust_wait_pakin转cust_wait_pakin_log,并更新数量 */
|
private boolean custWaitPakinToLog(LocNormal list, Double updateAnfme) {
|
WaitPakin waitPakin = waitPakinService.selectOne(new EntityWrapper<WaitPakin>().eq("supplier", list.getSupplier()).and().eq("matnr", list.getMatnr()));
|
if(!Cools.isEmpty(waitPakin)){
|
WaitPakinLog waitPakinLog = new WaitPakinLog();
|
waitPakinLog.setAnfme(updateAnfme);
|
waitPakinLog.setMatnr(waitPakin.getMatnr());
|
waitPakinLog.setMaktx(waitPakin.getMaktx());
|
waitPakinLog.setLgnum(waitPakin.getLgnum());
|
waitPakinLog.setType(waitPakin.getType());
|
waitPakinLog.setMnemonic(waitPakin.getMnemonic());
|
waitPakinLog.setSupplier(waitPakin.getSupplier());
|
waitPakinLog.setWarehouse(waitPakin.getWarehouse());
|
waitPakinLog.setBrand(waitPakin.getBrand());
|
waitPakinLog.setAltme(waitPakin.getAltme());
|
waitPakinLog.setZpallet(waitPakin.getZpallet());
|
waitPakinLog.setBname(waitPakin.getBname());
|
waitPakinLog.setLocNo(waitPakin.getLocNo());
|
waitPakinLog.setStatus(waitPakin.getStatus());
|
waitPakinLog.setIoStatus(waitPakin.getIoStatus());
|
waitPakinLog.setMemo(waitPakin.getMemo());
|
waitPakinLog.setModiTime(waitPakin.getModiTime());
|
waitPakinLog.setModiUser(waitPakin.getModiUser());
|
waitPakinLog.setAppeTime(waitPakin.getAppeTime());
|
waitPakinLog.setAppeUser(waitPakin.getAppeUser());
|
// 转入库通知历史档
|
waitPakinLogService.insert(waitPakinLog);
|
// 修改入库同志档物料数量
|
Wrapper<WaitPakin> wrapper = new EntityWrapper<WaitPakin>();
|
wrapper.eq("supplier", list.getSupplier())
|
.eq("matnr", list.getMatnr())
|
.isNull("zpallet");
|
WaitPakin pakin = new WaitPakin();
|
pakin.setAnfme(waitPakin.getAnfme() - updateAnfme);
|
waitPakinService.update(pakin, wrapper);
|
}
|
return true;
|
}
|
|
/* 更新erp入库表 */
|
private boolean updateCPICMO(LocNormal list) {
|
String sqlSelect = "select * from CPICMO where 1=1 and Fnumber = ''{0}'' and FBillNo = ''{1}''";
|
sqlSelect = MessageFormat.format(sqlSelect, list.getMatnr(), list.getSupplier());
|
List<CPICMO> CPICMOList = erpSqlServer.select(sqlSelect,CPICMO.class);
|
if (CPICMOList.size() > 0) { // 说明erp有对应的入库单
|
String sql = "update CPICMO set FAuxCommitQty = (FAuxCommitQty + {0,number,#}) where 1=1 and Fnumber = ''{1}'' and FBillNo = ''{2}''";
|
sql = MessageFormat.format(sql, list.getAnfme(), list.getMatnr(), list.getSupplier());
|
if (erpSqlServer.update(sql) > 0) {
|
sql = "select * from CPICMO where 1=1 and Fnumber = ''{0}'' and FBillNo = ''{1}''";
|
sql = MessageFormat.format(sql, list.getMatnr(), list.getSupplier());
|
List<CPICMO> select = erpSqlServer.select(sql, CPICMO.class);
|
CPICMO cpicmo = select.get(0);
|
boolean complete = false;
|
if (cpicmo.getFQty() > 0) {
|
if (Double.doubleToLongBits(cpicmo.getFAuxCommitQty()) == Double.doubleToLongBits(cpicmo.getFQty())) {
|
complete = true;
|
}
|
} else {
|
if (Double.doubleToLongBits(cpicmo.getFAuxCommitQty()) == Double.doubleToLongBits(cpicmo.getFAuxQty())) {
|
complete = true;
|
}
|
}
|
if (complete) {
|
if (!completeCPakIn(list.getSupplier(), list.getMatnr())) {
|
log.error("{}平仓入库单标记完成失败", list.getSupplier());
|
}
|
}
|
}
|
} else {
|
throw new CoolException("ERP查询不到对应通知单");
|
}
|
|
return true;
|
}
|
|
@Override
|
public List<LocNormal> pdaLocNormalQuery(String matnr, String warehouse, String billNo) {
|
return baseMapper.pdaLocNormalQuery(matnr, warehouse, billNo);
|
}
|
|
@Override
|
public void pdaLocNormalOut(List<LocNormal> list) {
|
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);
|
}
|
}
|
}
|
}
|
|
@Override
|
public List<LocNormal> pdaLocNormalWarehouseQuery(String warehouse, String matnr) {
|
return baseMapper.pdaLocNormalWarehouseQuery(warehouse, matnr);
|
}
|
|
@Override
|
public void pdaLocNormalMove(List<LocNormal> list) {
|
baseMapper.pdaLocNormalMove(list);
|
}
|
|
@Override
|
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(), mnemonic) ;
|
if (locNormal.size() > 0) {
|
for (LocNormal e:locNormal) {
|
LocNormal obj = new LocNormal();
|
obj.setMatnr(e.getMatnr());
|
obj.setMaktx(e.getMaktx());
|
obj.setLgnum(e.getLgnum());
|
obj.setType(e.getType());
|
obj.setMnemonic(e.getMnemonic());
|
obj.setSupplier(e.getSupplier());
|
obj.setWarehouse(e.getWarehouse());
|
obj.setBrand(e.getBrand());
|
obj.setAnfme(e.getAnfme());
|
obj.setBname(e.getBname());
|
obj.setMemo(e.getMemo());
|
obj.setModiUser(e.getModiUser());
|
obj.setModiTime(e.getModiTime());
|
obj.setAppeUser(e.getAppeUser());
|
obj.setAppeTime(e.getAppeTime());
|
obj.setState(e.getState());
|
obj.setWarehouseName(e.getWarehouseName());
|
obj.setId(e.getId());
|
locNormalResult.add(obj);
|
}
|
}
|
}
|
return locNormalResult;
|
}
|
}
|