2026.4.30 早 10:07

更新接收出库单拆单立库/平库单据
This commit is contained in:
1009473166@qq.com
2026-04-30 10:07:38 +08:00
parent 7984ccc7f1
commit eba8434f68
2 changed files with 380 additions and 96 deletions

View File

@@ -72,6 +72,10 @@ public class DeliveryNoticeItemVo {
/**旧项目号**/
private String oldProjectNo;
/**存放地点 1 立库 2平库*/
private String stg_location;
}

View File

@@ -1,5 +1,6 @@
package com.ruoyi.api.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
@@ -22,7 +23,6 @@ import com.ruoyi.in.stockindeatilback.domain.InStockinDetailBack;
import com.ruoyi.in.stockindeatilback.service.IInStockinDetailBackService;
import com.ruoyi.in.stockindetail.domain.InStockinDetail;
import com.ruoyi.in.stockindetail.service.IInStockinDetailService;
import com.ruoyi.in.stockinfinish.domain.InStockinFinish;
import com.ruoyi.in.stockinfinish.service.IInStockinFinishService;
import com.ruoyi.job.mydojob.service.IMydoJobService;
import com.ruoyi.job.mydojobdetail.domain.MydoJobDetail;
@@ -32,31 +32,24 @@ import com.ruoyi.log.service.IRequestLogService;
import com.ruoyi.out.outStockout.domain.OutStockout;
import com.ruoyi.out.outStockout.service.IOutStockoutService;
import com.ruoyi.out.outStockoutBack.domain.OutStockoutBack;
import com.ruoyi.out.outStockoutBack.mapper.OutStockoutBackMapper;
import com.ruoyi.out.outStockoutBack.service.IOutStockoutBackService;
import com.ruoyi.out.outStockoutDetail.domain.OutStockoutDetail;
import com.ruoyi.out.outStockoutDetail.service.IOutStockoutDetailService;
import com.ruoyi.out.outStockoutDetail.mapper.OutStockoutDetailMapper;
import com.ruoyi.out.outStockout.mapper.OutStockoutMapper;
import com.ruoyi.out.outStockoutDetailBack.domain.OutStockoutDetailBack;
import com.ruoyi.out.outStockoutDetailBack.service.IOutStockoutDetailBackService;
import com.ruoyi.stock.stock.domain.BasStock;
import com.ruoyi.stock.stock.service.IBasStockService;
import io.swagger.v3.oas.models.security.SecurityScheme;
import org.apache.pdfbox.pdmodel.interactive.viewerpreferences.PDViewerPreferences;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*;
import java.math.BigDecimal;
import java.util.Map;
import java.util.stream.Collectors;
import static com.ruoyi.framework.datasource.DynamicDataSourceContextHolder.log;
/**
* 作业统计 Service 实现
*/
@@ -119,23 +112,265 @@ public class ToErpServiceImpl implements IToErpService {
* @param deliveryNoticeVo 送货通知单数据对象,包含单据基本信息和明细列表
* @return AjaxResult 操作结果,包含成功或错误信息
*/
// @Override
// @Transactional(rollbackFor = Exception.class)
// public AjaxResult receiveDeliveryNotice(DeliveryNoticeVo deliveryNoticeVo) {
//
// if (deliveryNoticeVo == null || deliveryNoticeVo.getDetailList() == null || deliveryNoticeVo.getDetailList().isEmpty()) {
// return AjaxResult.error("单据或明细不能为空");
// }
// String billType = deliveryNoticeVo.getBillType();
// String opType = deliveryNoticeVo.getOpType();
//// String status = deliveryNoticeVo.getStatus();
// int type = 0;
// try {
// type = Integer.parseInt(billType);
// } catch (Exception ignored) {
// }
//
// // 处理入库单相关操作(单据类型1-4)
// if (type >= 1 && type <= 4) {
// InStockin param = new InStockin();
// param.setErpBill(deliveryNoticeVo.getBillNo());
// List<InStockin> existList = inStockinService.selectInStockinListApi(param);
// InStockin exist = (existList != null && !existList.isEmpty()) ? existList.get(0) : null;
//
// // 删除操作(操作类型3)
// if ("3".equals(opType)) {
// if (exist == null) {
// return AjaxResult.error("单据不存在");
// }
// if ("3".equals(exist.getStatus())) {
// return AjaxResult.error("单据已执行,禁止删除");
// }
// if (exist.getStockinGuid() != null) {
// inStockinDetailService.deleteInStockinDetailByStockinGuid(exist.getStockinGuid());
// inStockinService.deleteInStockinByStockinGuid(exist.getStockinGuid());
// }
//
// return AjaxResult.success();
// }
//
// // 新增或修改操作(操作类型1或2)
// if ("2".equals(opType) || "1".equals(opType)) {
// if ("2".equals(opType) && exist == null) {
// return AjaxResult.error("单据不存在,无法修改");
// }
// if ("1".equals(opType) && exist != null) {
// return AjaxResult.error("单据已存在,请勿重复添加");
// }
// if (exist != null && "3".equals(exist.getStatus()) && "2".equals(opType)) {
// return AjaxResult.error("单据已执行,禁止修改");
// }
// InStockin inStockin = exist != null ? exist : new InStockin();
// if (exist == null) {
// inStockin.setStockinGuid(UUID.randomUUID().toString());
// }
// String rkdId = iBasJobIdService.getJobId("RKD");
//
// inStockin.setStockinId(rkdId);
// inStockin.setInType(deliveryNoticeVo.getBillType());
// inStockin.setCreateDate(deliveryNoticeVo.getBillDate());
// inStockin.setCreateManId(deliveryNoticeVo.getCreateMan());
// inStockin.setStatus("2");
// inStockin.setWarehouseId(deliveryNoticeVo.getWarehouseId());
// inStockin.setErpBill(deliveryNoticeVo.getBillNo());
// inStockin.setStockSource("1");
// inStockin.setDepartmentNo(deliveryNoticeVo.getProjectNo());//项目号
// inStockin.setSupplierNo(deliveryNoticeVo.getCustomerId());//供应商编码
// inStockin.setClassNo(deliveryNoticeVo.getCustomerName());//供应商名称
// inStockin.setSpare1(deliveryNoticeVo.getContractNo());//合同号
// inStockin.setSpare2(deliveryNoticeVo.getSalesOrderNo());//销售订单号
// inStockin.setSpare3(deliveryNoticeVo.getApproveDate());//审核时间
// inStockin.setSpare4(deliveryNoticeVo.getApproveMan());//审核人
// inStockin.setSpare5(deliveryNoticeVo.getRemark());
// inStockin.setCompanyShortName(deliveryNoticeVo.getCompanyShortName());
// inStockin.setAccountSetNo(deliveryNoticeVo.getAccountSetNo());
// if (exist == null) {
// inStockinService.insertInStockin(inStockin);
// } else {
// inStockinService.updateInStockin(inStockin);
// inStockinDetailService.deleteInStockinDetailByStockinGuid(inStockin.getStockinGuid());
// }
// List<DeliveryNoticeItemVo> items = deliveryNoticeVo.getDetailList();
//
// int a = 0;
// for (DeliveryNoticeItemVo item : items) {
// a += 1;
// InStockinDetail detail = new InStockinDetail();
// detail.setStockinGuid(inStockin.getStockinGuid());
// detail.setStockinDetailId(item.getBarCode());
// detail.setStockinId(inStockin.getStockinId());
// detail.setProductId(item.getInventoryCode());
// detail.setProductName(item.getInventoryName());
// detail.setSpec(item.getSpecModel());
// detail.setUnit(item.getUnit());
// detail.setQuantity(item.getQuantity());
// if (item.getIsBatchManage().equals("1") && (item.getLotNo().equals("") || item.getLotNo() == null)) {
// // 获取流水号
// detail.setLotNo(BatchNoGenerator.generateBatchNo());
// }else {
// detail.setLotNo(item.getLotNo());
// }
// detail.setSpare1(item.getLevelRelation());
// detail.setSpare2(item.getUpperMaterial());
// detail.setSpare3(item.getTopMaterial());
// detail.setSpare4(item.getProjectNo());
// detail.setSpare6(item.getLineNo());
// detail.setRemark(item.getRemark());
// detail.setAssignNum("0");
// detail.setScanNum("0");
// detail.setSourceLineId(item.getSourceLineId());
// detail.setBarCode(item.getBarCode());
// detail.setIsBatchManage(item.getIsBatchManage());
// detail.setOldProjectNo(item.getOldProjectNo());
// item.getStg_location()
// inStockinDetailService.insertInStockinDetail(detail);
//
// }
//
// return AjaxResult.success();
// }
// }
// // 处理出库单相关操作(单据类型5-7)
// else if (type >= 5 && type <= 7) {
// OutStockout param = new OutStockout();
// param.setErpStockoutId(deliveryNoticeVo.getBillNo());
// List<OutStockout> outList = outStockoutService.selectOutStockoutList(param);
// OutStockout exist = (outList != null && !outList.isEmpty()) ? outList.get(0) : null;
//
// // 删除操作(操作类型3)
// if ("3".equals(opType)) {
// if (exist == null) {
// return AjaxResult.error("单据不存在");
// }
// if ("3".equals(exist.getStatus())) {
// return AjaxResult.error("单据已执行,禁止删除");
// }
// OutStockoutDetail outStockoutDetail = new OutStockoutDetail();
// outStockoutDetail.setStockoutId(deliveryNoticeVo.getBillNo());
// List<OutStockoutDetail> details = outStockoutDetailService.selectOutStockoutDetailList(outStockoutDetail);
// if (details != null && !details.isEmpty()) {
// String[] ids = details.stream().map(OutStockoutDetail::getStockoutDetailId).toArray(String[]::new);
// outStockoutDetailService.deleteOutStockoutDetailByStockoutDetailIds(ids);
// }
// outStockoutService.deleteOutStockoutByStockoutGuid(exist.getStockoutGuid());
// return AjaxResult.success();
// }
//
// // 新增或修改操作(操作类型1或2)
// if ("2".equals(opType) || "1".equals(opType)) {
// if ("2".equals(opType) && exist == null) {
// return AjaxResult.error("单据不存在,无法修改");
// }
// if ("1".equals(opType) && exist != null) {
// return AjaxResult.error("单据已存在,请勿重复添加");
// }
// if (exist != null && "3".equals(exist.getStatus()) && "2".equals(opType)) {
// return AjaxResult.error("单据已执行,禁止修改");
// }
// OutStockout out = exist != null ? exist : new OutStockout();
//
// if (exist == null) {
// out.setStockoutGuid(UUID.randomUUID().toString());
// }
// String ckdId = iBasJobIdService.getJobId("CKD");
// out.setStockoutId(ckdId);
// out.setOutType(deliveryNoticeVo.getBillType());
// out.setCreateDate(deliveryNoticeVo.getBillDate());
// out.setErpStockoutId(deliveryNoticeVo.getBillNo());
// out.setCreateManId(deliveryNoticeVo.getCreateMan());
// out.setStatus("2");
// out.setWarehouseId(deliveryNoticeVo.getWarehouseId());
// out.setStockoutSource("1");
//// out.setSpare6(deliveryNoticeVo.getOutType());
// out.setSpare6("1");
// out.setCarNumber(deliveryNoticeVo.getIsProjectOut());
// out.setDepartmentNo(deliveryNoticeVo.getProjectNo());
// out.setCustomerNo(deliveryNoticeVo.getCustomerId());
// out.setClassNowId(deliveryNoticeVo.getCustomerName());
// out.setSpare1(deliveryNoticeVo.getContractNo());//合同号
// out.setSpare2(deliveryNoticeVo.getSalesOrderNo());//销售订单号
// out.setSpare3(deliveryNoticeVo.getApproveDate());//审核时间
// out.setSpare4(deliveryNoticeVo.getApproveMan());//审核人
// out.setSpare5(deliveryNoticeVo.getRemark());
// out.setSpare7(deliveryNoticeVo.getDestination());
// //手动设置出库类型为2 这样会赋值 in_or_out 21
// out.setSpare8("2");
// out.setCompanyShortName(deliveryNoticeVo.getCompanyShortName());
// out.setAccountSetNo(deliveryNoticeVo.getAccountSetNo());
//
// if (exist == null) {
// outStockoutService.insertOutStockout(out);
// } else {
// outStockoutService.updateOutStockout(out);
// OutStockoutDetail q2 = new OutStockoutDetail();
// q2.setStockoutId(deliveryNoticeVo.getBillNo());
// List<OutStockoutDetail> oldDetails = outStockoutDetailService.selectOutStockoutDetailList(q2);
// if (oldDetails != null && !oldDetails.isEmpty()) {
// String[] ids = oldDetails.stream().map(OutStockoutDetail::getStockoutDetailId).toArray(String[]::new);
// outStockoutDetailService.deleteOutStockoutDetailByStockoutDetailIds(ids);
// }
// }
// int i = 0;
// for (DeliveryNoticeItemVo item : deliveryNoticeVo.getDetailList()) {
// OutStockoutDetail d = new OutStockoutDetail();
// i += 1;
// d.setStockoutDetailId(out.getStockoutId() + "-" + i);
// d.setStockoutGuid(out.getStockoutGuid());
// d.setStockoutId(out.getStockoutId());
// d.setProductId(item.getInventoryCode());
// d.setProductName(item.getInventoryName());
// d.setLotNo(item.getLotNo());
// d.setSpec(item.getSpecModel());
// d.setUnit(item.getUnit());
// d.setSpare1(item.getLevelRelation());
// d.setSpare2(item.getUpperMaterial());
// d.setSpare3(item.getTopMaterial());
// d.setSpare4(item.getProjectNo());
// d.setSpare6(item.getLineNo());
// d.setRemark(item.getRemark());
// d.setSourceLineId(item.getSourceLineId());
// d.setBarCode(item.getBarCode());
// d.setIsBatchManage(item.getIsBatchManage());
// d.setOldProjectNo(item.getOldProjectNo());
// //d.setSpare8(deliveryNoticeVo.getDestination());
//
//
// try {
// d.setQuantity(new BigDecimal(item.getQuantity()));
// d.setAllotQuantity(BigDecimal.ZERO);
// d.setAssignNum(BigDecimal.ZERO);
// } catch (Exception e) {
// d.setQuantity(BigDecimal.ZERO);
// }
// outStockoutDetailService.insertOutStockoutDetail(d);
//
// }
// return AjaxResult.success();
// }
// }
// return AjaxResult.error("不支持的单据类型或操作类型");
//
// }
@Override
@Transactional(rollbackFor = Exception.class)
public AjaxResult receiveDeliveryNotice(DeliveryNoticeVo deliveryNoticeVo) {
if (deliveryNoticeVo == null || deliveryNoticeVo.getDetailList() == null || deliveryNoticeVo.getDetailList().isEmpty()) {
return AjaxResult.error("单据或明细不能为空");
}
String billType = deliveryNoticeVo.getBillType();
String opType = deliveryNoticeVo.getOpType();
// String status = deliveryNoticeVo.getStatus();
int type = 0;
try {
type = Integer.parseInt(billType);
} catch (Exception ignored) {
}
// 处理入库单相关操作(单据类型1-4)
// ===================== 入库单 1-4 逻辑完全不变 =====================
if (type >= 1 && type <= 4) {
InStockin param = new InStockin();
param.setErpBill(deliveryNoticeVo.getBillNo());
@@ -154,7 +389,6 @@ public class ToErpServiceImpl implements IToErpService {
inStockinDetailService.deleteInStockinDetailByStockinGuid(exist.getStockinGuid());
inStockinService.deleteInStockinByStockinGuid(exist.getStockinGuid());
}
return AjaxResult.success();
}
@@ -183,16 +417,17 @@ public class ToErpServiceImpl implements IToErpService {
inStockin.setWarehouseId(deliveryNoticeVo.getWarehouseId());
inStockin.setErpBill(deliveryNoticeVo.getBillNo());
inStockin.setStockSource("1");
inStockin.setDepartmentNo(deliveryNoticeVo.getProjectNo());//项目号
inStockin.setSupplierNo(deliveryNoticeVo.getCustomerId());//供应商编码
inStockin.setClassNo(deliveryNoticeVo.getCustomerName());//供应商名称
inStockin.setSpare1(deliveryNoticeVo.getContractNo());//合同号
inStockin.setSpare2(deliveryNoticeVo.getSalesOrderNo());//销售订单号
inStockin.setSpare3(deliveryNoticeVo.getApproveDate());//审核时间
inStockin.setSpare4(deliveryNoticeVo.getApproveMan());//审核人
inStockin.setDepartmentNo(deliveryNoticeVo.getProjectNo());
inStockin.setSupplierNo(deliveryNoticeVo.getCustomerId());
inStockin.setClassNo(deliveryNoticeVo.getCustomerName());
inStockin.setSpare1(deliveryNoticeVo.getContractNo());
inStockin.setSpare2(deliveryNoticeVo.getSalesOrderNo());
inStockin.setSpare3(deliveryNoticeVo.getApproveDate());
inStockin.setSpare4(deliveryNoticeVo.getApproveMan());
inStockin.setSpare5(deliveryNoticeVo.getRemark());
inStockin.setCompanyShortName(deliveryNoticeVo.getCompanyShortName());
inStockin.setAccountSetNo(deliveryNoticeVo.getAccountSetNo());
if (exist == null) {
inStockinService.insertInStockin(inStockin);
} else {
@@ -200,10 +435,7 @@ public class ToErpServiceImpl implements IToErpService {
inStockinDetailService.deleteInStockinDetailByStockinGuid(inStockin.getStockinGuid());
}
List<DeliveryNoticeItemVo> items = deliveryNoticeVo.getDetailList();
int a = 0;
for (DeliveryNoticeItemVo item : items) {
a += 1;
InStockinDetail detail = new InStockinDetail();
detail.setStockinGuid(inStockin.getStockinGuid());
detail.setStockinDetailId(item.getBarCode());
@@ -214,9 +446,8 @@ public class ToErpServiceImpl implements IToErpService {
detail.setUnit(item.getUnit());
detail.setQuantity(item.getQuantity());
if (item.getIsBatchManage().equals("1") && (item.getLotNo().equals("") || item.getLotNo() == null)) {
// 获取流水号
detail.setLotNo(BatchNoGenerator.generateBatchNo());
}else {
} else {
detail.setLotNo(item.getLotNo());
}
detail.setSpare1(item.getLevelRelation());
@@ -232,20 +463,20 @@ public class ToErpServiceImpl implements IToErpService {
detail.setIsBatchManage(item.getIsBatchManage());
detail.setOldProjectNo(item.getOldProjectNo());
inStockinDetailService.insertInStockinDetail(detail);
}
return AjaxResult.success();
}
}
// 处理出库单相关操作(单据类型5-7)
// ===================== 出库单 5-7 改造:按立库/平库分两组各1主单多明细 =====================
else if (type >= 5 && type <= 7) {
OutStockout param = new OutStockout();
param.setErpStockoutId(deliveryNoticeVo.getBillNo());
List<OutStockout> outList = outStockoutService.selectOutStockoutList(param);
OutStockout exist = (outList != null && !outList.isEmpty()) ? outList.get(0) : null;
String billNo = deliveryNoticeVo.getBillNo();
// 删除操作(操作类型3)
// 删除操作 不变
if ("3".equals(opType)) {
if (exist == null) {
return AjaxResult.error("单据不存在");
@@ -254,7 +485,7 @@ public class ToErpServiceImpl implements IToErpService {
return AjaxResult.error("单据已执行,禁止删除");
}
OutStockoutDetail outStockoutDetail = new OutStockoutDetail();
outStockoutDetail.setStockoutId(deliveryNoticeVo.getBillNo());
outStockoutDetail.setStockoutId(billNo);
List<OutStockoutDetail> details = outStockoutDetailService.selectOutStockoutDetailList(outStockoutDetail);
if (details != null && !details.isEmpty()) {
String[] ids = details.stream().map(OutStockoutDetail::getStockoutDetailId).toArray(String[]::new);
@@ -264,7 +495,7 @@ public class ToErpServiceImpl implements IToErpService {
return AjaxResult.success();
}
// 新增或修改操作(操作类型1或2)
// 新增/修改
if ("2".equals(opType) || "1".equals(opType)) {
if ("2".equals(opType) && exist == null) {
return AjaxResult.error("单据不存在,无法修改");
@@ -275,91 +506,140 @@ public class ToErpServiceImpl implements IToErpService {
if (exist != null && "3".equals(exist.getStatus()) && "2".equals(opType)) {
return AjaxResult.error("单据已执行,禁止修改");
}
OutStockout out = exist != null ? exist : new OutStockout();
List<DeliveryNoticeItemVo> allDetail = deliveryNoticeVo.getDetailList();
// 1. 按 stg_location 分组
List<DeliveryNoticeItemVo> liKuList = new ArrayList<>();
List<DeliveryNoticeItemVo> pingKuList = new ArrayList<>();
for (DeliveryNoticeItemVo item : allDetail) {
String loc = item.getStg_location();
if ("2".equals(loc)) {
pingKuList.add(item);
} else {
// 1 或空 都归立库
liKuList.add(item);
}
}
// ========== 处理立库:原有主单 + 所有立库明细 ==========
OutStockout mainOut = exist != null ? exist : new OutStockout();
if (exist == null) {
out.setStockoutGuid(UUID.randomUUID().toString());
mainOut.setStockoutGuid(UUID.randomUUID().toString());
}
String ckdId = iBasJobIdService.getJobId("CKD");
out.setStockoutId(ckdId);
out.setOutType(deliveryNoticeVo.getBillType());
out.setCreateDate(deliveryNoticeVo.getBillDate());
out.setErpStockoutId(deliveryNoticeVo.getBillNo());
out.setCreateManId(deliveryNoticeVo.getCreateMan());
out.setStatus("2");
out.setWarehouseId(deliveryNoticeVo.getWarehouseId());
out.setStockoutSource("1");
// out.setSpare6(deliveryNoticeVo.getOutType());
out.setSpare6("1");
out.setCarNumber(deliveryNoticeVo.getIsProjectOut());
out.setDepartmentNo(deliveryNoticeVo.getProjectNo());
out.setCustomerNo(deliveryNoticeVo.getCustomerId());
out.setClassNowId(deliveryNoticeVo.getCustomerName());
out.setSpare1(deliveryNoticeVo.getContractNo());//合同号
out.setSpare2(deliveryNoticeVo.getSalesOrderNo());//销售订单号
out.setSpare3(deliveryNoticeVo.getApproveDate());//审核时间
out.setSpare4(deliveryNoticeVo.getApproveMan());//审核人
out.setSpare5(deliveryNoticeVo.getRemark());
out.setSpare7(deliveryNoticeVo.getDestination());
//手动设置出库类型为2 这样会赋值 in_or_out 21
out.setSpare8("2");
out.setCompanyShortName(deliveryNoticeVo.getCompanyShortName());
out.setAccountSetNo(deliveryNoticeVo.getAccountSetNo());
fillOutStockout(mainOut, deliveryNoticeVo, ckdId);
if (exist == null) {
outStockoutService.insertOutStockout(out);
outStockoutService.insertOutStockout(mainOut);
} else {
outStockoutService.updateOutStockout(out);
outStockoutService.updateOutStockout(mainOut);
// 修改先删旧明细
OutStockoutDetail q2 = new OutStockoutDetail();
q2.setStockoutId(deliveryNoticeVo.getBillNo());
q2.setStockoutId(billNo);
List<OutStockoutDetail> oldDetails = outStockoutDetailService.selectOutStockoutDetailList(q2);
if (oldDetails != null && !oldDetails.isEmpty()) {
String[] ids = oldDetails.stream().map(OutStockoutDetail::getStockoutDetailId).toArray(String[]::new);
String[] ids = oldDetails.stream()
.map(OutStockoutDetail::getStockoutDetailId)
.toArray(String[]::new);
outStockoutDetailService.deleteOutStockoutDetailByStockoutDetailIds(ids);
}
}
int i = 0;
for (DeliveryNoticeItemVo item : deliveryNoticeVo.getDetailList()) {
OutStockoutDetail d = new OutStockoutDetail();
i += 1;
d.setStockoutDetailId(out.getStockoutId() + "-" + i);
d.setStockoutGuid(out.getStockoutGuid());
d.setStockoutId(out.getStockoutId());
d.setProductId(item.getInventoryCode());
d.setProductName(item.getInventoryName());
d.setLotNo(item.getLotNo());
d.setSpec(item.getSpecModel());
d.setUnit(item.getUnit());
d.setSpare1(item.getLevelRelation());
d.setSpare2(item.getUpperMaterial());
d.setSpare3(item.getTopMaterial());
d.setSpare4(item.getProjectNo());
d.setSpare6(item.getLineNo());
d.setRemark(item.getRemark());
d.setSourceLineId(item.getSourceLineId());
d.setBarCode(item.getBarCode());
d.setIsBatchManage(item.getIsBatchManage());
d.setOldProjectNo(item.getOldProjectNo());
//d.setSpare8(deliveryNoticeVo.getDestination());
// 保存所有立库明细到主单
saveOutDetailList(mainOut, liKuList,"1");
try {
d.setQuantity(new BigDecimal(item.getQuantity()));
d.setAllotQuantity(BigDecimal.ZERO);
d.setAssignNum(BigDecimal.ZERO);
} catch (Exception e) {
d.setQuantity(BigDecimal.ZERO);
}
outStockoutDetailService.insertOutStockoutDetail(d);
// ========== 处理平库:新建一张独立主单 + 所有平库明细 ==========
if (CollUtil.isNotEmpty(pingKuList)) {
OutStockout pingKuOut = new OutStockout();
pingKuOut.setStockoutGuid(UUID.randomUUID().toString());
String pingCkdId = iBasJobIdService.getJobId("CKD");
fillOutStockout(pingKuOut, deliveryNoticeVo, pingCkdId);
// 插入平库主单
outStockoutService.insertOutStockout(pingKuOut);
// 平库所有明细挂到这个新主单
saveOutDetailList(pingKuOut, pingKuList,"2");
log.info("平库分组生成独立出库单:{},明细条数:{}", pingCkdId, pingKuList.size());
}
return AjaxResult.success();
}
}
return AjaxResult.error("不支持的单据类型或操作类型");
}
/**
* 填充出库单主表公共字段
*/
private void fillOutStockout(OutStockout out, DeliveryNoticeVo vo, String ckdId) {
out.setStockoutId(ckdId);
out.setOutType(vo.getBillType());
out.setCreateDate(vo.getBillDate());
out.setErpStockoutId(vo.getBillNo());
out.setCreateManId(vo.getCreateMan());
out.setStatus("2");
out.setWarehouseId(vo.getWarehouseId());
out.setStockoutSource("1");
out.setSpare6("1");
out.setCarNumber(vo.getIsProjectOut());
out.setDepartmentNo(vo.getProjectNo());
out.setCustomerNo(vo.getCustomerId());
out.setClassNowId(vo.getCustomerName());
out.setSpare1(vo.getContractNo());
out.setSpare2(vo.getSalesOrderNo());
out.setSpare3(vo.getApproveDate());
out.setSpare4(vo.getApproveMan());
out.setSpare5(vo.getRemark());
out.setSpare7(vo.getDestination());
out.setSpare8("2");
out.setCompanyShortName(vo.getCompanyShortName());
out.setAccountSetNo(vo.getAccountSetNo());
}
/**
* 批量保存出库明细列表
*/
private void saveOutDetailList(OutStockout out, List<DeliveryNoticeItemVo> detailList, String warehouseId) {
if (CollUtil.isEmpty(detailList)) {
return;
}
int i = 0;
for (DeliveryNoticeItemVo item : detailList) {
i++;
OutStockoutDetail d = new OutStockoutDetail();
d.setStockoutDetailId(out.getStockoutId() + "-" + i);
d.setStockoutGuid(out.getStockoutGuid());
d.setStockoutId(out.getStockoutId());
d.setProductId(item.getInventoryCode());
d.setProductName(item.getInventoryName());
d.setLotNo(item.getLotNo());
d.setSpec(item.getSpecModel());
d.setUnit(item.getUnit());
d.setSpare1(item.getLevelRelation());
d.setSpare2(item.getUpperMaterial());
d.setSpare3(item.getTopMaterial());
d.setSpare4(item.getProjectNo());
d.setSpare6(item.getLineNo());
d.setRemark(item.getRemark());
d.setSourceLineId(item.getSourceLineId());
d.setBarCode(item.getBarCode());
d.setIsBatchManage(item.getIsBatchManage());
d.setOldProjectNo(item.getOldProjectNo());
d.setProductGuid(item.getStg_location());
try {
d.setQuantity(new BigDecimal(item.getQuantity()));
d.setAllotQuantity(BigDecimal.ZERO);
d.setAssignNum(BigDecimal.ZERO);
} catch (Exception e) {
d.setQuantity(BigDecimal.ZERO);
}
outStockoutDetailService.insertOutStockoutDetail(d);
}
out.setWarehouseId(warehouseId);
outStockoutService.updateOutStockout(out);
}
@Override
public void callbackInDeliveryNotice() {