Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
赵辉
2026-03-10 23:16:29 +08:00
25 changed files with 427 additions and 152 deletions
@@ -212,11 +212,11 @@ public class ReconciliationDTO extends BaseVOEntity{
@ApiModelProperty("创建时间开始") @ApiModelProperty("创建时间开始")
@JsonFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "创建时间开始", width = 30, dateFormat = "yyyy-MM-dd") @Excel(name = "创建时间开始", width = 30, dateFormat = "yyyy-MM-dd")
private Date createTimeStart; private String createTimeStart;
@ApiModelProperty("创建时间结束") @ApiModelProperty("创建时间结束")
@JsonFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "创建时间结束", width = 30, dateFormat = "yyyy-MM-dd") @Excel(name = "创建时间结束", width = 30, dateFormat = "yyyy-MM-dd")
private Date createTimeEnd; private String createTimeEnd;
@ApiModelProperty("审核时间开始") @ApiModelProperty("审核时间开始")
@JsonFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "审核时间开始", width = 30, dateFormat = "yyyy-MM-dd") @Excel(name = "审核时间开始", width = 30, dateFormat = "yyyy-MM-dd")
@@ -437,14 +437,14 @@ public class ContractManageApplicationService {
List<ContractManageDetailPO> contractManageDetailPOList = contractManageDetailDomainService.queryListByManageId(resultContract.getContractManageId()); List<ContractManageDetailPO> contractManageDetailPOList = contractManageDetailDomainService.queryListByManageId(resultContract.getContractManageId());
List<ContractManageDetailPO> contractManageDetailSaveList = new ArrayList<>(); List<ContractManageDetailPO> contractManageDetailSaveList = new ArrayList<>();
if(contractManageDetailPOList != null && contractManageDetailPOList.size()>0){ if(contractManageDetailPOList != null && contractManageDetailPOList.size()>0){
//将临时合同中没有,但是通用合同中有的数据过滤出 //将临时合同中没有,但是通用合同中有的数据过滤出(使用 ObjectUtil.equal 避免 firstSubjectCode/secondSubjectCode 为 null 时 NPE
contractManageDetailSaveList = contractManageDetailPOList.stream().filter(item -> contractManageDetailPOList.stream().noneMatch(item1 -> item1.getFirstSubjectCode().equals(item.getFirstSubjectCode()) && item1.getSecondSubjectCode().equals(item.getSecondSubjectCode()) && item1.getSubjectType()==1)).collect(Collectors.toList()); contractManageDetailSaveList = contractManageDetailPOList.stream().filter(item -> contractManageDetailPOList.stream().noneMatch(item1 -> ObjectUtil.equal(item1.getFirstSubjectCode(), item.getFirstSubjectCode()) && ObjectUtil.equal(item1.getSecondSubjectCode(), item.getSecondSubjectCode()) && item1.getSubjectType()==1)).collect(Collectors.toList());
//首先根据结算科目类型将临时合同过滤出 //首先根据结算科目类型将临时合同过滤出
List<ContractManageDetailPO> tempContractManageDetailPOList = contractManageDetailPOList.stream().filter(item -> item.getSubjectType()==2).collect(Collectors.toList()); List<ContractManageDetailPO> tempContractManageDetailPOList = contractManageDetailPOList.stream().filter(item -> item.getSubjectType()==2).collect(Collectors.toList());
//遍历两个集合,将相同费用科目code的数据,进行比较,如果结算科目类型是临时且合同有效期有效,则使用该条数据,将另一条移除 //遍历两个集合,将相同费用科目code的数据,进行比较,如果结算科目类型是临时且合同有效期有效,则使用该条数据,将另一条移除
for (ContractManageDetailPO manageDetailPO : tempContractManageDetailPOList) { for (ContractManageDetailPO manageDetailPO : tempContractManageDetailPOList) {
for (ContractManageDetailPO contractManageDetailPO : contractManageDetailPOList) { for (ContractManageDetailPO contractManageDetailPO : contractManageDetailPOList) {
if(contractManageDetailPO.getFirstSubjectCode().equals(manageDetailPO.getFirstSubjectCode()) && contractManageDetailPO.getSecondSubjectCode().equals(manageDetailPO.getSecondSubjectCode())){ if(ObjectUtil.equal(contractManageDetailPO.getFirstSubjectCode(), manageDetailPO.getFirstSubjectCode()) && ObjectUtil.equal(contractManageDetailPO.getSecondSubjectCode(), manageDetailPO.getSecondSubjectCode())){
//判断如果是临时合同在有效期内,则将该条数据保存到集合contractManageDetailSaveList //判断如果是临时合同在有效期内,则将该条数据保存到集合contractManageDetailSaveList
DateTime start = DateUtil.parseDate(DateUtil.format(manageDetailPO.getSubjectEffectiveDate(),"yyyy-MM-dd")); DateTime start = DateUtil.parseDate(DateUtil.format(manageDetailPO.getSubjectEffectiveDate(),"yyyy-MM-dd"));
DateTime end = DateUtil.parseDateTime(DateUtil.format(manageDetailPO.getSubjectEffectiveDate(),"yyyy-MM-dd")); DateTime end = DateUtil.parseDateTime(DateUtil.format(manageDetailPO.getSubjectEffectiveDate(),"yyyy-MM-dd"));
@@ -119,14 +119,14 @@ public class ContractManageDomainService {
List<ContractManageDetailPO> contractManageDetailPOList = contractManageDetailDomainService.queryListByManageId(contractManagePO.getContractManageId()); List<ContractManageDetailPO> contractManageDetailPOList = contractManageDetailDomainService.queryListByManageId(contractManagePO.getContractManageId());
List<ContractManageDetailPO> contractManageDetailSaveList = new ArrayList<>(); List<ContractManageDetailPO> contractManageDetailSaveList = new ArrayList<>();
if(contractManageDetailPOList != null && contractManageDetailPOList.size()>0){ if(contractManageDetailPOList != null && contractManageDetailPOList.size()>0){
//将临时合同中没有,但是通用合同中有的数据过滤出 //将临时合同中没有,但是通用合同中有的数据过滤出(使用 ObjectUtil.equal 避免 firstSubjectCode/secondSubjectCode 为 null 时 NPE
contractManageDetailSaveList = contractManageDetailPOList.stream().filter(item -> contractManageDetailPOList.stream().anyMatch(item1 -> item1.getFirstSubjectCode().equals(item.getFirstSubjectCode()) && item1.getSecondSubjectCode().equals(item.getSecondSubjectCode()) && item1.getSubjectType()==1)).collect(Collectors.toList()); contractManageDetailSaveList = contractManageDetailPOList.stream().filter(item -> contractManageDetailPOList.stream().anyMatch(item1 -> ObjectUtil.equal(item1.getFirstSubjectCode(), item.getFirstSubjectCode()) && ObjectUtil.equal(item1.getSecondSubjectCode(), item.getSecondSubjectCode()) && item1.getSubjectType()==1)).collect(Collectors.toList());
//首先根据结算科目类型将临时合同过滤出 //首先根据结算科目类型将临时合同过滤出
List<ContractManageDetailPO> tempContractManageDetailPOList = contractManageDetailPOList.stream().filter(item -> item.getSubjectType()==2).collect(Collectors.toList()); List<ContractManageDetailPO> tempContractManageDetailPOList = contractManageDetailPOList.stream().filter(item -> item.getSubjectType()==2).collect(Collectors.toList());
//遍历两个集合,将相同费用科目code的数据,进行比较,如果结算科目类型是临时且合同有效期有效,则使用该条数据,将另一条移除 //遍历两个集合,将相同费用科目code的数据,进行比较,如果结算科目类型是临时且合同有效期有效,则使用该条数据,将另一条移除
for (ContractManageDetailPO manageDetailPO : tempContractManageDetailPOList) { for (ContractManageDetailPO manageDetailPO : tempContractManageDetailPOList) {
for (ContractManageDetailPO contractManageDetailPO : contractManageDetailPOList) { for (ContractManageDetailPO contractManageDetailPO : contractManageDetailPOList) {
if(contractManageDetailPO.getFirstSubjectCode().equals(manageDetailPO.getFirstSubjectCode()) && contractManageDetailPO.getSecondSubjectCode().equals(manageDetailPO.getSecondSubjectCode())){ if(ObjectUtil.equal(contractManageDetailPO.getFirstSubjectCode(), manageDetailPO.getFirstSubjectCode()) && ObjectUtil.equal(contractManageDetailPO.getSecondSubjectCode(), manageDetailPO.getSecondSubjectCode())){
//判断如果是临时合同在有效期内,则将该条数据保存到集合contractManageDetailSaveList //判断如果是临时合同在有效期内,则将该条数据保存到集合contractManageDetailSaveList
DateTime start = DateUtil.parseDate(DateUtil.format(manageDetailPO.getSubjectEffectiveDate(),"yyyy-MM-dd")); DateTime start = DateUtil.parseDate(DateUtil.format(manageDetailPO.getSubjectEffectiveDate(),"yyyy-MM-dd"));
DateTime end = DateUtil.parseDateTime(DateUtil.format(manageDetailPO.getSubjectEffectiveDate(),"yyyy-MM-dd")); DateTime end = DateUtil.parseDateTime(DateUtil.format(manageDetailPO.getSubjectEffectiveDate(),"yyyy-MM-dd"));
@@ -49,7 +49,7 @@ public class ExpenseAccountPO extends BaseVOEntity{
@ApiModelProperty("显示顺序") @ApiModelProperty("显示顺序")
@Excel(name = "显示顺序") @Excel(name = "显示顺序")
private String showSeq; private Integer showSeq;
@ApiModelProperty("计费属性编码") @ApiModelProperty("计费属性编码")
@Excel(name = "计费属性编码") @Excel(name = "计费属性编码")
@@ -13,21 +13,21 @@ spring:
cloud: cloud:
nacos: nacos:
discovery: discovery:
server-addr: 127.0.0.1:8848 # server-addr: 127.0.0.1:8848
# server-addr: 10.33.0.129:6010 server-addr: 10.33.0.129:6010
# 线上测试环境配置 容器名+端口号 # 线上测试环境配置 容器名+端口号
# server-addr: 10.102.192.5:6848 # server-addr: 10.102.192.5:6848
username: nacos # username: nacos
password: manhuoda@2023 # password: manhuoda@2023
#线上正式环境 #线上正式环境
# server-addr: 10.102.192.105:6848 # server-addr: 10.102.192.105:6848
config: config:
# server-addr: 127.0.0.1:8848 # server-addr: 127.0.0.1:8848
# server-addr: 10.33.0.129:6010 server-addr: 10.33.0.129:6010
# 线上测试环境配置 容器名+端口号 # 线上测试环境配置 容器名+端口号
# server-addr: 10.102.192.5:6848 # server-addr: 10.102.192.5:6848
username: nacos # username: nacos
password: manhuoda@2023 # password: manhuoda@2023
#线上正式环境 #线上正式环境
# server-addr: 10.102.192.105:6848 # server-addr: 10.102.192.105:6848
group: DEFAULT_GROUP # 默认分组就是DEFAULT_GROUP,如果使用默认分组可以不配置 group: DEFAULT_GROUP # 默认分组就是DEFAULT_GROUP,如果使用默认分组可以不配置
+2 -2
View File
@@ -1,5 +1,5 @@
# 基础镜像 # 基础镜像
FROM kdvolder/jdk8 FROM arm64v8/openjdk:8
# author # author
MAINTAINER manhuoda MAINTAINER manhuoda
#指定东八区时区 #指定东八区时区
@@ -10,7 +10,7 @@ ENV JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF-8"
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp # 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp VOLUME /tmp
#将当前jar 复制到容器根目录下 #将当前jar 复制到容器根目录下
ADD mhd_bms.jar mhd_bms.jar ADD target/mhd_bms.jar mhd_bms.jar
#暴露容器端口 Docker镜像告知Docker宿主机应用监听了端口 #暴露容器端口 Docker镜像告知Docker宿主机应用监听了端口
EXPOSE 8019 EXPOSE 8019
# 运行jar包 # 运行jar包
@@ -144,8 +144,11 @@ public class CostCalculationApplicationService {
throw new ServiceException("单据类型未找到"); throw new ServiceException("单据类型未找到");
} }
//遍历费用科目取出对应配置的费用科目项 //遍历费用科目取出对应配置的费用科目项
if (costCalculationDTO.getTopOrganizationId() == null) {
throw new ServiceException("组织信息不能为空,无法查询费用科目");
}
AjaxResult expenseAccountAjax = systemServiceFeign.getSubInfoByCode2(costCalculationDTO.getSubjectCode(), costCalculationDTO.getTopOrganizationId()); AjaxResult expenseAccountAjax = systemServiceFeign.getSubInfoByCode2(costCalculationDTO.getSubjectCode(), costCalculationDTO.getTopOrganizationId());
if(!"200".equals(String.valueOf(ajaxResult.get("code")))) { if (!"200".equals(String.valueOf(expenseAccountAjax.get("code")))) {
throw new ServiceException("费用科目不存在或已被删除"); throw new ServiceException("费用科目不存在或已被删除");
} }
ExpenseAccountPO expenseAccountPO = JSON.parseObject(JSONObject.toJSONString(expenseAccountAjax.get("data")), ExpenseAccountPO.class); ExpenseAccountPO expenseAccountPO = JSON.parseObject(JSONObject.toJSONString(expenseAccountAjax.get("data")), ExpenseAccountPO.class);
@@ -166,7 +169,7 @@ public class CostCalculationApplicationService {
taskFlowRecordsDO.setSecondSubjectName(expenseAccountPO.getSubjectName()); taskFlowRecordsDO.setSecondSubjectName(expenseAccountPO.getSubjectName());
} }
if(null == contractManageDetailPO){ if(null == contractManageDetailPO){
throw new ServiceException("合同中不包含该费用科目的计费策略,请查后重试"); throw new ServiceException("合同中不包含该费用科目的计费策略,请查后重试");
} }
//根据计费策略查询计费规则信息 //根据计费策略查询计费规则信息
BillingRulesPO billingRulesPO = billingRulesDomainService.getInfo(contractManageDetailPO.getAccountingStrategyId()); BillingRulesPO billingRulesPO = billingRulesDomainService.getInfo(contractManageDetailPO.getAccountingStrategyId());
@@ -24,6 +24,7 @@ import javax.annotation.Resource;
import com.mhd.common.core.web.controller.BaseController; import com.mhd.common.core.web.controller.BaseController;
import com.mhd.common.core.web.domain.AjaxResult; import com.mhd.common.core.web.domain.AjaxResult;
import com.mhd.common.core.web.page.TableDataInfo; import com.mhd.common.core.web.page.TableDataInfo;
import com.mhd.common.core.exception.ServiceException;
/** /**
* 业务单据Api * 业务单据Api
@@ -70,8 +71,10 @@ public class BusinessDocumentApi extends BaseController{
}else { }else {
return toAjax(businessDocumentApplicationService.insert(businessDocumentDO)); return toAjax(businessDocumentApplicationService.insert(businessDocumentDO));
} }
} catch (ServiceException e) {
return AjaxResult.error(e.getMessage());
} catch (Exception e){ } catch (Exception e){
return AjaxResult.error("保存业务单据失败" +e.getMessage()); return AjaxResult.error("保存业务单据失败" + e.getMessage());
} }
} }
+16 -8
View File
@@ -16,18 +16,26 @@ spring:
cloud: cloud:
nacos: nacos:
discovery: discovery:
server-addr: 127.0.0.1:8848 # server-addr: 127.0.0.1:8848
server-addr: 10.33.0.129:6010
# 线上测试环境配置 容器名+端口号
# server-addr: 10.102.192.5:6848
# username: nacos
# password: manhuoda@2023
#线上正式环境
# server-addr: 10.102.192.105:6848
config: config:
# 配置中心地址 # server-addr: 127.0.0.1:8848
server-addr: 127.0.0.1:8848 server-addr: 10.33.0.129:6010
# 锁定server端的配置文件(读取它的配置项) # 线上测试环境配置 容器名+端口号
namespace: # 命名空间id # server-addr: 10.102.192.5:6848
# username: nacos
# password: manhuoda@2023
#线上正式环境
# server-addr: 10.102.192.105:6848
group: DEFAULT_GROUP # 默认分组就是DEFAULT_GROUP,如果使用默认分组可以不配置 group: DEFAULT_GROUP # 默认分组就是DEFAULT_GROUP,如果使用默认分组可以不配置
file-extension: yml #默认properties file-extension: yml #默认properties
# 开启nacos自动刷新,如果这个配置没有或者为false会导致配置不能自动刷新 # 开启nacos自动刷新,如果这个配置没有或者为false会导致配置不能自动刷新
# 允许nacos服务端向本地同步配置 # 允许nacos服务端向本地同步配置
enable-remote-sync-config: true enable-remote-sync-config: true
refresh-enabled: true refresh-enabled: true
@@ -502,7 +502,7 @@ public class ReconciliationImpl extends ServiceImpl<ReconciliationMapper, Reconc
BigDecimal tax_de=tmsOrder.getDeliveryFreight().multiply(tmsOrder.getTaxRate().divide(BigDecimal.valueOf(100))).setScale(2,BigDecimal.ROUND_HALF_UP); BigDecimal tax_de=tmsOrder.getDeliveryFreight().multiply(tmsOrder.getTaxRate().divide(BigDecimal.valueOf(100))).setScale(2,BigDecimal.ROUND_HALF_UP);
BigDecimal notax_de=tmsOrder.getDeliveryFreight().subtract(tax_de); BigDecimal notax_de=tmsOrder.getDeliveryFreight().subtract(tax_de);
item.setNotax_de(String.valueOf(notax_de)); item.setNotax_de(String.valueOf(notax_de));
item.setLocal_tax_de(String.valueOf(notax_de)); item.setLocal_tax_de(String.valueOf(tax_de));
item.setTax_de(String.valueOf(tax_de)); item.setTax_de(String.valueOf(tax_de));
item.setPrice(String.valueOf(tmsOrder.getDeliveryFreight())); item.setPrice(String.valueOf(tmsOrder.getDeliveryFreight()));
item.setTaxprice(String.valueOf(tmsOrder.getDeliveryFreight())); item.setTaxprice(String.valueOf(tmsOrder.getDeliveryFreight()));
@@ -657,7 +657,9 @@ public class ReconciliationImpl extends ServiceImpl<ReconciliationMapper, Reconc
makeQuery.setInnerNumber(invoiceId); makeQuery.setInnerNumber(invoiceId);
R<List<TmsMakeOutInvoice>> makeList=wlhyServiceFeign.selectMakeOutInvoiceListByReconciliation(makeQuery); R<List<TmsMakeOutInvoice>> makeList=wlhyServiceFeign.selectMakeOutInvoiceListByReconciliation(makeQuery);
if (makeList.getCode()==200){ if (makeList.getCode()==200){
int count = 0;
for (TmsMakeOutInvoice make : makeList.getData()) { for (TmsMakeOutInvoice make : makeList.getData()) {
count++;
List<Ysitem> ysitemList=new ArrayList<Ysitem>(); List<Ysitem> ysitemList=new ArrayList<Ysitem>();
ReconciliationDTO reconciliationDTO=new ReconciliationDTO(); ReconciliationDTO reconciliationDTO=new ReconciliationDTO();
reconciliationDTO.setInnerNumber(reconciliation.getInnerNumber()); reconciliationDTO.setInnerNumber(reconciliation.getInnerNumber());
@@ -691,7 +693,7 @@ public class ReconciliationImpl extends ServiceImpl<ReconciliationMapper, Reconc
String salesmanId = order.getSalesmanId(); String salesmanId = order.getSalesmanId();
String documentPreparerNcCode = reconciliationMapper.getDocumentPreparerNcCode(salesmanId); String documentPreparerNcCode = reconciliationMapper.getDocumentPreparerNcCode(salesmanId);
makerCodeNc= documentPreparerNcCode; makerCodeNc= documentPreparerNcCode;
String settlementCurrencyNcCode = reconciliationMapper.getSettlementCurrencyNcCode(settlementCurrency); String settlementCurrencyNcCode = settlementCurrency;
String invoiceNumber=make.getInvoiceNumber(); String invoiceNumber=make.getInvoiceNumber();
R<List<TmsMakeOutInvoiceItem>> itemR = wlhyServiceFeign.selectMakeOutInvoiceItemList(make); R<List<TmsMakeOutInvoiceItem>> itemR = wlhyServiceFeign.selectMakeOutInvoiceItemList(make);
if (itemR.getCode()==200) { if (itemR.getCode()==200) {
@@ -728,7 +730,7 @@ public class ReconciliationImpl extends ServiceImpl<ReconciliationMapper, Reconc
BigDecimal tax_de=item1.getTaxAmount(); BigDecimal tax_de=item1.getTaxAmount();
BigDecimal notax_de=item1.getTaxFreeFee(); BigDecimal notax_de=item1.getTaxFreeFee();
item.setNotax_de(String.valueOf(notax_de)); item.setNotax_de(String.valueOf(notax_de));
item.setLocal_tax_de(String.valueOf(notax_de)); item.setLocal_tax_de(String.valueOf(tax_de));
item.setTax_de(String.valueOf(tax_de)); item.setTax_de(String.valueOf(tax_de));
item.setPrice(String.valueOf(item1.getInvoiceValue())); item.setPrice(String.valueOf(item1.getInvoiceValue()));
item.setTaxprice(String.valueOf(item1.getInvoiceValue())); item.setTaxprice(String.valueOf(item1.getInvoiceValue()));
@@ -768,7 +770,7 @@ public class ReconciliationImpl extends ServiceImpl<ReconciliationMapper, Reconc
billhead.setDef29(reconciliation.getInnerNumber()); billhead.setDef29(reconciliation.getInnerNumber());
billhead.setBodys(bodys); billhead.setBodys(bodys);
Ysbill bill=new Ysbill(); Ysbill bill=new Ysbill();
bill.setId("ys"+String.valueOf(reconciliation.getReconciliationId())); bill.setId("ys"+String.valueOf(reconciliation.getReconciliationId())+"_"+count);
bill.setBillhead(billhead); bill.setBillhead(billhead);
Ysufinterface ufinterface=new Ysufinterface(); Ysufinterface ufinterface=new Ysufinterface();
ufinterface.setAccount("NKNC"); ufinterface.setAccount("NKNC");
@@ -1074,7 +1076,7 @@ public class ReconciliationImpl extends ServiceImpl<ReconciliationMapper, Reconc
public boolean synchronousNcSK_TY(String businessDocumentDetaliId) { public boolean synchronousNcSK_TY(String businessDocumentDetaliId) {
Reconciliation reconciliation=reconciliationMapper.selectById(businessDocumentDetaliId); Reconciliation reconciliation=reconciliationMapper.selectById(businessDocumentDetaliId);
if(reconciliation.getSynchronousStatus()==1){ if(reconciliation.getSkSynchronousStatus()==1){
throw new ServiceException("该记录已同步,不需要再次同步"); throw new ServiceException("该记录已同步,不需要再次同步");
} }
try { try {
@@ -1088,7 +1090,9 @@ public class ReconciliationImpl extends ServiceImpl<ReconciliationMapper, Reconc
makeQuery.setInnerNumber(invoiceId); makeQuery.setInnerNumber(invoiceId);
R<List<TmsMakeOutInvoice>> makeList=wlhyServiceFeign.selectMakeOutInvoiceListByReconciliation(makeQuery); R<List<TmsMakeOutInvoice>> makeList=wlhyServiceFeign.selectMakeOutInvoiceListByReconciliation(makeQuery);
if (makeList.getCode()==200){ if (makeList.getCode()==200){
int count= 0;
for (TmsMakeOutInvoice make : makeList.getData()) { for (TmsMakeOutInvoice make : makeList.getData()) {
count++;
List<SKitem> ysitemList=new ArrayList<SKitem>(); List<SKitem> ysitemList=new ArrayList<SKitem>();
ReconciliationDTO reconciliationDTO=new ReconciliationDTO(); ReconciliationDTO reconciliationDTO=new ReconciliationDTO();
reconciliationDTO.setInnerNumber(reconciliation.getInnerNumber()); reconciliationDTO.setInnerNumber(reconciliation.getInnerNumber());
@@ -1129,7 +1133,7 @@ public class ReconciliationImpl extends ServiceImpl<ReconciliationMapper, Reconc
String customerCodeNc = reconciliationMapper.getCustomerCodeNc(actualInvoiceCustomerId); String customerCodeNc = reconciliationMapper.getCustomerCodeNc(actualInvoiceCustomerId);
String documentPreparerNcCode = reconciliationMapper.getDocumentPreparerNcCode(salesmanId); String documentPreparerNcCode = reconciliationMapper.getDocumentPreparerNcCode(salesmanId);
String settlementCurrency=order.getSettlementCurrency(); String settlementCurrency=order.getSettlementCurrency();
String settlementCurrencyNcCode = reconciliationMapper.getSettlementCurrencyNcCode(settlementCurrency); String settlementCurrencyNcCode = settlementCurrency;
makerCodeNc=documentPreparerNcCode; makerCodeNc=documentPreparerNcCode;
SKitem item=new SKitem(); SKitem item=new SKitem();
item.setSo_deptid("NG0408"); item.setSo_deptid("NG0408");
@@ -1173,7 +1177,7 @@ public class ReconciliationImpl extends ServiceImpl<ReconciliationMapper, Reconc
billhead.setDef29(reconciliation.getInnerNumber()); billhead.setDef29(reconciliation.getInnerNumber());
billhead.setBodys(bodys); billhead.setBodys(bodys);
SKbill bill=new SKbill(); SKbill bill=new SKbill();
bill.setId("sk"+String.valueOf(reconciliation.getReconciliationId())); bill.setId("sk"+String.valueOf(reconciliation.getReconciliationId())+"_"+count);
bill.setBillhead(billhead); bill.setBillhead(billhead);
SKufinterface ufinterface=new SKufinterface(); SKufinterface ufinterface=new SKufinterface();
ufinterface.setAccount("NKNC"); ufinterface.setAccount("NKNC");
@@ -225,11 +225,11 @@ public class ReconciliationDO extends BaseVOEntity{
@ApiModelProperty("创建时间开始") @ApiModelProperty("创建时间开始")
@JsonFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "创建时间开始", width = 30, dateFormat = "yyyy-MM-dd") @Excel(name = "创建时间开始", width = 30, dateFormat = "yyyy-MM-dd")
private Date createTimeStart; private String createTimeStart;
@ApiModelProperty("创建时间结束") @ApiModelProperty("创建时间结束")
@JsonFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "创建时间结束", width = 30, dateFormat = "yyyy-MM-dd") @Excel(name = "创建时间结束", width = 30, dateFormat = "yyyy-MM-dd")
private Date createTimeEnd; private String createTimeEnd;
@ApiModelProperty("审核时间开始") @ApiModelProperty("审核时间开始")
@JsonFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "审核时间开始", width = 30, dateFormat = "yyyy-MM-dd") @Excel(name = "审核时间开始", width = 30, dateFormat = "yyyy-MM-dd")
@@ -141,6 +141,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="createByName != null and createByName != ''"> <if test="createByName != null and createByName != ''">
and a.create_by_name like concat('%', #{createByName}, '%') and a.create_by_name like concat('%', #{createByName}, '%')
</if> </if>
<if test="applyNumber != null and applyNumber != ''">
and a.APPLY_NUMBER like concat('%', #{applyNumber}, '%')
</if>
<if test="updateByName != null and updateByName != ''"> <if test="updateByName != null and updateByName != ''">
and a.update_by_name like concat('%', #{updateByName}, '%') and a.update_by_name like concat('%', #{updateByName}, '%')
</if> </if>
@@ -166,7 +169,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
AND (date_format(a.collection_time,'%Y-%m-%d') >= date_format(#{collectionTimeStart},'%Y-%m-%d') AND (date_format(a.collection_time,'%Y-%m-%d') >= date_format(#{collectionTimeStart},'%Y-%m-%d')
and date_format(a.collection_time,'%Y-%m-%d') <![CDATA[<=]]> date_format(#{collectionTimeEnd},'%Y-%m-%d')) and date_format(a.collection_time,'%Y-%m-%d') <![CDATA[<=]]> date_format(#{collectionTimeEnd},'%Y-%m-%d'))
</if> </if>
<if test="createTimeStart != null and createTimeEnd != null"> <if test="createTimeStart != null and createTimeEnd != null and createTimeStart != '' and createTimeEnd != ''">
AND (date_format(a.create_time,'%Y-%m-%d') >= date_format(#{createTimeStart},'%Y-%m-%d') AND (date_format(a.create_time,'%Y-%m-%d') >= date_format(#{createTimeStart},'%Y-%m-%d')
and date_format(a.create_time,'%Y-%m-%d') <![CDATA[<=]]> date_format(#{createTimeEnd},'%Y-%m-%d')) and date_format(a.create_time,'%Y-%m-%d') <![CDATA[<=]]> date_format(#{createTimeEnd},'%Y-%m-%d'))
</if> </if>
+1 -1
View File
@@ -10,7 +10,7 @@ ENV JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF-8"
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp # 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp VOLUME /tmp
#将当前mhd_special_logistics.jar 复制到容器根目录下 #将当前mhd_special_logistics.jar 复制到容器根目录下
ADD mhd_wms.jar mhd_wms.jar ADD target/mhd_wms.jar mhd_wms.jar
#暴露容器端口 Docker镜像告知Docker宿主机应用监听了端口 #暴露容器端口 Docker镜像告知Docker宿主机应用监听了端口
EXPOSE 8017 EXPOSE 8017
# 运行jar包 # 运行jar包
@@ -144,7 +144,17 @@ public class StockOutOrderApplicationService {
} }
} }
} }
return stockOutOrderDomainService.queryList(stockOutOrderDO); List<StockOutOrderPO> stockOutOrderPOS = stockOutOrderDomainService.queryList(stockOutOrderDO);
for (StockOutOrderPO stockOutOrderPO : stockOutOrderPOS) {
StockOutOrderPO stockOutOrderPO1 = stockOutOrderDomainService.getInfoChildren(stockOutOrderPO.getOutOrderId());
List<OutMaterialDetailPO> materialDetailList = stockOutOrderPO1.getMaterialDetailList();
BigDecimal reduce = materialDetailList.stream().map(OutMaterialDetailPO::getOutboundQuantity).reduce(BigDecimal.ZERO, BigDecimal::add);
stockOutOrderPO.setTotalOutboundQuantity(reduce);
stockOutOrderPO.setAllocationQuantity(stockOutOrderPO1.getAllocationQuantity());
stockOutOrderPO.setPickingQuantity(stockOutOrderPO1.getPickingQuantity());
stockOutOrderPO.setCheckQuantity(stockOutOrderPO1.getCheckQuantity());
}
return stockOutOrderPOS;
} }
@@ -252,28 +252,18 @@ public class StockReceiptOrderApplicationService {
// 5. 清空质检相关字段如果是否质检为否 // 5. 清空质检相关字段如果是否质检为否
clearQualityInspectionFieldsRecursively(receiptMaterialDetailPOList); clearQualityInspectionFieldsRecursively(receiptMaterialDetailPOList);
// 6. 汇总第一层明细的净重毛重体积面积 // 6. 汇总明细的净重毛重体积面积递归包含主项+子项
BigDecimal totalNetWeight = BigDecimal.ZERO; BigDecimal totalNetWeight = BigDecimal.ZERO;
BigDecimal totalGrossWeight = BigDecimal.ZERO; BigDecimal totalGrossWeight = BigDecimal.ZERO;
BigDecimal totalVolume = BigDecimal.ZERO; BigDecimal totalVolume = BigDecimal.ZERO;
BigDecimal totalArea = BigDecimal.ZERO; BigDecimal totalArea = BigDecimal.ZERO;
if (!CollectionUtils.isEmpty(receiptMaterialDetailPOList)) { if (!CollectionUtils.isEmpty(receiptMaterialDetailPOList)) {
// receiptMaterialDetailPOList 已经是树形结构第一层明细的 level 应该是 1 null
for (ReceiptMaterialDetailPO detail : receiptMaterialDetailPOList) { for (ReceiptMaterialDetailPO detail : receiptMaterialDetailPOList) {
// 只汇总第一层明细level=1或没有level字段
if (detail.getLevel() == null || detail.getLevel() == 1) { if (detail.getLevel() == null || detail.getLevel() == 1) {
if (detail.getTotalNetWeight() != null) { totalNetWeight = totalNetWeight.add(sumDetailRecursively(detail, ReceiptMaterialDetailPO::getTotalNetWeight));
totalNetWeight = totalNetWeight.add(detail.getTotalNetWeight()); totalGrossWeight = totalGrossWeight.add(sumDetailRecursively(detail, ReceiptMaterialDetailPO::getTotalGrossWeight));
} totalVolume = totalVolume.add(sumDetailRecursively(detail, ReceiptMaterialDetailPO::getTotalVolume));
if (detail.getTotalGrossWeight() != null) { totalArea = totalArea.add(sumDetailRecursively(detail, ReceiptMaterialDetailPO::getTotalArea));
totalGrossWeight = totalGrossWeight.add(detail.getTotalGrossWeight());
}
if (detail.getTotalVolume() != null) {
totalVolume = totalVolume.add(detail.getTotalVolume());
}
if (detail.getTotalArea() != null) {
totalArea = totalArea.add(detail.getTotalArea());
}
} }
} }
} }
@@ -360,6 +350,80 @@ public class StockReceiptOrderApplicationService {
return materialMoreDetailPOList; return materialMoreDetailPOList;
} }
/**
* 递归汇总明细及其子项的某字段值用于汇总净重毛重体积面积
*/
private BigDecimal sumDetailRecursively(ReceiptMaterialDetailPO detail, Function<ReceiptMaterialDetailPO, BigDecimal> getter) {
BigDecimal sum = BigDecimal.ZERO;
if (detail == null) {
return sum;
}
BigDecimal v = getter.apply(detail);
if (v != null) {
sum = sum.add(v);
}
List<ReceiptMaterialDetailPO> children = detail.getChildren();
if (!CollectionUtils.isEmpty(children)) {
for (ReceiptMaterialDetailPO child : children) {
sum = sum.add(sumDetailRecursively(child, getter));
}
}
return sum;
}
/**
* 扁平化明细将子项收货数据合并到父级并清空 children使每条明细只显示一行PDA PC 端收货一致
* @param receiptMaterialDetailPOList 物料明细列表树形level 1 父级含 children
*/
private void flattenMaterialDetailList(List<ReceiptMaterialDetailPO> receiptMaterialDetailPOList) {
if (CollectionUtils.isEmpty(receiptMaterialDetailPOList)) {
return;
}
for (ReceiptMaterialDetailPO parent : receiptMaterialDetailPOList) {
List<ReceiptMaterialDetailPO> children = parent.getChildren();
if (CollectionUtils.isEmpty(children)) {
continue;
}
// 将子项收货数据合并到父级
BigDecimal receiptQuantitySum = parent.getReceiptQuantity() != null ? parent.getReceiptQuantity() : BigDecimal.ZERO;
BigDecimal totalNetWeightSum = parent.getTotalNetWeight() != null ? parent.getTotalNetWeight() : BigDecimal.ZERO;
BigDecimal totalGrossWeightSum = parent.getTotalGrossWeight() != null ? parent.getTotalGrossWeight() : BigDecimal.ZERO;
BigDecimal totalVolumeSum = parent.getTotalVolume() != null ? parent.getTotalVolume() : BigDecimal.ZERO;
BigDecimal totalAreaSum = parent.getTotalArea() != null ? parent.getTotalArea() : BigDecimal.ZERO;
Integer maxReceiptStatus = parent.getReceiptStatus();
for (ReceiptMaterialDetailPO child : children) {
if (child.getReceiptQuantity() != null) {
receiptQuantitySum = receiptQuantitySum.add(child.getReceiptQuantity());
}
if (child.getTotalNetWeight() != null) {
totalNetWeightSum = totalNetWeightSum.add(child.getTotalNetWeight());
}
if (child.getTotalGrossWeight() != null) {
totalGrossWeightSum = totalGrossWeightSum.add(child.getTotalGrossWeight());
}
if (child.getTotalVolume() != null) {
totalVolumeSum = totalVolumeSum.add(child.getTotalVolume());
}
if (child.getTotalArea() != null) {
totalAreaSum = totalAreaSum.add(child.getTotalArea());
}
if (child.getReceiptStatus() != null && (maxReceiptStatus == null || child.getReceiptStatus() > maxReceiptStatus)) {
maxReceiptStatus = child.getReceiptStatus();
}
}
parent.setReceiptQuantity(receiptQuantitySum);
parent.setTotalNetWeight(totalNetWeightSum);
parent.setTotalGrossWeight(totalGrossWeightSum);
parent.setTotalVolume(totalVolumeSum);
parent.setTotalArea(totalAreaSum);
if (maxReceiptStatus != null) {
parent.setReceiptStatus(maxReceiptStatus);
}
// 清空子项使前端只显示父级一行
parent.setChildren(new ArrayList<>());
}
}
/** /**
* 递归为物料明细设置更多属性 * 递归为物料明细设置更多属性
* @param receiptMaterialDetailPOList 物料明细列表 * @param receiptMaterialDetailPOList 物料明细列表
@@ -469,7 +533,7 @@ public class StockReceiptOrderApplicationService {
} }
/** /**
* 递归填充明细行的物料单位信息如果单位信息为空 * 递归填充明细行的物料单位信息包装规格如果为空
* @param receiptMaterialDetailPOList 收货物料明细列表 * @param receiptMaterialDetailPOList 收货物料明细列表
* @param materialBaseInfoMap 物料基础信息Mapkey: materialBaseInfoId, value: MaterialBaseInfoPO * @param materialBaseInfoMap 物料基础信息Mapkey: materialBaseInfoId, value: MaterialBaseInfoPO
* @param packDetailMap 包装规格明细Mapkey: materialBaseInfoId, value: PackDetailFeignPO单位代码为EA * @param packDetailMap 包装规格明细Mapkey: materialBaseInfoId, value: PackDetailFeignPO单位代码为EA
@@ -485,6 +549,19 @@ public class StockReceiptOrderApplicationService {
Long materialBaseInfoId = receiptMaterialDetailPO.getMaterialBaseInfoId(); Long materialBaseInfoId = receiptMaterialDetailPO.getMaterialBaseInfoId();
if (materialBaseInfoId != null) { if (materialBaseInfoId != null) {
MaterialBaseInfoPO materialBaseInfoPO = materialBaseInfoMap.get(materialBaseInfoId);
// 填充包装规格packCodepackNamepackId为空时从物料基础信息获取
if (materialBaseInfoPO != null) {
if (receiptMaterialDetailPO.getPackId() == null && materialBaseInfoPO.getPackId() != null) {
receiptMaterialDetailPO.setPackId(materialBaseInfoPO.getPackId());
}
if (StringUtils.isBlank(receiptMaterialDetailPO.getPackCode()) && StringUtils.isNotBlank(materialBaseInfoPO.getPackCode())) {
receiptMaterialDetailPO.setPackCode(materialBaseInfoPO.getPackCode());
}
if (StringUtils.isBlank(receiptMaterialDetailPO.getPackName()) && StringUtils.isNotBlank(materialBaseInfoPO.getPackName())) {
receiptMaterialDetailPO.setPackName(materialBaseInfoPO.getPackName());
}
}
// 只有当单位信息为空时才填充 // 只有当单位信息为空时才填充
if (StringUtils.isBlank(receiptMaterialDetailPO.getUnitCode()) if (StringUtils.isBlank(receiptMaterialDetailPO.getUnitCode())
|| StringUtils.isBlank(receiptMaterialDetailPO.getUnitName())) { || StringUtils.isBlank(receiptMaterialDetailPO.getUnitName())) {
@@ -810,36 +887,53 @@ public class StockReceiptOrderApplicationService {
* @return Boolean * @return Boolean
*/ */
public Boolean receivingGoodsByApp(StockReceiptOrderDO stockReceiptOrderDO){ public Boolean receivingGoodsByApp(StockReceiptOrderDO stockReceiptOrderDO){
List<ReceiptMaterialDetailDO> receiptMaterialDetailDOList = stockReceiptOrderDO.getMaterialDetailList(); // PDA 收货回传时将第一项作为主项其余作为其子项
receiptMaterialDetailDOList.forEach(receiptMaterialDetailDO -> { ensureFirstItemAsParent(stockReceiptOrderDO);
List<ReceiptMaterialDetailDO> receiptMaterialDetailDOChildrenList1 = receiptMaterialDetailDO.getChildren();
if (receiptMaterialDetailDOChildrenList1 != null && receiptMaterialDetailDOChildrenList1.size() > 0) {
//ReceiptMaterialDetailDO receiptMaterialDetailDOChildren = receiptMaterialDetailDOChildrenList1.stream().filter(p -> 1 == p.getLevel()).collect(Collectors.toList()).get(0);
ReceiptMaterialDetailDO receiptMaterialDetailDOChildren =
receiptMaterialDetailDOChildrenList1.stream()
.filter(p -> 1 == p.getLevel())
.findFirst() // 返回 Optional<ReceiptMaterialDetailDO>
.orElse(null); // 没有符合条件的元素时返回null也可以自定义默认值
if (receiptMaterialDetailDOChildren != null) {
receiptMaterialDetailDO.setMaterialDetailId(receiptMaterialDetailDOChildren.getMaterialDetailId());
receiptMaterialDetailDO.setReceiptQuantity(receiptMaterialDetailDOChildren.getReceiptQuantity());
receiptMaterialDetailDO.setMaterialStatusCode(receiptMaterialDetailDOChildren.getMaterialStatusCode());
receiptMaterialDetailDO.setBatchNumber(receiptMaterialDetailDOChildren.getBatchNumber());
receiptMaterialDetailDO.setContainerId(receiptMaterialDetailDOChildren.getContainerId());
receiptMaterialDetailDO.setLevel(receiptMaterialDetailDOChildren.getLevel());
receiptMaterialDetailDO.setMaterialMoreDetailList(receiptMaterialDetailDOChildren.getMaterialMoreDetailList());
receiptMaterialDetailDO.setMaterialDetailSerialNumberList(receiptMaterialDetailDOChildren.getMaterialDetailSerialNumberList());
}
//只留二级
List<ReceiptMaterialDetailDO> receiptMaterialDetailDOChildrenList2 = receiptMaterialDetailDOChildrenList1.stream().filter(p -> 2 == p.getLevel()).collect(Collectors.toList());
receiptMaterialDetailDO.setChildren(receiptMaterialDetailDOChildrenList2);
}
});
//收货装配参数
StockReceiptOrderDO assembleStockReceiptOrderDO = assembleParamByReceipt(stockReceiptOrderDO); StockReceiptOrderDO assembleStockReceiptOrderDO = assembleParamByReceipt(stockReceiptOrderDO);
return stockReceiptOrderDomainService.receivingGoods(assembleStockReceiptOrderDO); return stockReceiptOrderDomainService.receivingGoods(assembleStockReceiptOrderDO);
} }
/**
* PDA 收货回传时 materialDetailList 的第一项作为主项level 1其余项作为其子项level 2
*/
private void ensureFirstItemAsParent(StockReceiptOrderDO stockReceiptOrderDO) {
List<ReceiptMaterialDetailDO> list = stockReceiptOrderDO.getMaterialDetailList();
if (CollectionUtils.isEmpty(list) || list.size() <= 1) {
return;
}
// 若第一项已有子项说明已是主项子项结构不处理
if (!CollectionUtils.isEmpty(list.get(0).getChildren())) {
return;
}
StockReceiptOrderPO stockReceiptOrderPO = stockReceiptOrderDomainService.getInfo(stockReceiptOrderDO.getReceiptOrderId());
if (stockReceiptOrderPO == null) {
return;
}
ReceiptMaterialDetailDO receiptMaterialDetailDOByQuery = new ReceiptMaterialDetailDO();
receiptMaterialDetailDOByQuery.setReceiptOrderNumber(stockReceiptOrderPO.getReceiptOrderNumber());
List<ReceiptMaterialDetailPO> receiptMaterialDetailPODbList = receiptMaterialDetailDomainService.queryList(receiptMaterialDetailDOByQuery);
Map<Long, ReceiptMaterialDetailPO> dbMap = receiptMaterialDetailPODbList.stream()
.collect(Collectors.toMap(ReceiptMaterialDetailPO::getMaterialDetailId, Function.identity()));
ReceiptMaterialDetailDO first = list.get(0);
ReceiptMaterialDetailPO firstPO = dbMap.get(first.getMaterialDetailId());
if (firstPO == null || firstPO.getUniqueId() == null) {
return;
}
Long parentUniqueId = firstPO.getUniqueId();
List<ReceiptMaterialDetailDO> children = new ArrayList<>();
for (int i = 1; i < list.size(); i++) {
ReceiptMaterialDetailDO child = list.get(i);
child.setLevel(2);
child.setParentUniqueId(parentUniqueId);
children.add(child);
}
first.setLevel(1);
first.setChildren(children);
List<ReceiptMaterialDetailDO> newList = new ArrayList<>();
newList.add(first);
stockReceiptOrderDO.setMaterialDetailList(newList);
}
/** /**
* @description 完成收货 * @description 完成收货
* @author ZhouGY * @author ZhouGY
@@ -209,6 +209,10 @@ public class DifferentManageImpl extends ServiceImpl<DifferentManageMapper, Diff
inventoryAdjustmentRecord.setGrossWeight(materialInventory1.getGrossWeight() == null ? BigDecimal.ZERO : materialInventory1.getGrossWeight()); inventoryAdjustmentRecord.setGrossWeight(materialInventory1.getGrossWeight() == null ? BigDecimal.ZERO : materialInventory1.getGrossWeight());
inventoryAdjustmentRecord.setVolume(materialInventory1.getVolume() == null ? BigDecimal.ZERO : materialInventory1.getVolume()); inventoryAdjustmentRecord.setVolume(materialInventory1.getVolume() == null ? BigDecimal.ZERO : materialInventory1.getVolume());
inventoryAdjustmentRecord.setArea(materialInventory1.getArea() == null ? BigDecimal.ZERO : materialInventory1.getArea()); inventoryAdjustmentRecord.setArea(materialInventory1.getArea() == null ? BigDecimal.ZERO : materialInventory1.getArea());
inventoryAdjustmentRecord.setAdjustedNetWeight(materialInventory1.getNetWeight() == null ? BigDecimal.ZERO : materialInventory1.getNetWeight());
inventoryAdjustmentRecord.setAdjustedGrossWeight(materialInventory1.getGrossWeight() == null ? BigDecimal.ZERO : materialInventory1.getGrossWeight());
inventoryAdjustmentRecord.setAdjustedVolume(materialInventory1.getVolume() == null ? BigDecimal.ZERO : materialInventory1.getVolume());
inventoryAdjustmentRecord.setAdjustedArea(materialInventory1.getArea() == null ? BigDecimal.ZERO : materialInventory1.getArea());
inventoryAdjustmentRecord.setAdjustAction("差异过账"); inventoryAdjustmentRecord.setAdjustAction("差异过账");
inventoryAdjustmentRecord.setRelateNo(investigetionManageDetailDO.getInvestigationNumber()); inventoryAdjustmentRecord.setRelateNo(investigetionManageDetailDO.getInvestigationNumber());
inventoryAdjustmentRecord.setAdjustAfterStatusCode("he_ge"); inventoryAdjustmentRecord.setAdjustAfterStatusCode("he_ge");
@@ -216,7 +220,7 @@ public class DifferentManageImpl extends ServiceImpl<DifferentManageMapper, Diff
inventoryAdjustmentRecord.setAdjustAfterStatusName("合格"); inventoryAdjustmentRecord.setAdjustAfterStatusName("合格");
inventoryAdjustmentRecord.setAdjustBeforeStatusName("合格"); inventoryAdjustmentRecord.setAdjustBeforeStatusName("合格");
inventoryAdjustmentRecord.setMaterialBaseInfoId(investigetionManageDetailDO.getMaterialBaseInfoId()); inventoryAdjustmentRecord.setMaterialBaseInfoId(investigetionManageDetailDO.getMaterialBaseInfoId());
inventoryAdjustmentRecord.setMaterialCode(investigetionManageDetailDO.getBarCode()); inventoryAdjustmentRecord.setMaterialCode(investigetionManageDetailDO.getMaterialCode());
inventoryAdjustmentRecord.setMaterialName(investigetionManageDetailDO.getMaterialName()); inventoryAdjustmentRecord.setMaterialName(investigetionManageDetailDO.getMaterialName());
inventoryAdjustmentRecord.setBarCode(investigetionManageDetailDO.getBarCode()); inventoryAdjustmentRecord.setBarCode(investigetionManageDetailDO.getBarCode());
inventoryAdjustmentRecord.setMaterialBaseInfoId(investigetionManageDetailDO.getMaterialBaseInfoId()); inventoryAdjustmentRecord.setMaterialBaseInfoId(investigetionManageDetailDO.getMaterialBaseInfoId());
@@ -243,10 +247,10 @@ public class DifferentManageImpl extends ServiceImpl<DifferentManageMapper, Diff
UserPo userPo = loginUser.getUserPo(); UserPo userPo = loginUser.getUserPo();
if (userPo != null) inventoryAdjustmentRecord.setCreateByName(userPo.getUserName()); if (userPo != null) inventoryAdjustmentRecord.setCreateByName(userPo.getUserName());
inventoryAdjustmentRecord.setCreateTime(new Date()); inventoryAdjustmentRecord.setCreateTime(new Date());
// inventoryAdjustmentRecord.setAllocationAfterQuantity(); inventoryAdjustmentRecord.setAllocationAfterQuantity(materialInventory1.getAllocationQuantity() == null ? BigDecimal.ZERO : materialInventory1.getAllocationQuantity());
// inventoryAdjustmentRecord.setAllocationBeforeQuantity(); inventoryAdjustmentRecord.setAllocationBeforeQuantity(materialInventory1.getAllocationQuantity() == null ? BigDecimal.ZERO : materialInventory1.getAllocationQuantity());
// inventoryAdjustmentRecord.setFreezeBeforeQuantity(); inventoryAdjustmentRecord.setFreezeBeforeQuantity(materialInventory1.getFreezeQuantity() == null ? BigDecimal.ZERO : materialInventory1.getFreezeQuantity());
// inventoryAdjustmentRecord.setFreezeAfterQuantity(); inventoryAdjustmentRecord.setFreezeAfterQuantity(materialInventory1.getFreezeQuantity() == null ? BigDecimal.ZERO : materialInventory1.getFreezeQuantity());
inventoryAdjustmentRecord.setInventoryBeforeQuantity(investigetionManageDetailDO.getInventoryQuantity()); inventoryAdjustmentRecord.setInventoryBeforeQuantity(investigetionManageDetailDO.getInventoryQuantity());
inventoryAdjustmentRecord.setInventoryAfterQuantity(investigetionManageDetailDO.getInvestigationQuantity()); inventoryAdjustmentRecord.setInventoryAfterQuantity(investigetionManageDetailDO.getInvestigationQuantity());
inventoryAdjustmentRecordMapper.insert(inventoryAdjustmentRecord); inventoryAdjustmentRecordMapper.insert(inventoryAdjustmentRecord);
@@ -277,7 +277,7 @@ public class HandoverTaskOrderDomainService {
inventoryAdjustmentRecord.setAdjustAfterStatusCode("he_ge"); inventoryAdjustmentRecord.setAdjustAfterStatusCode("he_ge");
inventoryAdjustmentRecord.setAdjustBeforeStatusCode("he_ge"); inventoryAdjustmentRecord.setAdjustBeforeStatusCode("he_ge");
inventoryAdjustmentRecord.setAdjustAfterStatusName("合格"); inventoryAdjustmentRecord.setAdjustAfterStatusName("合格");
inventoryAdjustmentRecord.setAdjustBeforeStatusName("合格"); // inventoryAdjustmentRecord.setAdjustBeforeStatusName("合格");
inventoryAdjustmentRecord.setMaterialBaseInfoId(materialInventoryPO.getMaterialBaseInfoId()); inventoryAdjustmentRecord.setMaterialBaseInfoId(materialInventoryPO.getMaterialBaseInfoId());
inventoryAdjustmentRecord.setMaterialCode(outMaterialDetail.getMaterialNo()); inventoryAdjustmentRecord.setMaterialCode(outMaterialDetail.getMaterialNo());
inventoryAdjustmentRecord.setMaterialName(outMaterialDetail.getCommodityName()); inventoryAdjustmentRecord.setMaterialName(outMaterialDetail.getCommodityName());
@@ -311,15 +311,15 @@ public class HandoverTaskOrderDomainService {
inventoryAdjustmentRecord.setFreezeAfterQuantity(newFreezeQuantity); inventoryAdjustmentRecord.setFreezeAfterQuantity(newFreezeQuantity);
inventoryAdjustmentRecord.setInventoryBeforeQuantity(oldInventoryQuantity); inventoryAdjustmentRecord.setInventoryBeforeQuantity(oldInventoryQuantity);
inventoryAdjustmentRecord.setInventoryAfterQuantity(newInventoryQuantity); inventoryAdjustmentRecord.setInventoryAfterQuantity(newInventoryQuantity);
inventoryAdjustmentRecord.setNetWeight(materialInventoryPO.getNetWeight() == null ? BigDecimal.ZERO : materialInventoryPO.getNetWeight()); inventoryAdjustmentRecord.setNetWeight(outMaterialDetail.getTotalNetWeight() == null ? BigDecimal.ZERO : outMaterialDetail.getTotalNetWeight());
inventoryAdjustmentRecord.setGrossWeight(materialInventoryPO.getGrossWeight() == null ? BigDecimal.ZERO : materialInventoryPO.getGrossWeight()); inventoryAdjustmentRecord.setGrossWeight(outMaterialDetail.getTotalGrossWeight() == null ? BigDecimal.ZERO : outMaterialDetail.getTotalGrossWeight());
inventoryAdjustmentRecord.setVolume(materialInventoryPO.getVolume() == null ? BigDecimal.ZERO : materialInventoryPO.getVolume()); inventoryAdjustmentRecord.setVolume(outMaterialDetail.getTotalVolume() == null ? BigDecimal.ZERO : outMaterialDetail.getTotalVolume());
inventoryAdjustmentRecord.setArea(materialInventoryPO.getArea() == null ? BigDecimal.ZERO : materialInventoryPO.getArea()); inventoryAdjustmentRecord.setArea(outMaterialDetail.getTotalArea() == null ? BigDecimal.ZERO : outMaterialDetail.getTotalArea());
inventoryAdjustmentRecord.setAdjustedNetWeight(materialInventoryPO.getNetWeight().subtract(outMaterialDetail.getTotalNetWeight())); inventoryAdjustmentRecord.setAdjustedNetWeight(materialInventoryPO.getNetWeight());
inventoryAdjustmentRecord.setAdjustedGrossWeight(materialInventoryPO.getGrossWeight().subtract(outMaterialDetail.getTotalGrossWeight())); inventoryAdjustmentRecord.setAdjustedGrossWeight(materialInventoryPO.getGrossWeight());
inventoryAdjustmentRecord.setAdjustedVolume(materialInventoryPO.getVolume().subtract(outMaterialDetail.getTotalVolume()) ); inventoryAdjustmentRecord.setAdjustedVolume(materialInventoryPO.getVolume() );
inventoryAdjustmentRecord.setAdjustedArea(materialInventoryPO.getArea().subtract(outMaterialDetail.getTotalArea()) ); inventoryAdjustmentRecord.setAdjustedArea(materialInventoryPO.getArea() );
inventoryAdjustmentRecordMapper.insert(inventoryAdjustmentRecord); inventoryAdjustmentRecordMapper.insert(inventoryAdjustmentRecord);
} }
@@ -70,6 +70,9 @@ public class MaterialBarCodeDomainService {
if (CollectionUtil.isEmpty(materialBaseInfoDO.getMaterialBarCodeList())){ if (CollectionUtil.isEmpty(materialBaseInfoDO.getMaterialBarCodeList())){
return true; return true;
} }
materialBaseInfoDO.getMaterialBarCodeList().forEach(item -> {
item.setMaterialBaseInfoId(materialBaseInfoDO.getMaterialBaseInfoId());
});
return materialBarCodeService.batchInsertOrUpdate(materialBaseInfoDO.getMaterialBarCodeList()); return materialBarCodeService.batchInsertOrUpdate(materialBaseInfoDO.getMaterialBarCodeList());
} }
} }
@@ -245,6 +245,9 @@ public class ReceiptMaterialDetailImpl extends ServiceImpl<ReceiptMaterialDetail
List<InMaterialDetailSerialNumber> materialDetailSerialNumberList = new ArrayList<>(); List<InMaterialDetailSerialNumber> materialDetailSerialNumberList = new ArrayList<>();
for (ReceiptMaterialDetailDO receiptMaterialDetailDO : receiptMaterialDetailDOList){ for (ReceiptMaterialDetailDO receiptMaterialDetailDO : receiptMaterialDetailDOList){
List<MaterialMoreDetailDO> materialMoreDetailList1 = receiptMaterialDetailDO.getMaterialMoreDetailList(); List<MaterialMoreDetailDO> materialMoreDetailList1 = receiptMaterialDetailDO.getMaterialMoreDetailList();
if (CollectionUtils.isEmpty(materialMoreDetailList1)) {
materialMoreDetailList1 = new ArrayList<>();
}
for (MaterialMoreDetailDO materialMoreDetailDO : materialMoreDetailList1) { for (MaterialMoreDetailDO materialMoreDetailDO : materialMoreDetailList1) {
String batchLabels = materialMoreDetailDO.getBatchLabels(); String batchLabels = materialMoreDetailDO.getBatchLabels();
String attributeValue = materialMoreDetailDO.getAttributeValue(); String attributeValue = materialMoreDetailDO.getAttributeValue();
@@ -310,6 +313,10 @@ public class ReceiptMaterialDetailImpl extends ServiceImpl<ReceiptMaterialDetail
} }
// 自动生成批次号并校验唯一性包括子项 // 自动生成批次号并校验唯一性包括子项
generateAndValidateBatchNumber(receiptMaterialDetailDO, shipperId); generateAndValidateBatchNumber(receiptMaterialDetailDO, shipperId);
// materialMoreDetailList 为空时 PDA 未传 receiptMaterialDetailDO batch_numbermaterial_status_code 等字段构建确保更多属性能保存并回显
if (CollectionUtils.isEmpty(receiptMaterialDetailDO.getMaterialMoreDetailList())) {
receiptMaterialDetailDO.setMaterialMoreDetailList(buildMaterialMoreDetailFromReceiptFields(receiptMaterialDetailDO));
}
//更多属性 //更多属性
materialMoreDetailList.addAll(genMaterialMoreDetail(receiptMaterialDetailDO)); materialMoreDetailList.addAll(genMaterialMoreDetail(receiptMaterialDetailDO));
//序列号 //序列号
@@ -703,6 +710,78 @@ public class ReceiptMaterialDetailImpl extends ServiceImpl<ReceiptMaterialDetail
} }
/**
* PDA 未传 materialMoreDetailList receiptMaterialDetailDO batch_numberbatch_ref_nomaterial_status_code 等字段构建
* 确保更多属性能保存到 material_more_detail 表并正确回显
*/
private List<MaterialMoreDetailDO> buildMaterialMoreDetailFromReceiptFields(ReceiptMaterialDetailDO receiptMaterialDetailDO) {
List<MaterialMoreDetailDO> result = new ArrayList<>();
Long materialBaseInfoId = receiptMaterialDetailDO.getMaterialBaseInfoId();
if (materialBaseInfoId == null) {
return result;
}
try {
AjaxResult ajaxResult = systemServiceFeign.getBatchDetailListByMaterialBaseInfoId(materialBaseInfoId);
if (ajaxResult == null || !"200".equals(String.valueOf(ajaxResult.get("code")))) {
return result;
}
List<BatchDetailFeignPO> list = JSON.parseArray(JSON.toJSONString(ajaxResult.get("data")), BatchDetailFeignPO.class);
if (CollectionUtils.isEmpty(list)) {
return result;
}
Map<String, String> labelToField = new HashMap<>();
labelToField.put("Batch Ref NO's", "batchRefNo");
labelToField.put("Batch Ref NO", "batchRefNo");
labelToField.put("批次参考号", "batchRefNo");
labelToField.put("Sheet Ref NO's", "sheetRefNo");
labelToField.put("Sheet Ref NO", "sheetRefNo");
labelToField.put("单据参考号", "sheetRefNo");
labelToField.put("箱号/卡板号", "boxPalletNo");
labelToField.put("批次号", "batchNumber");
labelToField.put("物料状态", "materialStatusCode");
for (BatchDetailFeignPO po : list) {
if (po.getIsDisplay() == null || po.getIsDisplay() != 1) {
continue;
}
String fieldName = po.getFieldName();
if (StringUtils.isBlank(fieldName) && StringUtils.isNotBlank(po.getBatchLabels())) {
fieldName = labelToField.get(po.getBatchLabels().trim());
}
if (StringUtils.isBlank(fieldName)) {
continue;
}
String value = getReceiptFieldValue(receiptMaterialDetailDO, fieldName);
if (StringUtils.isBlank(value)) {
continue;
}
MaterialMoreDetailDO dto = new MaterialMoreDetailDO();
dto.setBatchId(po.getBatchId());
dto.setBatchDetailId(po.getBatchDetailId());
dto.setBatchLabels(po.getBatchLabels());
dto.setAttributeValue(value);
result.add(dto);
}
} catch (Exception e) {
log.warn("从收货明细构建更多属性失败,materialBaseInfoId{},错误:{}", materialBaseInfoId, e.getMessage());
}
return result;
}
private String getReceiptFieldValue(ReceiptMaterialDetailDO dto, String fieldName) {
if (dto == null || StringUtils.isBlank(fieldName)) {
return null;
}
try {
java.lang.reflect.Field field = ReceiptMaterialDetailDO.class.getDeclaredField(fieldName);
field.setAccessible(true);
Object v = field.get(dto);
return v != null ? v.toString().trim() : null;
} catch (Exception e) {
return null;
}
}
/** /**
* @description 生成物料明细 * @description 生成物料明细
* @author ZhouGY * @author ZhouGY
@@ -396,10 +396,38 @@ public class ShiftMaterialDetailImpl extends ServiceImpl<ShiftMaterialDetailMapp
inventoryAdjustmentRecord.setVolume(materialInventory1.getVolume() == null ? BigDecimal.ZERO : materialInventory1.getVolume()); inventoryAdjustmentRecord.setVolume(materialInventory1.getVolume() == null ? BigDecimal.ZERO : materialInventory1.getVolume());
inventoryAdjustmentRecord.setArea(materialInventory1.getArea() == null ? BigDecimal.ZERO : materialInventory1.getArea()); inventoryAdjustmentRecord.setArea(materialInventory1.getArea() == null ? BigDecimal.ZERO : materialInventory1.getArea());
inventoryAdjustmentRecord.setAdjustedNetWeight(shiftMaterialDetailDO.getNetWeight() == null ? BigDecimal.ZERO : shiftMaterialDetailDO.getNetWeight()); inventoryAdjustmentRecord.setAdjustedNetWeight(
inventoryAdjustmentRecord.setAdjustedGrossWeight(shiftMaterialDetailDO.getGrossWeight() == null ? BigDecimal.ZERO : shiftMaterialDetailDO.getGrossWeight()); materialInventory1.getNetWeight() != null ?
inventoryAdjustmentRecord.setAdjustedVolume(shiftMaterialDetailDO.getVolume() == null ? BigDecimal.ZERO : shiftMaterialDetailDO.getVolume()); materialInventory1.getNetWeight().subtract(shiftMaterialDetailDO.getNetWeight() != null ?
inventoryAdjustmentRecord.setAdjustedArea(shiftMaterialDetailDO.getArea() == null ? BigDecimal.ZERO : shiftMaterialDetailDO.getArea()); shiftMaterialDetailDO.getNetWeight() : BigDecimal.ZERO) :
BigDecimal.ZERO
);
inventoryAdjustmentRecord.setAdjustedGrossWeight(
materialInventory1.getGrossWeight() != null ?
materialInventory1.getGrossWeight().subtract(shiftMaterialDetailDO.getGrossWeight() != null ?
shiftMaterialDetailDO.getGrossWeight() : BigDecimal.ZERO) :
BigDecimal.ZERO
);
inventoryAdjustmentRecord.setAdjustedVolume(
materialInventory1.getVolume() != null ?
materialInventory1.getVolume().subtract(shiftMaterialDetailDO.getVolume() != null ?
shiftMaterialDetailDO.getVolume() : BigDecimal.ZERO) :
BigDecimal.ZERO
);
inventoryAdjustmentRecord.setAdjustedArea(
materialInventory1.getArea() != null ?
materialInventory1.getArea().subtract(shiftMaterialDetailDO.getArea() != null ?
shiftMaterialDetailDO.getArea() : BigDecimal.ZERO) :
BigDecimal.ZERO
);
// inventoryAdjustmentRecord.setAdjustedNetWeight(materialInventory1.getNetWeight().subtract(shiftMaterialDetailDO.getNetWeight()));
// inventoryAdjustmentRecord.setAdjustedGrossWeight(materialInventory1.getGrossWeight().subtract(shiftMaterialDetailDO.getGrossWeight()));
// inventoryAdjustmentRecord.setAdjustedVolume(materialInventory1.getVolume().subtract(shiftMaterialDetailDO.getVolume()));
// inventoryAdjustmentRecord.setAdjustedArea(materialInventory1.getArea().subtract(shiftMaterialDetailDO.getArea()));
inventoryAdjustmentRecord.setAdjustAction("移位管理"); inventoryAdjustmentRecord.setAdjustAction("移位管理");
inventoryAdjustmentRecord.setRelateNo(shiftMaterialDetailDO.getShiftNumber()); inventoryAdjustmentRecord.setRelateNo(shiftMaterialDetailDO.getShiftNumber());
@@ -437,13 +465,36 @@ public class ShiftMaterialDetailImpl extends ServiceImpl<ShiftMaterialDetailMapp
inventoryAdjustmentRecord.setCreateTime(new Date()); inventoryAdjustmentRecord.setCreateTime(new Date());
inventoryAdjustmentRecord.setInventoryBeforeQuantity(BigDecimal.ZERO); inventoryAdjustmentRecord.setInventoryBeforeQuantity(BigDecimal.ZERO);
inventoryAdjustmentRecord.setInventoryAfterQuantity(shiftMaterialDetailDO.getShiftQuantity()); inventoryAdjustmentRecord.setInventoryAfterQuantity(shiftMaterialDetailDO.getShiftQuantity());
// inventoryAdjustmentRecord.setAllocationAfterQuantity(); inventoryAdjustmentRecord.setAllocationAfterQuantity(materialInventory1.getAllocationQuantity() == null ? BigDecimal.ZERO : materialInventory1.getAllocationQuantity());
// inventoryAdjustmentRecord.setAllocationBeforeQuantity(); inventoryAdjustmentRecord.setAllocationBeforeQuantity(materialInventory1.getAllocationQuantity() == null ? BigDecimal.ZERO : materialInventory1.getAllocationQuantity());
// inventoryAdjustmentRecord.setFreezeBeforeQuantity(); inventoryAdjustmentRecord.setFreezeBeforeQuantity(materialInventory1.getFreezeQuantity() == null ? BigDecimal.ZERO : materialInventory1.getFreezeQuantity());
// inventoryAdjustmentRecord.setFreezeAfterQuantity(); inventoryAdjustmentRecord.setFreezeAfterQuantity(materialInventory1.getFreezeQuantity() == null ? BigDecimal.ZERO : materialInventory1.getFreezeQuantity());
inventoryAdjustmentRecord.setInventoryBeforeQuantity(shiftMaterialDetailDO.getInventoryQuantity()); inventoryAdjustmentRecord.setInventoryBeforeQuantity(shiftMaterialDetailDO.getInventoryQuantity());
inventoryAdjustmentRecord.setInventoryAfterQuantity(shiftMaterialDetailDO.getInventoryQuantity().subtract(shiftMaterialDetailDO.getShiftQuantity())); inventoryAdjustmentRecord.setInventoryAfterQuantity(shiftMaterialDetailDO.getInventoryQuantity().subtract(shiftMaterialDetailDO.getShiftQuantity()));
inventoryAdjustmentRecordMapper.insert(inventoryAdjustmentRecord); inventoryAdjustmentRecordMapper.insert(inventoryAdjustmentRecord);//移位前物料记录
InventoryAdjustmentRecord inventoryAdjustmentRecord2 = new InventoryAdjustmentRecord();
BeanUtils.copyProperties(inventoryAdjustmentRecord, inventoryAdjustmentRecord2);
inventoryAdjustmentRecord2.setInventoryAdjustmentId(null);
inventoryAdjustmentRecord2.setNetWeight(BigDecimal.ZERO);
inventoryAdjustmentRecord2.setGrossWeight(BigDecimal.ZERO);
inventoryAdjustmentRecord2.setVolume(BigDecimal.ZERO);
inventoryAdjustmentRecord2.setArea(BigDecimal.ZERO);
inventoryAdjustmentRecord2.setAdjustedNetWeight(shiftMaterialDetailDO.getNetWeight());
inventoryAdjustmentRecord2.setAdjustedGrossWeight(shiftMaterialDetailDO.getGrossWeight());
inventoryAdjustmentRecord2.setAdjustedVolume(shiftMaterialDetailDO.getVolume());
inventoryAdjustmentRecord2.setAdjustedArea(shiftMaterialDetailDO.getArea());
inventoryAdjustmentRecord.setWarehouseCode(shiftMaterialDetailDO.getNewWarehouseCode());
inventoryAdjustmentRecord.setWarehouseName(shiftMaterialDetailDO.getNewWarehouseName());
inventoryAdjustmentRecord.setWarehouseId(shiftMaterialDetailDO.getNewWarehouseId());
inventoryAdjustmentRecord.setStorageCode(shiftMaterialDetailDO.getNewStorageCode());
inventoryAdjustmentRecord.setStorageName(shiftMaterialDetailDO.getNewStorageName());
inventoryAdjustmentRecord.setStorageLocationId(shiftMaterialDetailDO.getNewStorageLocationId());
inventoryAdjustmentRecord.setStorageLocationCode(shiftMaterialDetailDO.getNewStorageLocationCode());
inventoryAdjustmentRecord.setStorageLocationName(shiftMaterialDetailDO.getNewStorageLocationName());
inventoryAdjustmentRecord.setStorageSectionId(shiftMaterialDetailDO.getNewStorageSectionId());
inventoryAdjustmentRecord.setStorageLocationId(shiftMaterialDetailDO.getNewStorageLocationId());
inventoryAdjustmentRecordMapper.insert(inventoryAdjustmentRecord2);//移位后物料记录
} }
/** /**
@@ -386,6 +386,15 @@ public class ExcelParseService {
outMaterialDetailDO.setSkucode(materialBaseInfoPO.getBarCode()); outMaterialDetailDO.setSkucode(materialBaseInfoPO.getBarCode());
} }
} }
// 单位优先使用Excel中的"单位"字段如果为空则使用"申报单位"如果还为空则从物料主数据获取与入库单导入处理一致
String unit = StringUtils.isNotBlank(outMaterialDetailDO.getUnit()) ? outMaterialDetailDO.getUnit() : null;
if (StringUtils.isBlank(unit) && StringUtils.isNotBlank(outMaterialDetailDO.getDeclareUnit())) {
unit = outMaterialDetailDO.getDeclareUnit();
}
if (StringUtils.isBlank(unit) && materialBaseInfoPO != null && StringUtils.isNotBlank(materialBaseInfoPO.getUnitName())) {
unit = materialBaseInfoPO.getUnitName();
}
outMaterialDetailDO.setUnit(unit);
} }
} }
@@ -377,4 +377,7 @@ public class StockOutOrderPO extends BaseVOEntity {
@ApiModelProperty("app上传的图片") @ApiModelProperty("app上传的图片")
private String pictureApp; private String pictureApp;
@ApiModelProperty("出库总数量")
private BigDecimal totalOutboundQuantity;
} }
@@ -216,6 +216,14 @@ public class StockReceiptOrderDomainService {
.collect(Collectors.groupingBy(MaterialMoreDetailPO::getMaterialDetailUniqueId)); .collect(Collectors.groupingBy(MaterialMoreDetailPO::getMaterialDetailUniqueId));
receiptMaterialDetailPOList.forEach(receiptMaterialDetailPO -> { receiptMaterialDetailPOList.forEach(receiptMaterialDetailPO -> {
List<ReceiptMaterialDetailPO> receiptMaterialDetailPOChildrenNowList = new ArrayList<>(); List<ReceiptMaterialDetailPO> receiptMaterialDetailPOChildrenNowList = new ArrayList<>();
//子集level 2 的真实子项
List<ReceiptMaterialDetailPO> receiptMaterialDetailPOChildrenList = receiptMaterialDetailPO.getChildren();
if (CollectionUtils.isEmpty(receiptMaterialDetailPOChildrenList)) {
// level 2 子项时不添加父级拷贝避免 PC 端显示重复
receiptMaterialDetailPO.setChildren(receiptMaterialDetailPOChildrenNowList);
return;
}
// level 2 子项时添加父级拷贝(level 1) PDA 收货使用
ReceiptMaterialDetailPO receiptMaterialDetailPOChildrenNow = new ReceiptMaterialDetailPO(); ReceiptMaterialDetailPO receiptMaterialDetailPOChildrenNow = new ReceiptMaterialDetailPO();
BeanUtils.copyProperties(receiptMaterialDetailPO, receiptMaterialDetailPOChildrenNow, "children"); BeanUtils.copyProperties(receiptMaterialDetailPO, receiptMaterialDetailPOChildrenNow, "children");
List<InMaterialDetailSerialNumberPO> materialDetailSerialNumberList = inMaterialDetailSerialNumberMap.get(receiptMaterialDetailPO.getUniqueId()); List<InMaterialDetailSerialNumberPO> materialDetailSerialNumberList = inMaterialDetailSerialNumberMap.get(receiptMaterialDetailPO.getUniqueId());
@@ -231,8 +239,6 @@ public class StockReceiptOrderDomainService {
receiptMaterialDetailPOChildrenNow.setMaterialMoreDetailList(getMaterialMoreDetail(receiptMaterialDetailPO)); receiptMaterialDetailPOChildrenNow.setMaterialMoreDetailList(getMaterialMoreDetail(receiptMaterialDetailPO));
} }
receiptMaterialDetailPOChildrenNowList.add(receiptMaterialDetailPOChildrenNow); receiptMaterialDetailPOChildrenNowList.add(receiptMaterialDetailPOChildrenNow);
//子集
List<ReceiptMaterialDetailPO> receiptMaterialDetailPOChildrenList = receiptMaterialDetailPO.getChildren();
receiptMaterialDetailPOChildrenList.forEach(receiptMaterialDetailPOChildren -> { receiptMaterialDetailPOChildrenList.forEach(receiptMaterialDetailPOChildren -> {
List<InMaterialDetailSerialNumberPO> materialDetailSerialNumberChildrenList = inMaterialDetailSerialNumberMap.get(receiptMaterialDetailPOChildren.getUniqueId()); List<InMaterialDetailSerialNumberPO> materialDetailSerialNumberChildrenList = inMaterialDetailSerialNumberMap.get(receiptMaterialDetailPOChildren.getUniqueId());
if (!CollectionUtils.isEmpty(materialDetailSerialNumberChildrenList)) { if (!CollectionUtils.isEmpty(materialDetailSerialNumberChildrenList)) {
@@ -746,6 +746,14 @@ public class StockShelfOrderDomainService {
inventoryAdjustmentRecord.setFreezeAfterQuantity(BigDecimal.ZERO); inventoryAdjustmentRecord.setFreezeAfterQuantity(BigDecimal.ZERO);
inventoryAdjustmentRecord.setInventoryBeforeQuantity(BigDecimal.ZERO); inventoryAdjustmentRecord.setInventoryBeforeQuantity(BigDecimal.ZERO);
inventoryAdjustmentRecord.setInventoryAfterQuantity(materialInventory.getInventoryQuantity()); inventoryAdjustmentRecord.setInventoryAfterQuantity(materialInventory.getInventoryQuantity());
inventoryAdjustmentRecord.setNetWeight(BigDecimal.ZERO );
inventoryAdjustmentRecord.setGrossWeight(BigDecimal.ZERO);
inventoryAdjustmentRecord.setVolume(BigDecimal.ZERO);
inventoryAdjustmentRecord.setArea(BigDecimal.ZERO);
inventoryAdjustmentRecord.setAdjustedNetWeight(materialInventory.getNetWeight() == null ? BigDecimal.ZERO : materialInventory.getNetWeight());
inventoryAdjustmentRecord.setAdjustedGrossWeight(materialInventory.getGrossWeight() == null ? BigDecimal.ZERO : materialInventory.getGrossWeight());
inventoryAdjustmentRecord.setAdjustedVolume(materialInventory.getVolume() == null ? BigDecimal.ZERO : materialInventory.getVolume());
inventoryAdjustmentRecord.setAdjustedArea(materialInventory.getArea() == null ? BigDecimal.ZERO : materialInventory.getArea());
inventoryAdjustmentRecordMapper.insert(inventoryAdjustmentRecord); inventoryAdjustmentRecordMapper.insert(inventoryAdjustmentRecord);
} else if (materialInventoryPOS.size() == 1) { } else if (materialInventoryPOS.size() == 1) {
MaterialInventory materialInventory = new MaterialInventory(); MaterialInventory materialInventory = new MaterialInventory();
@@ -835,6 +843,14 @@ public class StockShelfOrderDomainService {
inventoryAdjustmentRecord.setCreateBy(loginUser.getUserid()); inventoryAdjustmentRecord.setCreateBy(loginUser.getUserid());
inventoryAdjustmentRecord.setCreateByName(loginUser.getUsername()); inventoryAdjustmentRecord.setCreateByName(loginUser.getUsername());
inventoryAdjustmentRecord.setCreateTime(new Date()); inventoryAdjustmentRecord.setCreateTime(new Date());
inventoryAdjustmentRecord.setNetWeight(BigDecimal.ZERO );
inventoryAdjustmentRecord.setGrossWeight(BigDecimal.ZERO);
inventoryAdjustmentRecord.setVolume(BigDecimal.ZERO);
inventoryAdjustmentRecord.setArea(BigDecimal.ZERO);
inventoryAdjustmentRecord.setAdjustedNetWeight(materialInventory.getNetWeight() == null ? BigDecimal.ZERO : materialInventory.getNetWeight());
inventoryAdjustmentRecord.setAdjustedGrossWeight(materialInventory.getGrossWeight() == null ? BigDecimal.ZERO : materialInventory.getGrossWeight());
inventoryAdjustmentRecord.setAdjustedVolume(materialInventory.getVolume() == null ? BigDecimal.ZERO : materialInventory.getVolume());
inventoryAdjustmentRecord.setAdjustedArea(materialInventory.getArea() == null ? BigDecimal.ZERO : materialInventory.getArea());
inventoryAdjustmentRecordMapper.insert(inventoryAdjustmentRecord); inventoryAdjustmentRecordMapper.insert(inventoryAdjustmentRecord);
} }
} }
@@ -1072,15 +1088,6 @@ public class StockShelfOrderDomainService {
inventoryStandingDetailDO.setCreateBy(loginUser.getUserid()); inventoryStandingDetailDO.setCreateBy(loginUser.getUserid());
inventoryStandingDetailDO.setCreateByName(loginUser.getUsername()); inventoryStandingDetailDO.setCreateByName(loginUser.getUsername());
inventoryStandingDetailDO.setCreateTime(new Date()); inventoryStandingDetailDO.setCreateTime(new Date());
InventoryAdjustmentRecord inventoryAdjustmentRecord = new InventoryAdjustmentRecord();
inventoryAdjustmentRecord.setNetWeight(BigDecimal.ZERO );
inventoryAdjustmentRecord.setGrossWeight(BigDecimal.ZERO);
inventoryAdjustmentRecord.setVolume(BigDecimal.ZERO);
inventoryAdjustmentRecord.setArea(BigDecimal.ZERO);
inventoryAdjustmentRecord.setAdjustedNetWeight(shelfMaterialDetailPO.getTotalNetWeight() == null ? BigDecimal.ZERO : shelfMaterialDetailPO.getTotalNetWeight());
inventoryAdjustmentRecord.setAdjustedGrossWeight(shelfMaterialDetailPO.getTotalGrossWeight() == null ? BigDecimal.ZERO : shelfMaterialDetailPO.getTotalGrossWeight());
inventoryAdjustmentRecord.setAdjustedVolume(shelfMaterialDetailPO.getTotalVolume() == null ? BigDecimal.ZERO : shelfMaterialDetailPO.getTotalVolume());
inventoryAdjustmentRecord.setAdjustedArea(shelfMaterialDetailPO.getTotalArea() == null ? BigDecimal.ZERO : shelfMaterialDetailPO.getTotalArea());
inventoryStandingDetailDOList.add(inventoryStandingDetailDO); inventoryStandingDetailDOList.add(inventoryStandingDetailDO);
} }
inventoryStandingDetailService.batchInsert(inventoryStandingDetailDOList); inventoryStandingDetailService.batchInsert(inventoryStandingDetailDOList);
+16 -28
View File
@@ -13,35 +13,23 @@ spring:
cloud: cloud:
nacos: nacos:
discovery: discovery:
# 服务注册地址 # server-addr: 127.0.0.1:8848
server-addr: 127.0.0.1:8848 server-addr: 10.33.0.129:6010
username: nacos # 线上测试环境配置 容器名+端口号
password: manhuoda@2023 # server-addr: 10.102.192.5:6848
# 演示环境 # username: nacos
# server-addr: 47.92.229.169:8848 # password: manhuoda@2023
# 测试开发环境 #线上正式环境
# server-addr: 192.168.10.18:8848 # server-addr: 10.102.192.105:6848
# Saas环境
# server-addr: 8.130.64.92:8848
# 大运通泰生产环境
# server-addr: 39.107.137.158:8848
# 线上测试环境
# server-addr: 116.204.23.92:8848
config: config:
# 配置中心地址 # server-addr: 127.0.0.1:8848
server-addr: 127.0.0.1:8848 server-addr: 10.33.0.129:6010
username: nacos # 线上测试环境配置 容器名+端口号
password: manhuoda@2023 # server-addr: 10.102.192.5:6848
# 演示环境 # username: nacos
# server-addr: 47.92.229.169:8848 # password: manhuoda@2023
# 测试开发环境 #线上正式环境
# server-addr: 192.168.10.18:8848 # server-addr: 10.102.192.105:6848
# Saas环境
# server-addr: 8.130.64.92:8848
# 大运通泰生产环境
# server-addr: 39.107.137.158:8848
# 线上测试环境
# server-addr: 116.204.23.92:8848
# 配置文件格式 # 配置文件格式
file-extension: yml file-extension: yml
# 共享配置 # 共享配置