2026.4.30 早 10:07
更新接收出库单拆单立库/平库单据
This commit is contained in:
@@ -72,6 +72,10 @@ public class DeliveryNoticeItemVo {
|
||||
/**旧项目号**/
|
||||
private String oldProjectNo;
|
||||
|
||||
/**存放地点 1 立库 2平库*/
|
||||
private String stg_location;
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -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() {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user