Browse Source

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

# Conflicts:
#	ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseStorageOrderServiceImpl.java
dev
王晓迪 3 months ago
parent
commit
5d6ae929b2
  1. 13
      ruoyi-admin/src/main/java/com/ruoyi/sales/domain/SalesEstimateDetail.java
  2. 13
      ruoyi-admin/src/main/java/com/ruoyi/sales/domain/VO/SalesEstimateDetailMaterialVo.java
  3. 5
      ruoyi-admin/src/main/java/com/ruoyi/sales/service/impl/SalesEstimateDetailMaterialServiceImpl.java
  4. 138
      ruoyi-admin/src/main/java/com/ruoyi/sales/service/impl/SalesEstimateServiceImpl.java
  5. 70
      ruoyi-admin/src/main/java/com/ruoyi/system/domain/SysMakeorderBom.java
  6. 23
      ruoyi-admin/src/main/java/com/ruoyi/system/dto/ExportShippingInformOrderDto.java
  7. 7
      ruoyi-admin/src/main/java/com/ruoyi/system/dto/ExportShippingInvoiceDto.java
  8. 6
      ruoyi-admin/src/main/java/com/ruoyi/system/dto/ExportShippingOrderDto.java
  9. 10
      ruoyi-admin/src/main/java/com/ruoyi/system/dto/ExportShippingPackingDto.java
  10. 5
      ruoyi-admin/src/main/java/com/ruoyi/system/mapper/SysMakeOrderMapper.java
  11. 2
      ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysMakeorderBomServiceImpl.java
  12. 427
      ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysSalesShippingInformServiceImpl.java
  13. 116
      ruoyi-admin/src/main/java/com/ruoyi/warehouse/domain/WarehouseInventoryInquiry.java
  14. 358
      ruoyi-admin/src/main/java/com/ruoyi/warehouse/domain/WarehouseInventoryInquiryDetail.java
  15. 26
      ruoyi-admin/src/main/java/com/ruoyi/warehouse/domain/WarehouseInventoryReportDamage.java
  16. 14
      ruoyi-admin/src/main/java/com/ruoyi/warehouse/domain/WarehouseInventoryReportDamageChild.java
  17. 38
      ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseInventoryReportDamageServiceImpl.java
  18. 25
      ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseOutOrderServiceImpl.java
  19. 54
      ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseStorageOrderServiceImpl.java
  20. 8
      ruoyi-admin/src/main/resources/mapper/sales/SalesEstimateDetailMapper.xml
  21. 8
      ruoyi-admin/src/main/resources/mapper/system/SysMakeOrderMapper.xml
  22. 132
      ruoyi-admin/src/main/resources/mapper/warehouse/WarehouseInventoryInquiryDetailMapper.xml
  23. 18
      ruoyi-admin/src/main/resources/mapper/warehouse/WarehouseInventoryInquiryMapper.xml
  24. BIN
      ruoyi-admin/src/main/resources/static/attachments/出货通知单.xlsx
  25. BIN
      ruoyi-admin/src/main/resources/static/attachments/销售出货单1.xlsx
  26. BIN
      ruoyi-admin/src/main/resources/static/attachments/销售出货单2.xlsx
  27. BIN
      ruoyi-admin/src/main/resources/static/attachments/销售出货发票1.xlsx
  28. BIN
      ruoyi-admin/src/main/resources/static/attachments/销售出货发票2.xlsx
  29. BIN
      ruoyi-admin/src/main/resources/static/attachments/销售出货箱单1.xlsx
  30. BIN
      ruoyi-admin/src/main/resources/static/attachments/销售出货箱单2.xlsx
  31. 201
      ruoyi-admin/src/main/resources/templates/sales/estimate/ceoAdd.html
  32. 156
      ruoyi-admin/src/main/resources/templates/sales/estimate/ceoAddDetail.html
  33. 8
      ruoyi-admin/src/main/resources/templates/system/salesOrder/salesOrder.html
  34. 4
      ruoyi-admin/src/main/resources/templates/system/salesShippingInform/salesShippingInform.html

13
ruoyi-admin/src/main/java/com/ruoyi/sales/domain/SalesEstimateDetail.java

@ -135,6 +135,11 @@ public class SalesEstimateDetail extends BaseEntity
/** 含税经营成本(RMB) */
private BigDecimal taxOperatingCosts;
/** 上一年度不含税总经营成本(RMB) */
private BigDecimal totalOperatingCosts;
/** 销售估价详情物料子表集合 */
private List<SalesEstimateDetailMaterial> salesEstimateDetailMaterialList;
@ -427,6 +432,13 @@ public class SalesEstimateDetail extends BaseEntity
return taxOperatingCosts;
}
public BigDecimal getTotalOperatingCosts() {
return totalOperatingCosts;
}
public void setTotalOperatingCosts(BigDecimal totalOperatingCosts) {
this.totalOperatingCosts = totalOperatingCosts;
}
public List<SalesEstimateDetailMaterial> getSalesEstimateDetailMaterialList() {
return salesEstimateDetailMaterialList;
@ -471,6 +483,7 @@ public class SalesEstimateDetail extends BaseEntity
.append("noTaxMaterialCosts", getNoTaxMaterialCosts())
.append("noTaxOperatingCosts", getNoTaxOperatingCosts())
.append("taxOperatingCosts", getTaxOperatingCosts())
.append("totalOperatingCosts", getTotalOperatingCosts())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())

13
ruoyi-admin/src/main/java/com/ruoyi/sales/domain/VO/SalesEstimateDetailMaterialVo.java

@ -17,17 +17,8 @@ public class SalesEstimateDetailMaterialVo extends SalesEstimateDetailMaterial {
/** 不含税开发成本(RMB) */
private BigDecimal noTaxDevelopCosts;
/** 不含税人工成本(RMB) */
private BigDecimal noTaxLaborCosts;
/** 不含税推广成本(RMB) */
private BigDecimal noTaxPromotionalCosts;
/** 不含税业务成本(RMB) */
private BigDecimal noTaxBusinessCosts;
/** 不含税管理成本(RMB) */
private BigDecimal noTaxManagesCosts;
/** 上一年度不含税总经营成本(RMB) */
private BigDecimal totalOperatingCosts;
/** 不含税总物料成本(RMB) */
private BigDecimal noTaxMaterialCosts;

5
ruoyi-admin/src/main/java/com/ruoyi/sales/service/impl/SalesEstimateDetailMaterialServiceImpl.java

@ -92,16 +92,13 @@ public class SalesEstimateDetailMaterialServiceImpl implements ISalesEstimateDet
private void setCosts(SalesEstimateDetailMaterialVo vo, SalesEstimateDetail salesEstimateDetail) {
vo.setNoTaxMaterialCosts(salesEstimateDetail.getNoTaxMaterialCosts());
vo.setNoTaxBusinessCosts(salesEstimateDetail.getNoTaxBusinessCosts());
vo.setNoTaxDevelopCosts(salesEstimateDetail.getNoTaxDevelopCosts());
vo.setNoTaxLaborCosts(salesEstimateDetail.getNoTaxLaborCosts());
vo.setNoTaxManagesCosts(salesEstimateDetail.getNoTaxManagesCosts());
vo.setNoTaxOperatingCosts(salesEstimateDetail.getNoTaxOperatingCosts());
vo.setTaxOperatingCosts(salesEstimateDetail.getTaxOperatingCosts());
vo.setNoTaxPromotionalCosts(salesEstimateDetail.getNoTaxPromotionalCosts());
vo.setNoTaxServiceCosts(salesEstimateDetail.getNoTaxServiceCosts());
vo.setNoTaxShippingCosts(salesEstimateDetail.getNoTaxShippingCosts());
vo.setProfitRate(salesEstimateDetail.getProfitRate());
vo.setTotalOperatingCosts(salesEstimateDetail.getTotalOperatingCosts());
}

138
ruoyi-admin/src/main/java/com/ruoyi/sales/service/impl/SalesEstimateServiceImpl.java

@ -213,10 +213,8 @@ public class SalesEstimateServiceImpl implements ISalesEstimateService
salesEstimateDetailVo.setEProfitRate(salesEstimateTemplate.geteProfitRate());
salesEstimateDetailVo.setFProfitRate(salesEstimateTemplate.getfProfitRate());
salesEstimateDetailVo.setNoTaxLaborCosts(salesEstimateTemplate.getNoTaxLaborCosts());
salesEstimateDetailVo.setNoTaxBusinessCosts(salesEstimateTemplate.getNoTaxBusinessCosts());
salesEstimateDetailVo.setNoTaxManagesCosts(salesEstimateTemplate.getNoTaxManagesCosts());
salesEstimateDetailVo.setNoTaxPromotionalCosts(salesEstimateTemplate.getNoTaxPromotionalCosts());
salesEstimateDetailVo.setTotalOperatingCosts(salesEstimateTemplate.getTotalOperatingCosts());
salesEstimateDetailVo.setNoTaxMaterialCosts(salesEstimateTemplate.getNoTaxMaterialCosts());
return salesEstimateDetailVo;
}
@ -302,28 +300,48 @@ public class SalesEstimateServiceImpl implements ISalesEstimateService
/* 下面的计算规则
1不含税总经营成本=不含税人工成本+不含税推广成本+不含税业务成本+不含税管理成本
2含税总经营成本=不含税总经营成本*(1+0.13)
3不含税经营成本(RMB)=(该料号的BOM物料总不含税采购成本/总不含税物料成本)*总不含税经营成本
4含税经营成本(RMB)=(该料号的BOM物料总含税采购成本/总含税物料成本)*总含税经营成本
5不含税料号估价成本:该料号的BOM物料总不含税采购成本+不含税总经营成本+(该料号的BOM物料总不含税采购成本/总不含税物料成本)*总不含税经营成本
新版不含税料号估价成本:该料号的BOM物料总不含税采购成本+不含税运输成本+不含税服务成本+不含税开发成本+(该料号的BOM物料总不含税采购成本/总物料不含税成本)*总经营不含税成
1不含税料号估价成本=该料号的BOM物料不含税总采购成本+不含税运输成本+不含税服务成本+不含税开发成本+(该料号的BOM物料不含税总采购成本/不含税总物料成本)*上一年度的总经营不含税成本合计
1.1该料号的BOM物料不含税总采购成本=手填的bom物料的总的不含税采购单价的合计
2含税料号估价成本=该料号的BOM物料含税总采购成本+含税运输成本+含税服务成本+含税开发成本+(该料号的BOM物料含税总采购成本/含税总物料成本)*上一年度的总经营含税成本合计
2.1该料号的BOM物料含税总采购成本=手填的bom物料的总的含税采购单价的合计
3不含税运输成本手填业务填写
含税运输成本=1+0.13*不含税运输成本
4不含税服务成本手填业务填写
含税服务成本=1+0.13*不含税服务成本
5不含税开发成本手填工程填写
含税开发成本=1+0.13*不含税开发成本
6.1该料号的不含税经营成本(RMB)=(该料号的BOM物料不含税总采购成本/上一年度总物料不含税成本合计)*上一年度的总经营不含税成本合计
6.1.1上一年度的总经营不含税成本合计手填总经理填
6.1.2上一年度总物料不含税成本合计手填总经理填
6含税料号估价成本:该料号的BOM物料总含税采购成本+含税总经营成本+(该料号的BOM物料总含税采购成本/总含税物料成本)*总含税经营成本
新版含税料号估价成本:该料号的BOM物料总含税采购成本+含税运输成本+含税服务成本+含税开发成本+(该料号的BOM物料总含税采购成本/总物料含税成本)*总经营含税成本
7.1该料号含税经营成本(RMB)=(该料号的BOM物料含税总采购成本/上一年度总物料含税成本合计)*上一年度的总经营含税成本合计
7.1.1上一年度的总经营含税成本合计1+0.13*上一年度的总经营不含税成本合计
7.1.2上一年度总物料含税成本合计1+0.13*上一年度总物料不含税成本合计
7不含税单价(RMB):该料号不含税估价成本/(1-利润率)
8含税单价(RMB)=该料号含税估价成本/(1-利润率)
9不含税总价(RMB)=不含税单价(RMB)*数量
10含税总价(RMB)=含税单价(RMB)*数量
11不含税单价(美元)=不税单价(RMB)/美元汇率
8被估价物料的不含税单价RMB=被估价物料的不含税总成本/1-利润率
9被估价物料的含税单价(RMB)=被估价物料的含税总成本/1-利润率
10不含税总价(RMB)=被估价物料的不含税单价(RMB)*数量
11含税总价(RMB)=被估价物料的含税单价(RMB)*数量
12不含税单价(美元)=被估价物料的不含税单价(RMB)/美元汇率
注:换算后保留小数点后两位超过后的四舍五入
12含税单价(美元)=不含税单价(美元)
13不含税总价(美元)=不含税单价(美元)*数量
14含税总价(美元)=含税单价(美元)*数量
15总含税物料成本 = 总不含税物料成本*(1+0.13)
13含税单价(美元)=不含税单价(美元)
14不含税总价(美元)=不含税单价(美元)*数量
15含税总价(美元)=含税单价(美元)*数量
* */
@ -362,25 +380,32 @@ public class SalesEstimateServiceImpl implements ISalesEstimateService
List<SalesEstimateDetail> salesEstimateDetailList = salesEstimate.getSalesEstimateDetailList(); // 获取销售估价详情列表
for (SalesEstimateDetail salesEstimateDetail : salesEstimateDetailList) { // 遍历销售估价详情列表
BigDecimal noTaxLaborCosts = salesEstimateDetail.getNoTaxLaborCosts(); // 获取不含税的人工成本
BigDecimal noTaxPromotionalCosts = salesEstimateDetail.getNoTaxPromotionalCosts(); // 获取不含税的推广成本
BigDecimal noTaxBusinessCosts = salesEstimateDetail.getNoTaxBusinessCosts(); // 获取不含税的业务成本
BigDecimal noTaxManagesCosts = salesEstimateDetail.getNoTaxManagesCosts(); // 获取不含税的管理成本
BigDecimal noTaxMaterialCosts = salesEstimateDetail.getNoTaxMaterialCosts(); // 获取不含税的物料成本
// BigDecimal noTaxLaborCosts = salesEstimateDetail.getNoTaxLaborCosts(); // 获取不含税的人工成本
// BigDecimal noTaxPromotionalCosts = salesEstimateDetail.getNoTaxPromotionalCosts(); // 获取不含税的推广成本
// BigDecimal noTaxBusinessCosts = salesEstimateDetail.getNoTaxBusinessCosts(); // 获取不含税的业务成本
// BigDecimal noTaxManagesCosts = salesEstimateDetail.getNoTaxManagesCosts(); // 获取不含税的管理成本
BigDecimal totalOperatingCosts = salesEstimateDetail.getTotalOperatingCosts(); //上一年度不含税总经营成本
BigDecimal noTaxMaterialCosts = salesEstimateDetail.getNoTaxMaterialCosts(); // 获取上一年度不含税的总物料成本
BigDecimal noTaxShippingCosts = salesEstimateDetail.getNoTaxShippingCosts(); //不含税运输成本
BigDecimal noTaxServiceCosts = salesEstimateDetail.getNoTaxServiceCosts(); //不含税服务成本
BigDecimal noTaxDevelopmentCosts = salesEstimateDetail.getNoTaxDevelopCosts();//不含税开发成本
BigDecimal taxShippingCosts = salesEstimateDetail.getNoTaxShippingCosts().multiply(BigDecimal.valueOf(1.13)) ; //含税运输成本
BigDecimal taxServiceCosts = salesEstimateDetail.getNoTaxServiceCosts().multiply(BigDecimal.valueOf(1.13)); //含税服务成本
BigDecimal taxDevelopmentCosts = salesEstimateDetail.getNoTaxDevelopCosts().multiply(BigDecimal.valueOf(1.13));//含税开发成本
BigDecimal profitRate = salesEstimateDetail.getProfitRate().divide(BigDecimal.valueOf(100)); // 获取利润率并转换为小数形式
Long materialNum = salesEstimateDetail.getMaterialNum(); // 获取物料数量
// 计算不含税总经营成本
BigDecimal noAllTaxOperatingCosts = calculateNoTaxOperatingCosts(
noTaxLaborCosts, noTaxPromotionalCosts, noTaxBusinessCosts, noTaxManagesCosts);
// // 计算不含税总经营成本
// BigDecimal noAllTaxOperatingCosts = calculateNoTaxOperatingCosts(
// noTaxLaborCosts, noTaxPromotionalCosts, noTaxBusinessCosts, noTaxManagesCosts);
// 计算含税总经营成本
BigDecimal allTaxOperatingCosts = calculateTaxOperatingCosts(noAllTaxOperatingCosts);
// 计算上一年度含税总经营成本
BigDecimal allTaxOperatingCosts = calculateTaxOperatingCosts(totalOperatingCosts);
// 计算总含税物料成本
BigDecimal taxMaterialCosts = calculateTaxMaterialCosts(noTaxMaterialCosts);
@ -391,18 +416,18 @@ public class SalesEstimateServiceImpl implements ISalesEstimateService
// 计算物料总含税采购成本
BigDecimal totalTaxPurchaseRmb = calculateTotalTaxPurchaseRmb(estimateDetailMaterialList);
// 计算不含税经营成本(RMB),并保留两位小数
BigDecimal noTaxOperatingCost = calculateNoTaxOperatingCost(totalNoTaxPurchaseRmb, noTaxMaterialCosts, noAllTaxOperatingCosts)
// 计算该料号的不含税经营成本(RMB),并保留两位小数
BigDecimal noTaxOperatingCost = calculateNoTaxOperatingCost(totalNoTaxPurchaseRmb, noTaxMaterialCosts, totalOperatingCosts)
.setScale(2, RoundingMode.HALF_UP);
// 计算含税经营成本(RMB),并保留两位小数
// 计算该料号含税经营成本(RMB),并保留两位小数
BigDecimal taxOperatingCost = calculateTaxOperatingCost(totalTaxPurchaseRmb, taxMaterialCosts, allTaxOperatingCosts)
.setScale(2, RoundingMode.HALF_UP);
// 计算不含税料号估价成本,并保留两位小数
BigDecimal noTaxEstimateCost = calculateNoTaxEstimateCost(totalNoTaxPurchaseRmb, noTaxShippingCosts,noTaxServiceCosts,noTaxDevelopmentCosts,noAllTaxOperatingCosts, noTaxMaterialCosts)
// 计算该料号的不含税料号估价成本,并保留两位小数
BigDecimal noTaxEstimateCost = calculateNoTaxEstimateCost(totalNoTaxPurchaseRmb, noTaxShippingCosts,noTaxServiceCosts,noTaxDevelopmentCosts,noTaxOperatingCost)
.setScale(2, RoundingMode.HALF_UP);
// 计算含税料号估价成本,并保留两位小数
BigDecimal taxEstimateCost = calculateTaxEstimateCost(totalTaxPurchaseRmb,noTaxShippingCosts,noTaxServiceCosts,noTaxDevelopmentCosts, allTaxOperatingCosts, taxMaterialCosts)
// 计算该料号的含税料号估价成本,并保留两位小数
BigDecimal taxEstimateCost = calculateTaxEstimateCost(totalTaxPurchaseRmb,taxShippingCosts,taxServiceCosts,taxDevelopmentCosts, allTaxOperatingCosts)
.setScale(2, RoundingMode.HALF_UP);
// 计算不含税单价(RMB),并保留两位小数
@ -436,8 +461,11 @@ public class SalesEstimateServiceImpl implements ISalesEstimateService
noTaxDollarMain = noTaxDollarMain.add(noTaxUnitPriceDollar);
// 计算含税单价(美元),并保留两位小数
BigDecimal taxUnitPriceDollar = calculateTaxUnitPriceDollar(taxUnitPriceRmb, usdRate)
.setScale(2, RoundingMode.HALF_UP);
// BigDecimal taxUnitPriceDollar = calculateTaxUnitPriceDollar(taxUnitPriceRmb, usdRate)
// .setScale(2, RoundingMode.HALF_UP);
BigDecimal taxUnitPriceDollar = noTaxUnitPriceDollar;
// 计算主表的含税单价美元
taxDollarMain = taxDollarMain.add(taxUnitPriceDollar);
@ -501,8 +529,8 @@ public class SalesEstimateServiceImpl implements ISalesEstimateService
BigDecimal totalNoTaxPurchaseRmb = BigDecimal.ZERO;
for (SalesEstimateDetailMaterial detailMaterial : estimateDetailMaterialList) {
BigDecimal noTaxPurchaseRmb = detailMaterial.getNoTaxPurchaseRmb(); // 获取不含税采购单价
Long useNum = detailMaterial.getUseNum(); // 获取用量
totalNoTaxPurchaseRmb = totalNoTaxPurchaseRmb.add(noTaxPurchaseRmb.multiply(new BigDecimal(useNum))); // 计算总不含税采购成本
//Long useNum = detailMaterial.getUseNum(); // 获取用量
totalNoTaxPurchaseRmb = totalNoTaxPurchaseRmb.add(noTaxPurchaseRmb); // 计算总不含税采购成本
}
return totalNoTaxPurchaseRmb;
}
@ -512,16 +540,16 @@ public class SalesEstimateServiceImpl implements ISalesEstimateService
BigDecimal totalTaxPurchaseRmb = BigDecimal.ZERO;
for (SalesEstimateDetailMaterial detailMaterial : estimateDetailMaterialList) {
BigDecimal taxPurchaseRmb = detailMaterial.getTaxPurchaseRmb(); // 获取含税采购单价
Long useNum = detailMaterial.getUseNum(); // 获取用量
totalTaxPurchaseRmb = totalTaxPurchaseRmb.add(taxPurchaseRmb.multiply(new BigDecimal(useNum))); // 计算总含税采购成本
// Long useNum = detailMaterial.getUseNum(); // 获取用量
totalTaxPurchaseRmb = totalTaxPurchaseRmb.add(taxPurchaseRmb); // 计算总含税采购成本
}
return totalTaxPurchaseRmb;
}
// 计算不含税经营成本(RMB)
private BigDecimal calculateNoTaxOperatingCost(BigDecimal totalNoTaxPurchaseRmb, BigDecimal noTaxMaterialCosts, BigDecimal noAllTaxOperatingCosts) {
// 计算该料号的不含税经营成本(RMB)
private BigDecimal calculateNoTaxOperatingCost(BigDecimal totalNoTaxPurchaseRmb, BigDecimal noTaxMaterialCosts, BigDecimal totalOperatingCosts) {
return totalNoTaxPurchaseRmb.divide(noTaxMaterialCosts, 2, RoundingMode.HALF_UP)
.multiply(noAllTaxOperatingCosts);
.multiply(totalOperatingCosts);
}
// 计算含税经营成本(RMB)
@ -533,23 +561,21 @@ public class SalesEstimateServiceImpl implements ISalesEstimateService
// 计算不含税料号估价成本 BigDecimal noTaxShippingCosts = salesEstimateDetail.getNoTaxShippingCosts(); //不含税运输成本
// BigDecimal noTaxServiceCosts = salesEstimateDetail.getNoTaxServiceCosts(); //不含税服务成本
// BigDecimal noTaxDevelopmentCosts = salesEstimateDetail.getNoTaxDevelopCosts();//不含税开发成本
private BigDecimal calculateNoTaxEstimateCost(BigDecimal totalNoTaxPurchaseRmb, BigDecimal noTaxShippingCosts ,BigDecimal noTaxServiceCosts,BigDecimal noTaxDevelopmentCosts ,BigDecimal noAllTaxOperatingCosts,BigDecimal noTaxMaterialCosts) {
private BigDecimal calculateNoTaxEstimateCost(BigDecimal totalNoTaxPurchaseRmb, BigDecimal noTaxShippingCosts ,BigDecimal noTaxServiceCosts,BigDecimal noTaxDevelopmentCosts ,BigDecimal noTaxOperatingCost) {
return totalNoTaxPurchaseRmb
.add(noTaxShippingCosts)
.add(noTaxServiceCosts)
.add(noTaxDevelopmentCosts)
.add(totalNoTaxPurchaseRmb.divide(noTaxMaterialCosts, 2, RoundingMode.HALF_UP)
.multiply(noAllTaxOperatingCosts));
.add(noTaxOperatingCost);
}
// 计算含税料号估价成本
private BigDecimal calculateTaxEstimateCost(BigDecimal totalTaxPurchaseRmb, BigDecimal noTaxShippingCosts ,BigDecimal noTaxServiceCosts,BigDecimal noTaxDevelopmentCosts ,BigDecimal allTaxOperatingCosts, BigDecimal taxMaterialCosts) {
private BigDecimal calculateTaxEstimateCost(BigDecimal totalTaxPurchaseRmb, BigDecimal taxShippingCosts ,BigDecimal taxServiceCosts,BigDecimal taxDevelopmentCosts ,BigDecimal allTaxOperatingCosts) {
return totalTaxPurchaseRmb
.add(noTaxShippingCosts)
.add(noTaxServiceCosts)
.add(noTaxDevelopmentCosts)
.add(totalTaxPurchaseRmb.divide(taxMaterialCosts, 2, RoundingMode.HALF_UP)
.multiply(allTaxOperatingCosts));
.add(taxShippingCosts)
.add(taxServiceCosts)
.add(taxDevelopmentCosts)
.add(allTaxOperatingCosts);
}
// 计算不含税单价(RMB)

70
ruoyi-admin/src/main/java/com/ruoyi/system/domain/SysMakeorderBom.java

@ -94,24 +94,24 @@ public class SysMakeorderBom extends BaseEntity
private Long sortNo;
// 委外工序数
private int processNum;
private Integer processNum;
// 已委外数量
private int hasOutNum;
private Integer hasOutNum;
// 可用库存数
private BigDecimal storageNum;
private Integer storageNum;
// 已领料数
private int hasPickNum;
private Integer hasPickNum;
// 订单数量
private int orderNum;
private Integer orderNum;
// 客户期望交付时间
private Date deliveryTime;
private int finishNum;
private Integer finishNum;
// 已完成数
public void setId(Long id)
@ -285,67 +285,69 @@ public class SysMakeorderBom extends BaseEntity
this.warehouseDept = warehouseDept;
}
public int getProcessNum() {
public String getMaterialModel() {
return materialModel;
}
public void setMaterialModel(String materialModel) {
this.materialModel = materialModel;
}
public Date getDeliveryTime() {
return deliveryTime;
}
public void setDeliveryTime(Date deliveryTime) {
this.deliveryTime = deliveryTime;
}
public Integer getProcessNum() {
return processNum;
}
public void setProcessNum(int processNum) {
public void setProcessNum(Integer processNum) {
this.processNum = processNum;
}
public int getHasOutNum() {
public Integer getHasOutNum() {
return hasOutNum;
}
public void setHasOutNum(int hasOutNum) {
public void setHasOutNum(Integer hasOutNum) {
this.hasOutNum = hasOutNum;
}
public BigDecimal getStorageNum() {
public Integer getStorageNum() {
return storageNum;
}
public void setStorageNum(BigDecimal storageNum) {
public void setStorageNum(Integer storageNum) {
this.storageNum = storageNum;
}
public int getHasPickNum() {
public Integer getHasPickNum() {
return hasPickNum;
}
public void setHasPickNum(int hasPickNum) {
public void setHasPickNum(Integer hasPickNum) {
this.hasPickNum = hasPickNum;
}
public String getMaterialModel() {
return materialModel;
}
public void setMaterialModel(String materialModel) {
this.materialModel = materialModel;
}
public int getOrderNum() {
public Integer getOrderNum() {
return orderNum;
}
public void setOrderNum(int orderNum) {
public void setOrderNum(Integer orderNum) {
this.orderNum = orderNum;
}
public Date getDeliveryTime() {
return deliveryTime;
}
public void setDeliveryTime(Date deliveryTime) {
this.deliveryTime = deliveryTime;
}
public int getFinishNum() {
public Integer getFinishNum() {
return finishNum;
}
public void setFinishNum(int finishNum) {
public void setFinishNum(Integer finishNum) {
this.finishNum = finishNum;
}

23
ruoyi-admin/src/main/java/com/ruoyi/system/dto/ExportShippingInformOrderDto.java

@ -9,9 +9,30 @@ import lombok.Data;
public class ExportShippingInformOrderDto {
/** 销售单号*/
private String salesOrderCode;
/** 生产订单号*/
private String makeNo;
/** 客户订单号*/
private String customerOrderCode;
/** 物料名称*/
private String materialName;
private String deviceModelCode;
/** 物料型号*/
private String materialModel;
/** 物料数量*/
private Integer materialNum;
/** 铭牌logo*/
private String logo;
/** 备注*/
private String remark;
/** 追踪码*/
private String trackingCode;
}

7
ruoyi-admin/src/main/java/com/ruoyi/system/dto/ExportShippingInvoiceDto.java

@ -15,12 +15,15 @@ public class ExportShippingInvoiceDto {
private String materialName;
private String materialModel;
private String makeNo;
private Integer materialNum;
private BigDecimal materialUsd;
private String materialAmount;
private BigDecimal materialUsdSum;
private String materialAmountSum;
private String total;
}

6
ruoyi-admin/src/main/java/com/ruoyi/system/dto/ExportShippingOrderDto.java

@ -13,9 +13,7 @@ public class ExportShippingOrderDto {
private String materialName;
private String materialNo;
private String materialDescribe;
private String materialModel;
private String materialUnit;
@ -24,4 +22,6 @@ public class ExportShippingOrderDto {
private String salesOrderNumber;
private String remark;
private String enterpriseMaterialNo;
}

10
ruoyi-admin/src/main/java/com/ruoyi/system/dto/ExportShippingPackingDto.java

@ -18,5 +18,15 @@ public class ExportShippingPackingDto {
private Integer materialNum;
private String box;
private String oneBox;
private String twoBox;
private String totalNW;
private String totalGW;
private String meas;
}

5
ruoyi-admin/src/main/java/com/ruoyi/system/mapper/SysMakeOrderMapper.java

@ -130,4 +130,9 @@ public interface SysMakeOrderMapper
* */
List<SysMakeOrder> selectMakeOrderByMakeNoList(List<String> makeNos);
/**
* 根据销售单号集合查询生产订单集合
* */
List<SysMakeOrder> selectMakeOrderListBySalesOrderCodes(List<String> salesOrderCode);
}

2
ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysMakeorderBomServiceImpl.java

@ -81,7 +81,7 @@ public class SysMakeorderBomServiceImpl implements ISysMakeorderBomService
// 获取可用库存数
WarehouseInventoryInquiry inquiry = inquiryMapper.selectWarehouseInventoryInquiryByMaterialNo(bom.getMaterialNo());
if(inquiry == null){
bom.setStorageNum(BigDecimal.ZERO);
bom.setStorageNum(0);
}else{
bom.setStorageNum(inquiry.getAvailableStockNum());
}

427
ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysSalesShippingInformServiceImpl.java

@ -624,6 +624,7 @@ public class SysSalesShippingInformServiceImpl implements ISysSalesShippingInfor
public void exportShippingOrderOne(String outOrderCode, HttpServletResponse response) {
String fileName = "销售出货单1.xlsx";
String shippingOrderCode = redisCache.generateBillNo("shd");
try {
String fileAbsolutePath = FileDownloadUtils.getFileAbsolutePath(fileName);
@ -635,6 +636,21 @@ public class SysSalesShippingInformServiceImpl implements ISysSalesShippingInfor
SysSalesShippingInform salesShippingInform = sysSalesShippingInformMapper.selectSysSalesShippingInformByCode(outOrderCode);
String salesOrderCode = salesShippingInform.getSalesOrderCode();
List<String> salesOrderCodes = new ArrayList<>();
if (StringUtils.isNotEmpty(salesOrderCode)){
String[] splitSalesOrderCode = salesOrderCode.split(",");
salesOrderCodes = Arrays.asList(splitSalesOrderCode);
}
List<SysSalesOrder> sysSalesOrders = sysSalesOrderMapper.selectSysSalesOrderListByCodeList(salesOrderCodes);
HashMap<String, SysSalesOrder> salesOrderHashMap = new HashMap<>();
for (SysSalesOrder sysSalesOrder : sysSalesOrders) {
salesOrderHashMap.put(sysSalesOrder.getSalesOrderCode(),sysSalesOrder);
}
//销售出货单
String shippingInformationType = "2";
@ -644,35 +660,42 @@ public class SysSalesShippingInformServiceImpl implements ISysSalesShippingInfor
List<SysSalesShippingInformDetail> salesShippingInformDetails = shippingInformDetailMapper.selectSysSalesShippingInformDetailByCode(outOrderCode);
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String deliverTime = dateFormat.format(salesShippingInform.getDeliverTime());
String realFileName = salesShippingInform.getSalesOrderCode() +"-"+ fileName.substring(0, fileName.lastIndexOf("."))+ ".xlsx";
// 设置响应头,指定文件名和文件类型
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(realFileName, "UTF-8"));
response.setContentType("application/octet-stream");
List<SysSalesOrderChild> sysSalesOrderChildren = salesOrderChildMapper.selectBatchOrderChildListBySalesOrderCode(salesOrderCodes);
AtomicInteger index = new AtomicInteger(1);
//处理物料数据
List<ExportShippingOrderDto> exportShippingOrderDtos = new ArrayList<>();
for (SysSalesShippingInformDetail salesShippingInformDetail : salesShippingInformDetails) {
for (SysSalesOrderChild sysSalesOrderChild : sysSalesOrderChildren) {
SysSalesOrder sysSalesOrder = salesOrderHashMap.get(sysSalesOrderChild.getQuoteId());
ExportShippingOrderDto exportShippingOrderDto = new ExportShippingOrderDto();
exportShippingOrderDto.setIndex(index.getAndIncrement());
exportShippingOrderDto.setMaterialName(salesShippingInformDetail.getMaterialName());
exportShippingOrderDto.setMaterialNo(salesShippingInformDetail.getMaterialNo());
exportShippingOrderDto.setMaterialDescribe(salesShippingInformDetail.getMaterialDescribe());
exportShippingOrderDto.setMaterialUnit(salesShippingInformDetail.getMaterialUnit());
exportShippingOrderDto.setMakeNum(salesShippingInformDetail.getMakeNum());
exportShippingOrderDto.setSalesOrderNumber(salesShippingInform.getSalesOrderNumber());
exportShippingOrderDto.setRemark(salesShippingInform.getRemark());
exportShippingOrderDto.setMaterialName(sysSalesOrderChild.getMaterialName());
exportShippingOrderDto.setMaterialModel(sysSalesOrderChild.getMaterialModel());
exportShippingOrderDto.setMaterialUnit(sysSalesOrderChild.getUnit());
exportShippingOrderDto.setMakeNum(sysSalesOrderChild.getMaterialNum());
exportShippingOrderDto.setSalesOrderNumber(sysSalesOrder.getSalesOrderNumber());
exportShippingOrderDto.setRemark(sysSalesOrder.getRemark());
exportShippingOrderDto.setEnterpriseMaterialNo(sysSalesOrder.getEnterpriseMaterialNo());
exportShippingOrderDtos.add(exportShippingOrderDto);
}
//totalMakeNum
String totalMakeNum = String.valueOf(salesShippingInformDetails.stream().mapToInt(SysSalesShippingInformDetail::getMakeNum).sum());
String totalMakeNum = String.valueOf(sysSalesOrderChildren.stream().mapToInt(SysSalesOrderChild::getMaterialNum).sum());
ExcelWriter workBook = EasyExcel.write(response.getOutputStream()).withTemplate(fileAbsolutePath).build();
@ -681,11 +704,14 @@ public class SysSalesShippingInformServiceImpl implements ISysSalesShippingInfor
FillConfig fillConfig = FillConfig.builder().forceNewRow(true).build();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String shippingDate = dateFormat.format(new Date());
HashMap<String, Object> map = MapUtils.newHashMap();
map.put("customerId",salesShippingInform.getCustomerId());
map.put("deliverTime",deliverTime);
map.put("businessMembers",salesShippingInform.getBusinessMembers());
map.put("shippingDate",shippingDate);
map.put("totalMakeNum",totalMakeNum);
map.put("shippingOrderCode",shippingOrderCode);
// 写入数据
workBook.fill(map, sheet);
@ -706,7 +732,7 @@ public class SysSalesShippingInformServiceImpl implements ISysSalesShippingInfor
public void exportShippingOrderTwo(String outOrderCode, HttpServletResponse response) {
String fileName = "销售出货单2.xlsx";
String shippingOrderCode = redisCache.generateBillNo("shd");
try {
String fileAbsolutePath = FileDownloadUtils.getFileAbsolutePath(fileName);
@ -720,6 +746,22 @@ public class SysSalesShippingInformServiceImpl implements ISysSalesShippingInfor
SysSalesShippingInform salesShippingInform = sysSalesShippingInformMapper.selectSysSalesShippingInformByCode(outOrderCode);
String salesOrderCode = salesShippingInform.getSalesOrderCode();
List<String> salesOrderCodes = new ArrayList<>();
if (StringUtils.isNotEmpty(salesOrderCode)){
String[] splitSalesOrderCode = salesOrderCode.split(",");
salesOrderCodes = Arrays.asList(splitSalesOrderCode);
}
List<SysSalesOrder> sysSalesOrders = sysSalesOrderMapper.selectSysSalesOrderListByCodeList(salesOrderCodes);
HashMap<String, SysSalesOrder> salesOrderHashMap = new HashMap<>();
for (SysSalesOrder sysSalesOrder : sysSalesOrders) {
salesOrderHashMap.put(sysSalesOrder.getSalesOrderCode(),sysSalesOrder);
}
//销售出货单
String shippingInformationType = "2";
String shippingTemplateType = "销售出货单2";
@ -727,35 +769,42 @@ public class SysSalesShippingInformServiceImpl implements ISysSalesShippingInfor
insertShippingInformation(outOrderCode,shippingInformationType,shippingTemplateType,salesShippingInform);
List<SysSalesShippingInformDetail> salesShippingInformDetails = shippingInformDetailMapper.selectSysSalesShippingInformDetailByCode(outOrderCode);
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String deliverTime = dateFormat.format(salesShippingInform.getDeliverTime());
String realFileName = salesShippingInform.getSalesOrderCode() +"-"+ fileName.substring(0, fileName.lastIndexOf("."))+ ".xlsx";
// 设置响应头,指定文件名和文件类型
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(realFileName, "UTF-8"));
response.setContentType("application/octet-stream");
List<SysSalesOrderChild> sysSalesOrderChildren = salesOrderChildMapper.selectBatchOrderChildListBySalesOrderCode(salesOrderCodes);
AtomicInteger index = new AtomicInteger(1);
//处理物料数据
List<ExportShippingOrderDto> exportShippingOrderDtos = new ArrayList<>();
for (SysSalesShippingInformDetail salesShippingInformDetail : salesShippingInformDetails) {
for (SysSalesOrderChild sysSalesOrderChild : sysSalesOrderChildren) {
SysSalesOrder sysSalesOrder = salesOrderHashMap.get(sysSalesOrderChild.getQuoteId());
ExportShippingOrderDto exportShippingOrderDto = new ExportShippingOrderDto();
exportShippingOrderDto.setIndex(index.getAndIncrement());
exportShippingOrderDto.setMaterialName(salesShippingInformDetail.getMaterialName());
exportShippingOrderDto.setMaterialNo(salesShippingInformDetail.getMaterialNo());
exportShippingOrderDto.setMaterialDescribe(salesShippingInformDetail.getMaterialDescribe());
exportShippingOrderDto.setMaterialUnit(salesShippingInformDetail.getMaterialUnit());
exportShippingOrderDto.setMakeNum(salesShippingInformDetail.getMakeNum());
exportShippingOrderDto.setSalesOrderNumber(salesShippingInform.getSalesOrderNumber());
exportShippingOrderDto.setRemark(salesShippingInform.getRemark());
exportShippingOrderDto.setMaterialName(sysSalesOrderChild.getMaterialName());
exportShippingOrderDto.setMaterialModel(sysSalesOrderChild.getMaterialModel());
exportShippingOrderDto.setMaterialUnit(sysSalesOrderChild.getUnit());
exportShippingOrderDto.setMakeNum(sysSalesOrderChild.getMaterialNum());
exportShippingOrderDto.setSalesOrderNumber(sysSalesOrder.getSalesOrderNumber());
exportShippingOrderDto.setRemark(sysSalesOrder.getRemark());
exportShippingOrderDto.setEnterpriseMaterialNo(sysSalesOrder.getEnterpriseMaterialNo());
exportShippingOrderDtos.add(exportShippingOrderDto);
}
//totalMakeNum
String totalMakeNum = String.valueOf(salesShippingInformDetails.stream().mapToInt(SysSalesShippingInformDetail::getMakeNum).sum());
String totalMakeNum = String.valueOf(sysSalesOrderChildren.stream().mapToInt(SysSalesOrderChild::getMaterialNum).sum());
ExcelWriter workBook = EasyExcel.write(response.getOutputStream()).withTemplate(fileAbsolutePath).build();
@ -765,10 +814,14 @@ public class SysSalesShippingInformServiceImpl implements ISysSalesShippingInfor
FillConfig fillConfig = FillConfig.builder().forceNewRow(true).build();
HashMap<String, Object> map = MapUtils.newHashMap();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String shippingDate = dateFormat.format(new Date());
map.put("customerId",salesShippingInform.getCustomerId());
map.put("deliverTime",deliverTime);
map.put("businessMembers",salesShippingInform.getBusinessMembers());
map.put("shippingDate",shippingDate);
map.put("totalMakeNum",totalMakeNum);
map.put("shippingOrderCode",shippingOrderCode);
// 写入数据
workBook.fill(map, sheet);
@ -800,9 +853,11 @@ public class SysSalesShippingInformServiceImpl implements ISysSalesShippingInfor
SysSalesShippingInform sysSalesShippingInform = sysSalesShippingInformMapper.selectSysSalesShippingInformByCode(outOrderCode);
String shippingInformationType = "0";
String shippingTemplateType = "销售出货箱单1";
String salesOrderCode = sysSalesShippingInform.getSalesOrderCode();
//生成出货资料
insertShippingInformation(outOrderCode,shippingInformationType,shippingTemplateType,sysSalesShippingInform);
String salesOrderCode = sysSalesShippingInform.getSalesOrderCode();
String realFileName = salesOrderCode + "-" + fileName.substring(0, fileName.lastIndexOf(".")) + ".xlsx";
@ -810,35 +865,65 @@ public class SysSalesShippingInformServiceImpl implements ISysSalesShippingInfor
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(realFileName, "UTF-8"));
response.setContentType("application/octet-stream");
SysMakeOrder sysMakeOrder = sysMakeOrderMapper.selectMakeOrderBySaleNo(salesOrderCode);
if (sysMakeOrder == null){
log.warn("未找到对应的生产订单,请检查:{}", salesOrderCode);
throw new RuntimeException("未找到对应的生产订单,请检查");
List<String> salesOrderCodes = new ArrayList<>();
if (StringUtils.isNotEmpty(salesOrderCode)){
String[] splitSalesOrderCode = salesOrderCode.split(",");
salesOrderCodes = Arrays.asList(splitSalesOrderCode);
}
Map<String, Object> map = new HashMap<>();
map.put("customerContactBillto",sysSalesShippingInform.getCustomerContactBillto());
map.put("contactAddressBillto",sysSalesShippingInform.getContactAddressBillto());
map.put("customerContact",sysSalesShippingInform.getCustomerContact());
map.put("customerContactAddress",sysSalesShippingInform.getCustomerContactAddress());
//生产订主表的数据
List<SysMakeOrder> sysMakeOrders = sysMakeOrderMapper.selectMakeOrderListBySalesOrderCodes(salesOrderCodes);
//获取销售订单的明细
List<SysSalesOrderChild> sysSalesOrderChildren = salesOrderChildMapper.selectBatchOrderChildListBySalesOrderCode(salesOrderCodes);
Map<String, SysMakeOrder> makeOrderMap = new HashMap<>();
for (SysMakeOrder sysMakeOrder : sysMakeOrders) {
makeOrderMap.put(sysMakeOrder.getSaleNo(),sysMakeOrder);
}
List<ExportShippingPackingDto> shippingPackingDtos = new ArrayList<>();
AtomicInteger index = new AtomicInteger(1);
List<AfterSalesShippingDevice> shippingDeviceList = salesShippingDeviceMapper.selectShippingDeviceBySalesOrderCode(salesOrderCode);
for (AfterSalesShippingDevice shippingDevice : shippingDeviceList) {
for (SysSalesOrderChild sysSalesOrderChild : sysSalesOrderChildren) {
SysMakeOrder sysMakeOrder = makeOrderMap.get(sysSalesOrderChild.getQuoteId());
ExportShippingPackingDto exportShippingPackingDto = new ExportShippingPackingDto();
exportShippingPackingDto.setIndex(index.getAndIncrement());
exportShippingPackingDto.setMaterialDescribe(shippingDevice.getMaterialDescribe());
exportShippingPackingDto.setMaterialModel(shippingDevice.getMaterialModelCode());
exportShippingPackingDto.setMakeNo(shippingDevice.getMakeNo());
exportShippingPackingDto.setMaterialNum(1);
exportShippingPackingDto.setMaterialDescribe(sysSalesOrderChild.getDescribe());
exportShippingPackingDto.setMaterialModel(sysSalesOrderChild.getMaterialModel());
exportShippingPackingDto.setMakeNo(sysMakeOrder.getMakeNo());
exportShippingPackingDto.setMaterialNum(sysSalesOrderChild.getMaterialNum());
exportShippingPackingDto.setBox(null);
exportShippingPackingDto.setOneBox(null);
exportShippingPackingDto.setMeas(null);
exportShippingPackingDto.setTwoBox(null);
exportShippingPackingDto.setTotalGW(null);
exportShippingPackingDto.setTotalNW(null);
shippingPackingDtos.add(exportShippingPackingDto);
}
Map<String, Object> map = new HashMap<>();
map.put("customerContactBillto",sysSalesShippingInform.getCustomerContactBillto());
map.put("contactAddressBillto",sysSalesShippingInform.getContactAddressBillto());
map.put("customerContact",sysSalesShippingInform.getCustomerContact());
map.put("customerContactAddress",sysSalesShippingInform.getCustomerContactAddress());
//构建模板
ExcelWriter workBook = EasyExcel.write(response.getOutputStream()).withTemplate(fileAbsolutePath).build();
WriteSheet sheet = EasyExcel.writerSheet().build();
@ -891,35 +976,60 @@ public class SysSalesShippingInformServiceImpl implements ISysSalesShippingInfor
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(realFileName, "UTF-8"));
response.setContentType("application/octet-stream");
SysMakeOrder sysMakeOrder = sysMakeOrderMapper.selectMakeOrderBySaleNo(salesOrderCode);
if (sysMakeOrder == null){
log.warn("未找到对应的生产订单,请检查:{}", salesOrderCode);
throw new RuntimeException("未找到对应的生产订单,请检查");
List<String> salesOrderCodes = new ArrayList<>();
if (StringUtils.isNotEmpty(salesOrderCode)){
String[] splitSalesOrderCode = salesOrderCode.split(",");
salesOrderCodes = Arrays.asList(splitSalesOrderCode);
}
Map<String, Object> map = new HashMap<>();
map.put("customerContactBillto",sysSalesShippingInform.getCustomerContactBillto());
map.put("contactAddressBillto",sysSalesShippingInform.getContactAddressBillto());
map.put("customerContact",sysSalesShippingInform.getCustomerContact());
map.put("customerContactAddress",sysSalesShippingInform.getCustomerContactAddress());
//生产订主表的数据
List<SysMakeOrder> sysMakeOrders = sysMakeOrderMapper.selectMakeOrderListBySalesOrderCodes(salesOrderCodes);
//获取销售订单的明细
List<SysSalesOrderChild> sysSalesOrderChildren = salesOrderChildMapper.selectBatchOrderChildListBySalesOrderCode(salesOrderCodes);
Map<String, SysMakeOrder> makeOrderMap = new HashMap<>();
for (SysMakeOrder sysMakeOrder : sysMakeOrders) {
makeOrderMap.put(sysMakeOrder.getSaleNo(),sysMakeOrder);
}
List<ExportShippingPackingDto> shippingPackingDtos = new ArrayList<>();
AtomicInteger index = new AtomicInteger(1);
List<AfterSalesShippingDevice> shippingDeviceList = salesShippingDeviceMapper.selectShippingDeviceBySalesOrderCode(salesOrderCode);
for (AfterSalesShippingDevice shippingDevice : shippingDeviceList) {
for (SysSalesOrderChild sysSalesOrderChild : sysSalesOrderChildren) {
SysMakeOrder sysMakeOrder = makeOrderMap.get(sysSalesOrderChild.getQuoteId());
ExportShippingPackingDto exportShippingPackingDto = new ExportShippingPackingDto();
exportShippingPackingDto.setIndex(index.getAndIncrement());
exportShippingPackingDto.setMaterialDescribe(shippingDevice.getMaterialDescribe());
exportShippingPackingDto.setMaterialModel(shippingDevice.getMaterialModelCode());
exportShippingPackingDto.setMakeNo(shippingDevice.getMakeNo());
exportShippingPackingDto.setMaterialNum(1);
exportShippingPackingDto.setMaterialDescribe(sysSalesOrderChild.getDescribe());
exportShippingPackingDto.setMaterialModel(sysSalesOrderChild.getMaterialModel());
exportShippingPackingDto.setMakeNo(sysMakeOrder.getMakeNo());
exportShippingPackingDto.setMaterialNum(sysSalesOrderChild.getMaterialNum());
exportShippingPackingDto.setBox(null);
exportShippingPackingDto.setOneBox(null);
exportShippingPackingDto.setMeas(null);
exportShippingPackingDto.setTwoBox(null);
exportShippingPackingDto.setTotalGW(null);
exportShippingPackingDto.setTotalNW(null);
shippingPackingDtos.add(exportShippingPackingDto);
}
Map<String, Object> map = new HashMap<>();
map.put("customerContactBillto",sysSalesShippingInform.getCustomerContactBillto());
map.put("contactAddressBillto",sysSalesShippingInform.getContactAddressBillto());
map.put("customerContact",sysSalesShippingInform.getCustomerContact());
map.put("customerContactAddress",sysSalesShippingInform.getCustomerContactAddress());
//构建模板
ExcelWriter workBook = EasyExcel.write(response.getOutputStream()).withTemplate(fileAbsolutePath).build();
WriteSheet sheet = EasyExcel.writerSheet().build();
@ -965,51 +1075,83 @@ public class SysSalesShippingInformServiceImpl implements ISysSalesShippingInfor
insertShippingInformation(outOrderCode,shippingInformationType,shippingTemplateType,sysSalesShippingInform);
String salesOrderCode = sysSalesShippingInform.getSalesOrderCode();
SysMakeOrder sysMakeOrder = sysMakeOrderMapper.selectMakeOrderBySaleNo(salesOrderCode);
List<SysSalesOrderChild> sysSalesOrderChildren = salesOrderChildMapper.selectOrderChildListBySalesOrderCode(salesOrderCode);
List<String> salesOrderCodes = new ArrayList<>();
String makeNo = sysMakeOrder.getMakeNo();
if (!StringUtils.isEmpty(makeNo)){
List<AfterSalesShippingDevice> afterSalesShippingDevices = salesShippingDeviceMapper.selectShippingDeviceByMakeNo(makeNo);
if (StringUtils.isNotEmpty(salesOrderCode)){
String[] splitSalesOrderCode = salesOrderCode.split(",");
salesOrderCodes = Arrays.asList(splitSalesOrderCode);
}
Map<String, Object> map = new HashMap<>();
map.put("customerContact",sysSalesShippingInform.getCustomerContact());
map.put("customerContactAddress",sysSalesShippingInform.getCustomerContactAddress());
map.put("customerContactBillto",sysSalesShippingInform.getCustomerContactBillto());
map.put("contactAddressBillto",sysSalesShippingInform.getContactAddressBillto());
//生产订主表的数据
List<SysMakeOrder> sysMakeOrders = sysMakeOrderMapper.selectMakeOrderListBySalesOrderCodes(salesOrderCodes);
//销售订单主表的数据
List<SysSalesOrder> sysSalesOrders = sysSalesOrderMapper.selectSysSalesOrderListByCodeList(salesOrderCodes);
//获取销售订单的明细
List<SysSalesOrderChild> sysSalesOrderChildren = salesOrderChildMapper.selectBatchOrderChildListBySalesOrderCode(salesOrderCodes);
Map<String, SysMakeOrder> makeOrderMap = new HashMap<>();
for (SysMakeOrder sysMakeOrder : sysMakeOrders) {
makeOrderMap.put(sysMakeOrder.getSaleNo(),sysMakeOrder);
}
Map<String, SysSalesOrder> salesOrderMap = new HashMap<>();
for (SysSalesOrder sysSalesOrder : sysSalesOrders) {
salesOrderMap.put(sysSalesOrder.getSalesOrderCode(),sysSalesOrder);
}
ArrayList<ExportShippingInvoiceDto> exportShippingInvoiceDtos = new ArrayList<>();
AtomicInteger index = new AtomicInteger(1);
for (SysSalesOrderChild sysSalesOrderChild : sysSalesOrderChildren) {
ExportShippingInvoiceDto exportShippingInvoiceDto = new ExportShippingInvoiceDto();
SysMakeOrder sysMakeOrder = makeOrderMap.get(sysSalesOrderChild.getQuoteId());
SysSalesOrder sysSalesOrder = salesOrderMap.get(sysSalesOrderChild.getQuoteId());
exportShippingInvoiceDto.setIndex(index.getAndIncrement());
exportShippingInvoiceDto.setMaterialModel(sysSalesOrderChild.getMaterialModel());
exportShippingInvoiceDto.setMaterialName(sysSalesOrderChild.getMaterialName());
exportShippingInvoiceDto.setMaterialNum(1);
exportShippingInvoiceDto.setMaterialNum(sysSalesOrderChild.getMaterialNum());
exportShippingInvoiceDto.setMakeNo(sysMakeOrder.getMakeNo());
if (sysSalesOrderChild.getMaterialUsd() != null) {
exportShippingInvoiceDto.setMaterialUsd(new BigDecimal(sysSalesOrderChild.getMaterialUsd()));
} else {
// 如果 materialUsd 为 null,可以设置为默认值或者保持不变
exportShippingInvoiceDto.setMaterialUsd(BigDecimal.ZERO); // 示例: 设置为0
}
if ("1".equals(sysSalesOrder.getCommonCurrency())){
String materialNoRmb = sysSalesOrderChild.getMaterialNoRmb().toString();
String materialNoRmbSum = sysSalesOrderChild.getMaterialNoRmbSum().toString();
exportShippingInvoiceDto.setMaterialAmount(materialNoRmb + "RMB");
exportShippingInvoiceDto.setMaterialAmountSum(materialNoRmbSum + "RMB");
if (sysSalesOrderChild.getMaterialUsdSum() != null) {
exportShippingInvoiceDto.setMaterialUsdSum(new BigDecimal(sysSalesOrderChild.getMaterialUsdSum()));
} else {
// 如果 materialUsdSum 为 null,可以设置为默认值或者保持不变
exportShippingInvoiceDto.setMaterialUsdSum(BigDecimal.ZERO); // 示例: 设置为0
String materialNoUsd = sysSalesOrderChild.getMaterialNoUsd().toString();
String materialNoUsdSum = sysSalesOrderChild.getMaterialNoUsdSum().toString();
exportShippingInvoiceDto.setMaterialAmount(materialNoUsd + "USD");
exportShippingInvoiceDto.setMaterialAmountSum(materialNoUsdSum + "USD");
}
exportShippingInvoiceDto.setMakeNo(makeNo);
// to do 缺少物料型号
exportShippingInvoiceDtos.add(exportShippingInvoiceDto);
}
Map<String, Object> map = new HashMap<>();
map.put("customerContact",sysSalesShippingInform.getCustomerContact());
map.put("customerContactAddress",sysSalesShippingInform.getCustomerContactAddress());
map.put("customerContactBillto",sysSalesShippingInform.getCustomerContactBillto());
map.put("contactAddressBillto",sysSalesShippingInform.getContactAddressBillto());
ExcelWriter workBook = EasyExcel.write(response.getOutputStream()).withTemplate(fileAbsolutePath).build();
WriteSheet sheet = EasyExcel.writerSheet().build();
FillConfig fillConfig = FillConfig.builder().forceNewRow(true).build();
@ -1053,50 +1195,79 @@ public class SysSalesShippingInformServiceImpl implements ISysSalesShippingInfor
insertShippingInformation(outOrderCode,shippingInformationType,shippingTemplateType,sysSalesShippingInform);
String salesOrderCode = sysSalesShippingInform.getSalesOrderCode();
SysMakeOrder sysMakeOrder = sysMakeOrderMapper.selectMakeOrderBySaleNo(salesOrderCode);
List<SysSalesOrderChild> sysSalesOrderChildren = salesOrderChildMapper.selectOrderChildListBySalesOrderCode(salesOrderCode);
List<String> salesOrderCodes = new ArrayList<>();
String makeNo = sysMakeOrder.getMakeNo();
if (!StringUtils.isEmpty(makeNo)){
List<AfterSalesShippingDevice> afterSalesShippingDevices = salesShippingDeviceMapper.selectShippingDeviceByMakeNo(makeNo);
if (StringUtils.isNotEmpty(salesOrderCode)){
String[] splitSalesOrderCode = salesOrderCode.split(",");
salesOrderCodes = Arrays.asList(splitSalesOrderCode);
}
Map<String, Object> map = new HashMap<>();
map.put("customerContact",sysSalesShippingInform.getCustomerContact());
map.put("customerContactAddress",sysSalesShippingInform.getCustomerContactAddress());
map.put("customerContactBillto",sysSalesShippingInform.getCustomerContactBillto());
map.put("contactAddressBillto",sysSalesShippingInform.getContactAddressBillto());
//生产订主表的数据
List<SysMakeOrder> sysMakeOrders = sysMakeOrderMapper.selectMakeOrderListBySalesOrderCodes(salesOrderCodes);
//销售订单主表的数据
List<SysSalesOrder> sysSalesOrders = sysSalesOrderMapper.selectSysSalesOrderListByCodeList(salesOrderCodes);
//获取销售订单的明细
List<SysSalesOrderChild> sysSalesOrderChildren = salesOrderChildMapper.selectBatchOrderChildListBySalesOrderCode(salesOrderCodes);
Map<String, SysMakeOrder> makeOrderMap = new HashMap<>();
for (SysMakeOrder sysMakeOrder : sysMakeOrders) {
makeOrderMap.put(sysMakeOrder.getSaleNo(),sysMakeOrder);
}
Map<String, SysSalesOrder> salesOrderMap = new HashMap<>();
for (SysSalesOrder sysSalesOrder : sysSalesOrders) {
salesOrderMap.put(sysSalesOrder.getSalesOrderCode(),sysSalesOrder);
}
ArrayList<ExportShippingInvoiceDto> exportShippingInvoiceDtos = new ArrayList<>();
AtomicInteger index = new AtomicInteger(1);
for (SysSalesOrderChild sysSalesOrderChild : sysSalesOrderChildren) {
ExportShippingInvoiceDto exportShippingInvoiceDto = new ExportShippingInvoiceDto();
SysMakeOrder sysMakeOrder = makeOrderMap.get(sysSalesOrderChild.getQuoteId());
SysSalesOrder sysSalesOrder = salesOrderMap.get(sysSalesOrderChild.getQuoteId());
exportShippingInvoiceDto.setIndex(index.getAndIncrement());
exportShippingInvoiceDto.setMaterialModel(sysSalesOrderChild.getMaterialModel());
exportShippingInvoiceDto.setMaterialName(sysSalesOrderChild.getMaterialName());
exportShippingInvoiceDto.setMaterialNum(1);
exportShippingInvoiceDto.setMaterialNum(sysSalesOrderChild.getMaterialNum());
exportShippingInvoiceDto.setMakeNo(sysMakeOrder.getMakeNo());
if (sysSalesOrderChild.getMaterialUsd() != null) {
exportShippingInvoiceDto.setMaterialUsd(new BigDecimal(sysSalesOrderChild.getMaterialUsd()));
} else {
// 如果 materialUsd 为 null,可以设置为默认值或者保持不变
exportShippingInvoiceDto.setMaterialUsd(BigDecimal.ZERO); // 示例: 设置为0
}
if ("1".equals(sysSalesOrder.getCommonCurrency())){
String materialNoRmb = sysSalesOrderChild.getMaterialNoRmb().toString();
String materialNoRmbSum = sysSalesOrderChild.getMaterialNoRmbSum().toString();
exportShippingInvoiceDto.setMaterialAmount(materialNoRmb + "RMB");
exportShippingInvoiceDto.setMaterialAmountSum(materialNoRmbSum + "RMB");
if (sysSalesOrderChild.getMaterialUsdSum() != null) {
exportShippingInvoiceDto.setMaterialUsdSum(new BigDecimal(sysSalesOrderChild.getMaterialUsdSum()));
} else {
// 如果 materialUsdSum 为 null,可以设置为默认值或者保持不变
exportShippingInvoiceDto.setMaterialUsdSum(BigDecimal.ZERO); // 示例: 设置为0
String materialNoUsd = sysSalesOrderChild.getMaterialNoUsd().toString();
String materialNoUsdSum = sysSalesOrderChild.getMaterialNoUsdSum().toString();
exportShippingInvoiceDto.setMaterialAmount(materialNoUsd + "USD");
exportShippingInvoiceDto.setMaterialAmountSum(materialNoUsdSum + "USD");
}
exportShippingInvoiceDto.setMakeNo(makeNo);
// to do 缺少物料型号
exportShippingInvoiceDtos.add(exportShippingInvoiceDto);
}
Map<String, Object> map = new HashMap<>();
map.put("customerContact",sysSalesShippingInform.getCustomerContact());
map.put("customerContactAddress",sysSalesShippingInform.getCustomerContactAddress());
map.put("customerContactBillto",sysSalesShippingInform.getCustomerContactBillto());
map.put("contactAddressBillto",sysSalesShippingInform.getContactAddressBillto());
ExcelWriter workBook = EasyExcel.write(response.getOutputStream()).withTemplate(fileAbsolutePath).build();
WriteSheet sheet = EasyExcel.writerSheet().build();
@ -1119,6 +1290,8 @@ public class SysSalesShippingInformServiceImpl implements ISysSalesShippingInfor
public void exportShippingInformOrder(String outOrderCode, HttpServletResponse response) {
String fileName = "出货通知单.xlsx";
//出货单号:CTD年月日+001三位数流水号
String shippingInformOrderCode = redisCache.generateBillNo("CTD");
try {
String fileAbsolutePath = FileDownloadUtils.getFileAbsolutePath(fileName);
@ -1135,21 +1308,52 @@ public class SysSalesShippingInformServiceImpl implements ISysSalesShippingInfor
insertShippingInformation(outOrderCode,shippingInformationType,shippingTemplateType,sysSalesShippingInform);
String salesOrderCode = sysSalesShippingInform.getSalesOrderCode();
SysMakeOrder sysMakeOrder = sysMakeOrderMapper.selectMakeOrderBySaleNo(salesOrderCode);
List<String> salesOrderCodes = new ArrayList<>();
if (StringUtils.isNotEmpty(salesOrderCode)){
String[] splitSalesOrderCode = salesOrderCode.split(",");
salesOrderCodes = Arrays.asList(splitSalesOrderCode);
}
//生产订主表的数据
List<SysMakeOrder> sysMakeOrders = sysMakeOrderMapper.selectMakeOrderListBySalesOrderCodes(salesOrderCodes);
//获取销售订单的明细
List<SysSalesOrderChild> sysSalesOrderChildren = salesOrderChildMapper.selectBatchOrderChildListBySalesOrderCode(salesOrderCodes);
String realFileName = sysSalesShippingInform.getSalesOrderCode() +"-"+ fileName.substring(0, fileName.lastIndexOf("."))+ ".xlsx";
// 设置响应头,指定文件名和文件类型
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(realFileName, "UTF-8"));
response.setContentType("application/octet-stream");
List<AfterSalesShippingDevice> salesShippingDeviceList = salesShippingDeviceMapper.selectShippingDeviceBySalesOrderCode(salesOrderCode);
Map<String, SysMakeOrder> makeOrderMap = new HashMap<>();
for (SysMakeOrder sysMakeOrder : sysMakeOrders) {
makeOrderMap.put(sysMakeOrder.getSaleNo(),sysMakeOrder);
}
ArrayList<ExportShippingInformOrderDto> shippingInformOrderDtos = new ArrayList<>();
for (AfterSalesShippingDevice afterSalesShippingDevice : salesShippingDeviceList) {
for (SysSalesOrderChild sysSalesOrderChild : sysSalesOrderChildren) {
ExportShippingInformOrderDto shippingInformOrderDto = new ExportShippingInformOrderDto();
shippingInformOrderDto.setDeviceModelCode(afterSalesShippingDevice.getDeviceModelCode());
shippingInformOrderDto.setMaterialName(afterSalesShippingDevice.getMaterialName());
SysMakeOrder sysMakeOrder = makeOrderMap.get(sysSalesOrderChild.getQuoteId());
shippingInformOrderDto.setCustomerOrderCode(sysMakeOrder.getCustomerOderCode());
shippingInformOrderDto.setMakeNo(sysMakeOrder.getMakeNo());
shippingInformOrderDto.setSalesOrderCode(sysMakeOrder.getSaleNo());
shippingInformOrderDto.setMaterialName(sysSalesOrderChild.getMaterialName());
shippingInformOrderDto.setMaterialModel(sysSalesOrderChild.getMaterialModel());
shippingInformOrderDto.setMaterialNum(sysSalesOrderChild.getMaterialNum());
shippingInformOrderDto.setLogo(null);
shippingInformOrderDto.setRemark(null);
shippingInformOrderDto.setTrackingCode(null);
shippingInformOrderDtos.add(shippingInformOrderDto);
}
@ -1158,12 +1362,9 @@ public class SysSalesShippingInformServiceImpl implements ISysSalesShippingInfor
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String shippingDate = dateFormat.format(new Date());
map.put("makeNo",sysMakeOrder.getMakeNo());
map.put("salesOrderNumber",sysSalesShippingInform.getSalesOrderNumber());
map.put("customerContactAddress",sysSalesShippingInform.getCustomerContactAddress());
map.put("shippingInformOrderCode",shippingInformOrderCode);
map.put("shippingDate",shippingDate);
map.put("customerName",sysSalesShippingInform.getCustomerName());
map.put("businessMembers",sysSalesShippingInform.getBusinessMembers());
ExcelWriter workBook = EasyExcel.write(response.getOutputStream()).withTemplate(fileAbsolutePath).build();
WriteSheet sheet = EasyExcel.writerSheet().build();

116
ruoyi-admin/src/main/java/com/ruoyi/warehouse/domain/WarehouseInventoryInquiry.java

@ -67,27 +67,39 @@ public class WarehouseInventoryInquiry extends BaseEntity
/** 物料历史总数量 */
@Excel(name = "物料历史总数量", sort = 8)
private BigDecimal historicalTotal;
private Integer historicalTotal;
/** 共享可用库存数 */
private Integer sharedAvailableStockNum;
/** 固定可用库存数*/
private Integer fixedAvailableStockNum;
/** 锁定库存数*/
private Integer lockStockNum;
/** 盘亏数*/
private Integer stockLossesNum;
/** 可用库存数 */
@Excel(name = "可用库存数", sort = 9)
private BigDecimal availableStockNum;
private Integer availableStockNum;
/** 物料归属可用库存数 */
// @Excel(name = "物料归属可用库存数")
private BigDecimal attributionAvailableStockNum;
private Integer attributionAvailableStockNum;
/** 物料无归属可用库存数 */
// @Excel(name = "物料无归属可用库存数")
private BigDecimal noattributionAvailableStockNum;
private Integer noattributionAvailableStockNum;
/** 物料使用数 */
@Excel(name = "使用数", sort = 10)
private BigDecimal useNum;
private Integer useNum;
/** 物料报损数 */
@Excel(name = "报损数", sort = 11)
private BigDecimal reportDamageNum;
private Integer reportDamageNum;
/** 物料使用状态(0 使用中、1 已作废) */
@Excel(name = "使用状态", sort = 12, dictType = "useStatus")
@ -200,60 +212,88 @@ public class WarehouseInventoryInquiry extends BaseEntity
{
return materialSpecification;
}
public void setHistoricalTotal(BigDecimal historicalTotal)
{
public Integer getHistoricalTotal() {
return historicalTotal;
}
public void setHistoricalTotal(Integer historicalTotal) {
this.historicalTotal = historicalTotal;
}
public BigDecimal getHistoricalTotal()
{
return historicalTotal;
public Integer getSharedAvailableStockNum() {
return sharedAvailableStockNum;
}
public void setAvailableStockNum(BigDecimal availableStockNum)
{
this.availableStockNum = availableStockNum;
public void setSharedAvailableStockNum(Integer sharedAvailableStockNum) {
this.sharedAvailableStockNum = sharedAvailableStockNum;
}
public BigDecimal getAvailableStockNum()
{
public Integer getFixedAvailableStockNum() {
return fixedAvailableStockNum;
}
public void setFixedAvailableStockNum(Integer fixedAvailableStockNum) {
this.fixedAvailableStockNum = fixedAvailableStockNum;
}
public Integer getLockStockNum() {
return lockStockNum;
}
public void setLockStockNum(Integer lockStockNum) {
this.lockStockNum = lockStockNum;
}
public Integer getStockLossesNum() {
return stockLossesNum;
}
public void setStockLossesNum(Integer stockLossesNum) {
this.stockLossesNum = stockLossesNum;
}
public Integer getAvailableStockNum() {
return availableStockNum;
}
public void setAttributionAvailableStockNum(BigDecimal attributionAvailableStockNum)
{
this.attributionAvailableStockNum = attributionAvailableStockNum;
public void setAvailableStockNum(Integer availableStockNum) {
this.availableStockNum = availableStockNum;
}
public BigDecimal getAttributionAvailableStockNum()
{
public Integer getAttributionAvailableStockNum() {
return attributionAvailableStockNum;
}
public void setNoattributionAvailableStockNum(BigDecimal noattributionAvailableStockNum)
{
this.noattributionAvailableStockNum = noattributionAvailableStockNum;
public void setAttributionAvailableStockNum(Integer attributionAvailableStockNum) {
this.attributionAvailableStockNum = attributionAvailableStockNum;
}
public BigDecimal getNoattributionAvailableStockNum()
{
public Integer getNoattributionAvailableStockNum() {
return noattributionAvailableStockNum;
}
public void setUseNum(BigDecimal useNum)
{
this.useNum = useNum;
public void setNoattributionAvailableStockNum(Integer noattributionAvailableStockNum) {
this.noattributionAvailableStockNum = noattributionAvailableStockNum;
}
public BigDecimal getUseNum()
{
public Integer getUseNum() {
return useNum;
}
public void setReportDamageNum(BigDecimal reportDamageNum)
{
this.reportDamageNum = reportDamageNum;
public void setUseNum(Integer useNum) {
this.useNum = useNum;
}
public BigDecimal getReportDamageNum()
{
public Integer getReportDamageNum() {
return reportDamageNum;
}
public void setReportDamageNum(Integer reportDamageNum) {
this.reportDamageNum = reportDamageNum;
}
public void setMaterialUseStatus(String materialUseStatus)
{
this.materialUseStatus = materialUseStatus;
@ -307,6 +347,10 @@ public class WarehouseInventoryInquiry extends BaseEntity
.append("materialModel", getMaterialModel())
.append("materialSpecification", getMaterialSpecification())
.append("historicalTotal", getHistoricalTotal())
.append("sharedAvailableStockNum", getSharedAvailableStockNum())
.append("fixedAvailableStockNum", getFixedAvailableStockNum())
.append("lockStockNum", getLockStockNum())
.append("stockLossesNum", getStockLossesNum())
.append("availableStockNum", getAvailableStockNum())
.append("attributionAvailableStockNum", getAttributionAvailableStockNum())
.append("noattributionAvailableStockNum", getNoattributionAvailableStockNum())

358
ruoyi-admin/src/main/java/com/ruoyi/warehouse/domain/WarehouseInventoryInquiryDetail.java

@ -1,6 +1,5 @@
package com.ruoyi.warehouse.domain;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
@ -12,7 +11,7 @@ import com.ruoyi.common.core.domain.BaseEntity;
* 仓库库存查询详情对象 warehouse_inventory_inquiry_detail
*
* @author 刘晓旭
* @date 2024-06-06
* @date 2024-12-03
*/
public class WarehouseInventoryInquiryDetail extends BaseEntity
{
@ -22,100 +21,41 @@ public class WarehouseInventoryInquiryDetail extends BaseEntity
private Long inventoryInquiryDetailId;
/** 料号 */
@Excel(name = "料号")
private String materialNo;
/** 物料名称 */
private String materialName;
/** 关联单号 */
@Excel(name = "关联单号")
private String correlationCode;
/** 物料类型 */
private String materialType;
/** 库存查询业务类型(0采购、1生产、2委外、3退换货、4库存盘点、5开发修改、6销售、7员工服务、8库存报损) */
@Excel(name = "库存查询业务类型")
private String inquiryBusinessType;
/** 物料图片地址 */
private String materialPhotourl;
/** 库存查询订单类型(0采购入库单、1生产入库单、2委外入库单、3退换货单、4库存盘点单、5换货入库单、6生产退料单、7开发退料单、8委外退料单、9员工退料单、10员工领料单、11生产领料单、12委外领料单、13开发领料单、14销售出货单、15退换货单、16库存报损单) */
@Excel(name = "库存查询订单类型")
private String inquiryOrderType;
/** 物料品牌 */
private String materialBrand;
/** 库存查询出入库类型(0采购入库、供应商补货、1生产入库、2委外入库、3公司退货入库、4盘盈、5供应商换货、6生产退料、7开发退料、8委外退料、9员工退料10员工领料、11生产领料、12委外领料、13开发领料、14销售出库、15公司退货出库、16盘亏、17报损) */
@Excel(name = "库存查询出入库类型")
private String inquiryWarehouseType;
/** 物料单位 */
private String materialUnit;
/** 物料描述 */
private String materialDescribe;
/** 物料加工方式 */
private String materialProcessMethod;
/** 物料型号 */
private String materialModel;
/** 物料规格 */
private String materialSpecification;
/** 物料历史总数量 */
private BigDecimal historicalTotal;
/** 可用库存数 */
private BigDecimal availableStockNum;
/** 物料归属可用库存数 */
private BigDecimal attributionAvailableStockNum;
/** 物料无归属可用库存数 */
private BigDecimal noattributionAvailableStockNum;
/** 物料使用数 */
private BigDecimal useNum;
/** 物料报损数 */
private BigDecimal reportDamageNum;
/** 物料使用状态 */
private String materialUseStatus;
/** 库存归属单号 */
@Excel(name = "库存归属单号")
private String inventoryAttributionCode;
/** 库存使用单号 */
@Excel(name = "库存使用单号")
private String inventoryUseCode;
/** 出货设备ID */
@Excel(name = "出货设备ID")
private String shippingDeviceId;
/** 库存历史时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@Excel(name = "库存历史时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "库存历史时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date inventoryHistoricalTime;
/** 库存历史类型 */
@Excel(name = "库存历史类型")
private String inventoryHistoricalType;
/** 库存增减 */
@Excel(name = "库存增减")
/** 库存增减(0减少、1增加) */
@Excel(name = "库存增减(0减少、1增加)")
private String inventoryIncreaseDecrease;
/** 库存历史数量 */
@Excel(name = "库存历史数量")
private BigDecimal inventoryHistoricalNum;
/** 不含税采购总价 */
@Excel(name = "不含税单价")
private BigDecimal purchasePriceExcludingTax;
/** 含税总价 */
@Excel(name = "含税单价")
private BigDecimal purchasePriceIncludesTax;
/** 采购单号 */
@Excel(name = "采购单号")
private String purchaseOrderCode;
/** 供应商ID */
@Excel(name = "供应商ID")
private String supplierCode;
/** 供应商名称 */
@Excel(name = "供应商名称")
private String supplierName;
/** 增减数量 */
@Excel(name = "增减数量")
private Integer increaseDecreaseNum;
public void setInventoryInquiryDetailId(Long inventoryInquiryDetailId)
{
@ -135,167 +75,50 @@ public class WarehouseInventoryInquiryDetail extends BaseEntity
{
return materialNo;
}
public void setMaterialName(String materialName)
{
this.materialName = materialName;
}
public String getMaterialName()
{
return materialName;
}
public void setMaterialType(String materialType)
{
this.materialType = materialType;
}
public String getMaterialType()
{
return materialType;
}
public void setMaterialPhotourl(String materialPhotourl)
{
this.materialPhotourl = materialPhotourl;
}
public String getMaterialPhotourl()
{
return materialPhotourl;
}
public void setMaterialBrand(String materialBrand)
{
this.materialBrand = materialBrand;
}
public String getMaterialBrand()
{
return materialBrand;
}
public void setMaterialUnit(String materialUnit)
{
this.materialUnit = materialUnit;
}
public String getMaterialUnit()
{
return materialUnit;
}
public void setMaterialDescribe(String materialDescribe)
{
this.materialDescribe = materialDescribe;
}
public String getMaterialDescribe()
{
return materialDescribe;
}
public void setMaterialProcessMethod(String materialProcessMethod)
{
this.materialProcessMethod = materialProcessMethod;
}
public String getMaterialProcessMethod()
{
return materialProcessMethod;
}
public void setMaterialModel(String materialModel)
{
this.materialModel = materialModel;
}
public String getMaterialModel()
{
return materialModel;
}
public void setMaterialSpecification(String materialSpecification)
{
this.materialSpecification = materialSpecification;
}
public String getMaterialSpecification()
{
return materialSpecification;
}
public void setHistoricalTotal(BigDecimal historicalTotal)
public void setCorrelationCode(String correlationCode)
{
this.historicalTotal = historicalTotal;
this.correlationCode = correlationCode;
}
public BigDecimal getHistoricalTotal()
public String getCorrelationCode()
{
return historicalTotal;
return correlationCode;
}
public void setAvailableStockNum(BigDecimal availableStockNum)
public void setInquiryBusinessType(String inquiryBusinessType)
{
this.availableStockNum = availableStockNum;
this.inquiryBusinessType = inquiryBusinessType;
}
public BigDecimal getAvailableStockNum()
public String getInquiryBusinessType()
{
return availableStockNum;
return inquiryBusinessType;
}
public void setAttributionAvailableStockNum(BigDecimal attributionAvailableStockNum)
public void setInquiryOrderType(String inquiryOrderType)
{
this.attributionAvailableStockNum = attributionAvailableStockNum;
this.inquiryOrderType = inquiryOrderType;
}
public BigDecimal getAttributionAvailableStockNum()
public String getInquiryOrderType()
{
return attributionAvailableStockNum;
return inquiryOrderType;
}
public void setNoattributionAvailableStockNum(BigDecimal noattributionAvailableStockNum)
public void setInquiryWarehouseType(String inquiryWarehouseType)
{
this.noattributionAvailableStockNum = noattributionAvailableStockNum;
this.inquiryWarehouseType = inquiryWarehouseType;
}
public BigDecimal getNoattributionAvailableStockNum()
public String getInquiryWarehouseType()
{
return noattributionAvailableStockNum;
return inquiryWarehouseType;
}
public void setUseNum(BigDecimal useNum)
public void setShippingDeviceId(String shippingDeviceId)
{
this.useNum = useNum;
this.shippingDeviceId = shippingDeviceId;
}
public BigDecimal getUseNum()
public String getShippingDeviceId()
{
return useNum;
}
public void setReportDamageNum(BigDecimal reportDamageNum)
{
this.reportDamageNum = reportDamageNum;
}
public BigDecimal getReportDamageNum()
{
return reportDamageNum;
}
public void setMaterialUseStatus(String materialUseStatus)
{
this.materialUseStatus = materialUseStatus;
}
public String getMaterialUseStatus()
{
return materialUseStatus;
}
public void setInventoryAttributionCode(String inventoryAttributionCode)
{
this.inventoryAttributionCode = inventoryAttributionCode;
}
public String getInventoryAttributionCode()
{
return inventoryAttributionCode;
}
public void setInventoryUseCode(String inventoryUseCode)
{
this.inventoryUseCode = inventoryUseCode;
}
public String getInventoryUseCode()
{
return inventoryUseCode;
return shippingDeviceId;
}
public void setInventoryHistoricalTime(Date inventoryHistoricalTime)
{
@ -306,15 +129,6 @@ public class WarehouseInventoryInquiryDetail extends BaseEntity
{
return inventoryHistoricalTime;
}
public void setInventoryHistoricalType(String inventoryHistoricalType)
{
this.inventoryHistoricalType = inventoryHistoricalType;
}
public String getInventoryHistoricalType()
{
return inventoryHistoricalType;
}
public void setInventoryIncreaseDecrease(String inventoryIncreaseDecrease)
{
this.inventoryIncreaseDecrease = inventoryIncreaseDecrease;
@ -324,59 +138,14 @@ public class WarehouseInventoryInquiryDetail extends BaseEntity
{
return inventoryIncreaseDecrease;
}
public void setInventoryHistoricalNum(BigDecimal inventoryHistoricalNum)
{
this.inventoryHistoricalNum = inventoryHistoricalNum;
}
public BigDecimal getInventoryHistoricalNum()
{
return inventoryHistoricalNum;
}
public void setPurchasePriceExcludingTax(BigDecimal purchasePriceExcludingTax)
{
this.purchasePriceExcludingTax = purchasePriceExcludingTax;
}
public BigDecimal getPurchasePriceExcludingTax()
{
return purchasePriceExcludingTax;
}
public void setPurchasePriceIncludesTax(BigDecimal purchasePriceIncludesTax)
{
this.purchasePriceIncludesTax = purchasePriceIncludesTax;
}
public BigDecimal getPurchasePriceIncludesTax()
{
return purchasePriceIncludesTax;
}
public void setPurchaseOrderCode(String purchaseOrderCode)
{
this.purchaseOrderCode = purchaseOrderCode;
}
public String getPurchaseOrderCode()
{
return purchaseOrderCode;
}
public void setSupplierCode(String supplierCode)
{
this.supplierCode = supplierCode;
}
public String getSupplierCode()
{
return supplierCode;
}
public void setSupplierName(String supplierName)
public void setIncreaseDecreaseNum(Integer increaseDecreaseNum)
{
this.supplierName = supplierName;
this.increaseDecreaseNum = increaseDecreaseNum;
}
public String getSupplierName()
public Integer getIncreaseDecreaseNum()
{
return supplierName;
return increaseDecreaseNum;
}
@Override
@ -384,33 +153,14 @@ public class WarehouseInventoryInquiryDetail extends BaseEntity
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("inventoryInquiryDetailId", getInventoryInquiryDetailId())
.append("materialNo", getMaterialNo())
.append("materialName", getMaterialName())
.append("materialType", getMaterialType())
.append("materialPhotourl", getMaterialPhotourl())
.append("materialBrand", getMaterialBrand())
.append("materialUnit", getMaterialUnit())
.append("materialDescribe", getMaterialDescribe())
.append("materialProcessMethod", getMaterialProcessMethod())
.append("materialModel", getMaterialModel())
.append("materialSpecification", getMaterialSpecification())
.append("historicalTotal", getHistoricalTotal())
.append("availableStockNum", getAvailableStockNum())
.append("attributionAvailableStockNum", getAttributionAvailableStockNum())
.append("noattributionAvailableStockNum", getNoattributionAvailableStockNum())
.append("useNum", getUseNum())
.append("reportDamageNum", getReportDamageNum())
.append("materialUseStatus", getMaterialUseStatus())
.append("inventoryAttributionCode", getInventoryAttributionCode())
.append("inventoryUseCode", getInventoryUseCode())
.append("correlationCode", getCorrelationCode())
.append("inquiryBusinessType", getInquiryBusinessType())
.append("inquiryOrderType", getInquiryOrderType())
.append("inquiryWarehouseType", getInquiryWarehouseType())
.append("shippingDeviceId", getShippingDeviceId())
.append("inventoryHistoricalTime", getInventoryHistoricalTime())
.append("inventoryHistoricalType", getInventoryHistoricalType())
.append("inventoryIncreaseDecrease", getInventoryIncreaseDecrease())
.append("inventoryHistoricalNum", getInventoryHistoricalNum())
.append("purchasePriceExcludingTax", getPurchasePriceExcludingTax())
.append("purchasePriceIncludesTax", getPurchasePriceIncludesTax())
.append("purchaseOrderCode", getPurchaseOrderCode())
.append("supplierCode", getSupplierCode())
.append("supplierName", getSupplierName())
.append("increaseDecreaseNum", getIncreaseDecreaseNum())
.append("remark", getRemark())
.append("createTime", getCreateTime())
.append("createBy", getCreateBy())

26
ruoyi-admin/src/main/java/com/ruoyi/warehouse/domain/WarehouseInventoryReportDamage.java

@ -55,11 +55,11 @@ public class WarehouseInventoryReportDamage extends BaseEntity
/** 物料数合计 */
@Excel(name = "物料数合计")
private int materialTotal;
private Integer materialTotal;
/** 数量合计 */
@Excel(name = "数量合计")
private BigDecimal numTotal;
private Integer numTotal;
/** 仓库ID */
@Excel(name = "仓库ID")
@ -198,24 +198,24 @@ public class WarehouseInventoryReportDamage extends BaseEntity
{
return materialName;
}
public void setMaterialTotal(int materialTotal)
{
this.materialTotal = materialTotal;
}
public int getMaterialTotal()
{
public Integer getMaterialTotal() {
return materialTotal;
}
public void setNumTotal(BigDecimal numTotal)
{
this.numTotal = numTotal;
public void setMaterialTotal(Integer materialTotal) {
this.materialTotal = materialTotal;
}
public BigDecimal getNumTotal()
{
public Integer getNumTotal() {
return numTotal;
}
public void setNumTotal(Integer numTotal) {
this.numTotal = numTotal;
}
public void setWarehouseCode(String warehouseCode)
{
this.warehouseCode = warehouseCode;

14
ruoyi-admin/src/main/java/com/ruoyi/warehouse/domain/WarehouseInventoryReportDamageChild.java

@ -59,7 +59,7 @@ public class WarehouseInventoryReportDamageChild extends BaseEntity
/** 实际报废数量 */
@Excel(name = "实际报废数量", sort = 6)
private BigDecimal actualScrapQuantity;
private Integer actualScrapQuantity;
/** 报废类型 */
@Excel(name = "报废类型", sort = 8)
@ -189,15 +189,15 @@ public class WarehouseInventoryReportDamageChild extends BaseEntity
{
return materialBrand;
}
public void setActualScrapQuantity(BigDecimal actualScrapQuantity)
{
this.actualScrapQuantity = actualScrapQuantity;
}
public BigDecimal getActualScrapQuantity()
{
public Integer getActualScrapQuantity() {
return actualScrapQuantity;
}
public void setActualScrapQuantity(Integer actualScrapQuantity) {
this.actualScrapQuantity = actualScrapQuantity;
}
public void setScrapType(String scrapType)
{
this.scrapType = scrapType;

38
ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseInventoryReportDamageServiceImpl.java

@ -195,7 +195,7 @@ public class WarehouseInventoryReportDamageServiceImpl implements IWarehouseInve
String loginName = ShiroUtils.getLoginName();
warehouseInventoryReportDamage.setCreateBy(loginName);
warehouseInventoryReportDamage.setCreateTime(DateUtils.getNowDate());
BigDecimal sumTotal = BigDecimal.ZERO;
Integer sumTotal = 0;
//报损子表数据
//判断子表数据是否为空
if(StringUtils.isNotEmpty(warehouseInventoryReportDamage.getWarehouseInventoryReportDamageChildList())){
@ -206,7 +206,7 @@ public class WarehouseInventoryReportDamageServiceImpl implements IWarehouseInve
throw new BusinessException("物料"+reportDamageChild.getMaterialNo()+"库存查询记录为空!请检查");
}
//子表数据不为空,则插入子表数据
sumTotal = sumTotal.add(reportDamageChild.getActualScrapQuantity());
sumTotal += reportDamageChild.getActualScrapQuantity();
reportDamageChild.setMakeNo(warehouseInventoryReportDamage.getMakeNo());
reportDamageChild.setReportDamageCode(newCode);
if(warehouseInventoryReportDamage.getApplyTime()!=null){
@ -237,17 +237,17 @@ public class WarehouseInventoryReportDamageServiceImpl implements IWarehouseInve
throw new BusinessException("新增库存报损失败,该物料无库存数据");
}
WarehouseInventoryInquiryDetail inquiryDetail = createWarehouseInventoryInquiryDetail(damageChild);
inquiryDetail.setInventoryHistoricalType("9");
// inquiryDetail.setInventoryHistoricalType("9");
int detailInsertResult = inventoryInquiryDetailMapper.insertWarehouseInventoryInquiryDetail(inquiryDetail);
if(detailInsertResult<=0){
throw new BusinessException("新增库存历史失败!");
}
BigDecimal reportDamageNum = inventoryInquiry.getReportDamageNum();
reportDamageNum = reportDamageNum.add(damageChild.getActualScrapQuantity());
inventoryInquiry.setReportDamageNum(reportDamageNum);
BigDecimal availableNum = inventoryInquiry.getAvailableStockNum();
availableNum = availableNum.subtract(damageChild.getActualScrapQuantity());
inventoryInquiry.setAvailableStockNum(availableNum);
// BigDecimal reportDamageNum = inventoryInquiry.getReportDamageNum();
// reportDamageNum = reportDamageNum.add(damageChild.getActualScrapQuantity());
// inventoryInquiry.setReportDamageNum(reportDamageNum);
// BigDecimal availableNum = inventoryInquiry.getAvailableStockNum();
// availableNum = availableNum.subtract(damageChild.getActualScrapQuantity());
// inventoryInquiry.setAvailableStockNum(availableNum);
inventoryInquiry.setUpdateBy(ShiroUtils.getLoginName());
inventoryInquiry.setUpdateTime(DateUtils.getNowDate());
return inventoryInquiryMapper.updateWarehouseInventoryInquiry(inventoryInquiry);
@ -257,15 +257,15 @@ public class WarehouseInventoryReportDamageServiceImpl implements IWarehouseInve
public WarehouseInventoryInquiryDetail createWarehouseInventoryInquiryDetail(WarehouseInventoryReportDamageChild damageChild){
WarehouseInventoryInquiryDetail inquiryDetail = new WarehouseInventoryInquiryDetail();
inquiryDetail.setMaterialNo(damageChild.getMaterialNo());
inquiryDetail.setMaterialName(damageChild.getMaterialName());
inquiryDetail.setMaterialBrand(damageChild.getMaterialBrand());
inquiryDetail.setMaterialPhotourl(damageChild.getMaterialPhotourl());
inquiryDetail.setMaterialDescribe(damageChild.getMaterialDescribe());
inquiryDetail.setMaterialUnit(damageChild.getMaterialUnit());
inquiryDetail.setMaterialType(damageChild.getMaterialType());
// inquiryDetail.setMaterialName(damageChild.getMaterialName());
// inquiryDetail.setMaterialBrand(damageChild.getMaterialBrand());
// inquiryDetail.setMaterialPhotourl(damageChild.getMaterialPhotourl());
// inquiryDetail.setMaterialDescribe(damageChild.getMaterialDescribe());
// inquiryDetail.setMaterialUnit(damageChild.getMaterialUnit());
// inquiryDetail.setMaterialType(damageChild.getMaterialType());
inquiryDetail.setInventoryIncreaseDecrease("0");
BigDecimal decreaseNum = damageChild.getActualScrapQuantity();
inquiryDetail.setAvailableStockNum(decreaseNum);
Integer decreaseNum = damageChild.getActualScrapQuantity();
// inquiryDetail.setAvailableStockNum(decreaseNum);
inquiryDetail.setInventoryHistoricalTime(DateUtils.getNowDate());
inquiryDetail.setCreateBy(ShiroUtils.getLoginName());
inquiryDetail.setCreateTime(DateUtils.getNowDate());
@ -283,13 +283,13 @@ public class WarehouseInventoryReportDamageServiceImpl implements IWarehouseInve
String loginName = ShiroUtils.getLoginName();
warehouseInventoryReportDamage.setUpdateBy(loginName);
warehouseInventoryReportDamage.setUpdateTime(DateUtils.getNowDate());
BigDecimal sumTotal = BigDecimal.ZERO;
Integer sumTotal = 0;
if(StringUtils.isNotEmpty(warehouseInventoryReportDamage.getWarehouseInventoryReportDamageChildList())){
//清除现在的子表信息
warehouseInventoryReportDamageChildService.deleteWarehouseInventoryReportDamageChildByCode(warehouseInventoryReportDamage.getReportDamageCode());
for(WarehouseInventoryReportDamageChild warehouseInventoryReportDamageChild:warehouseInventoryReportDamage.getWarehouseInventoryReportDamageChildList()){
//子表数据不为空,则插入子表数据
sumTotal = sumTotal.add(warehouseInventoryReportDamageChild.getActualScrapQuantity());
sumTotal += warehouseInventoryReportDamageChild.getActualScrapQuantity();
warehouseInventoryReportDamageChild.setMakeNo(warehouseInventoryReportDamage.getMakeNo());
warehouseInventoryReportDamageChild.setReportDamageCode(warehouseInventoryReportDamage.getReportDamageCode());
warehouseInventoryReportDamageChild.setCreateTime(DateUtils.getNowDate());

25
ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseOutOrderServiceImpl.java

@ -568,16 +568,16 @@ public class WarehouseOutOrderServiceImpl implements IWarehouseOutOrderService
// 更新物料对应库存查询记录
public int updateWarehouseInventoryInquiry(WarehouseOutOrderDetail outOrderDetail,WarehouseInventoryInquiry inventoryInquiry){
// 更新可用库存数
BigDecimal stockNum = inventoryInquiry.getAvailableStockNum();
if((stockNum.compareTo(BigDecimal.ZERO) <= 0)){
Integer stockNum = inventoryInquiry.getAvailableStockNum();
if(stockNum <= 0){
throw new BusinessException("出库失败!该物料无可用库存数");
}
int outNum = outOrderDetail.getActualOutOrderSum();
stockNum = stockNum.subtract(BigDecimal.valueOf(outNum));
stockNum -= outNum;
inventoryInquiry.setAvailableStockNum(stockNum);
// 更新使用数
BigDecimal useNum = inventoryInquiry.getUseNum();
useNum = useNum.add(BigDecimal.valueOf(outNum));
Integer useNum = inventoryInquiry.getUseNum();
useNum += outNum;
inventoryInquiry.setUseNum(useNum);
inventoryInquiry.setUpdateBy(ShiroUtils.getLoginName());
@ -591,17 +591,12 @@ public class WarehouseOutOrderServiceImpl implements IWarehouseOutOrderService
public WarehouseInventoryInquiryDetail createWarehouseInventoryInquiryDetail(WarehouseOutOrderDetail outOrderDetail){
WarehouseInventoryInquiryDetail inquiryDetail = new WarehouseInventoryInquiryDetail();
inquiryDetail.setMaterialNo(outOrderDetail.getMaterialNo());
inquiryDetail.setMaterialName(outOrderDetail.getMaterialName());
inquiryDetail.setMaterialBrand(outOrderDetail.getMaterialBrand());
inquiryDetail.setMaterialPhotourl(outOrderDetail.getMaterialPhotourl());
inquiryDetail.setMaterialDescribe(outOrderDetail.getMaterialDescribe());
inquiryDetail.setMaterialUnit(outOrderDetail.getMaterialUnit());
inquiryDetail.setMaterialType(outOrderDetail.getMaterialType());
inquiryDetail.setInventoryIncreaseDecrease("0");
int decreaseNum = outOrderDetail.getActualOutOrderSum();
BigDecimal useNum = BigDecimal.valueOf(decreaseNum);
inquiryDetail.setUseNum(useNum);
inquiryDetail.setAvailableStockNum(useNum);
// inquiryDetail.setUseNum(useNum);
// inquiryDetail.setAvailableStockNum(useNum);
inquiryDetail.setInventoryHistoricalTime(DateUtils.getNowDate());
inquiryDetail.setCreateBy(ShiroUtils.getLoginName());
inquiryDetail.setCreateTime(DateUtils.getNowDate());
@ -1361,7 +1356,7 @@ public class WarehouseOutOrderServiceImpl implements IWarehouseOutOrderService
throw new BusinessException("更新库存查询数据失败");
}
WarehouseInventoryInquiryDetail inquiryDetail = createWarehouseInventoryInquiryDetail(warehouseOutOrderDetail);
inquiryDetail.setInventoryHistoricalType("5");//委外领料
// inquiryDetail.setInventoryHistoricalType("5");//委外领料
int insertInquiryResult = inventoryInquiryDetailMapper.insertWarehouseInventoryInquiryDetail(inquiryDetail);
if (insertInquiryResult <= 0){
throw new BusinessException("新增库存历史数据失败");
@ -1460,7 +1455,7 @@ public class WarehouseOutOrderServiceImpl implements IWarehouseOutOrderService
throw new BusinessException("更新库存查询数据失败");
}
WarehouseInventoryInquiryDetail inquiryDetail = createWarehouseInventoryInquiryDetail(warehouseOutOrderDetail);
inquiryDetail.setInventoryHistoricalType("6");//员工领料
// inquiryDetail.setInventoryHistoricalType("6");//员工领料
int insertInquiryResult = inventoryInquiryDetailMapper.insertWarehouseInventoryInquiryDetail(inquiryDetail);
if (insertInquiryResult <= 0){
throw new BusinessException("新增库存历史数据失败");

54
ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseStorageOrderServiceImpl.java

@ -724,7 +724,7 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS
int storageNum = warehouseStorageOrderDetail.getStorageNum();
WarehouseInventoryInquiryDetail inquiryDetail = new WarehouseInventoryInquiryDetail();
inquiryDetail = generateInquiryDetailByPurchaseChild(child,storageNum);
inquiryDetail.setInventoryHistoricalType("0");
// inquiryDetail.setInventoryHistoricalType("0");
// if (correlationCode.startsWith("QG")) {
//// 有无归属分类
// }
@ -734,21 +734,21 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS
}else if(warehouseStorageType.equals("5")){//新增生产入库库存历史记录
WarehouseInventoryInquiryDetail inquiryDetail = new WarehouseInventoryInquiryDetail();
inquiryDetail = createMakeInOrderInquiryDetail(warehouseStorageOrderDetail);
inquiryDetail.setInventoryHistoricalType("1");
// inquiryDetail.setInventoryHistoricalType("1");
inventoryInquiryDetailMapper.insertWarehouseInventoryInquiryDetail(inquiryDetail);
}else if(warehouseStorageType.equals("4")){//新增委外入库库存历史记录
WarehouseInventoryInquiryDetail inquiryDetail = new WarehouseInventoryInquiryDetail();
inquiryDetail = createMakeInOrderInquiryDetail(warehouseStorageOrderDetail);
inquiryDetail.setInventoryHistoricalType("2");
// inquiryDetail.setInventoryHistoricalType("2");
inventoryInquiryDetailMapper.insertWarehouseInventoryInquiryDetail(inquiryDetail);
}
//查询该物料报损数,更新库存查询报损数
List<WarehouseInventoryReportDamageChild> damageChildren = damageChildMapper.selectWarehouseInventoryReportDamageChildByMaterialNo(materialNo);
BigDecimal scrapSum = BigDecimal.ZERO;
Integer scrapSum = 0;
if(StringUtils.isNotEmpty(damageChildren)){
for (WarehouseInventoryReportDamageChild damageChild:damageChildren) {
BigDecimal scrapNum = damageChild.getActualScrapQuantity();
scrapSum = scrapSum.add(scrapNum);
Integer scrapNum = damageChild.getActualScrapQuantity();
scrapSum += scrapSum;
}
}
// 存在库存查询记录,更新可用库存数
@ -756,14 +756,14 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS
WarehouseInventoryInquiry inventoryInquiry = warehouseInventoryInquiryMapper.selectWarehouseInventoryInquiryByMaterialNo(materialNo);
// 增加可用库存数
Integer storage = warehouseStorageOrderDetail.getStorageNum();
BigDecimal storagenum = BigDecimal.valueOf(storage);
BigDecimal avaliableStorage = inventoryInquiry.getAvailableStockNum();
avaliableStorage = avaliableStorage.add(storagenum);
Integer storagenum = storage;
Integer avaliableStorage = inventoryInquiry.getAvailableStockNum();
avaliableStorage += storagenum;
inventoryInquiry.setAvailableStockNum(avaliableStorage);
inventoryInquiry.setReportDamageNum(scrapSum);
// 设置历史总数
BigDecimal historicalTotal = inventoryInquiry.getHistoricalTotal();
historicalTotal = historicalTotal.add(storagenum);
Integer historicalTotal = inventoryInquiry.getHistoricalTotal();
historicalTotal += storagenum;
inventoryInquiry.setHistoricalTotal(historicalTotal);
inventoryInquiry.setUpdateBy(ShiroUtils.getLoginName());
inventoryInquiry.setUpdateTime(DateUtils.getNowDate());
@ -779,7 +779,7 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS
inventoryInquiry.setMaterialType(warehouseStorageOrderDetail.getMaterialType());
inventoryInquiry.setMaterialProcessMethod(warehouseStorageOrderDetail.getMaterialProcessMethod());
Integer storage = warehouseStorageOrderDetail.getStorageNum();
BigDecimal storagenum = BigDecimal.valueOf(storage);
Integer storagenum = storage;
// 设置历史总数
inventoryInquiry.setHistoricalTotal(storagenum);
inventoryInquiry.setAvailableStockNum(storagenum);
@ -799,12 +799,12 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS
public WarehouseInventoryInquiryDetail generateInquiryDetailByPurchaseChild(PurchaseOrderChild child,int storageNum){
WarehouseInventoryInquiryDetail inquiryDetail = new WarehouseInventoryInquiryDetail();
inquiryDetail.setMaterialNo(child.getMaterialNo());
inquiryDetail.setMaterialName(child.getMaterialName());
inquiryDetail.setMaterialBrand(child.getMaterialBrand());
inquiryDetail.setMaterialPhotourl(child.getMaterialPhotourl());
inquiryDetail.setMaterialDescribe(child.getMaterialDescribe());
inquiryDetail.setMaterialType(child.getMaterialType());
inquiryDetail.setMaterialUnit(child.getMaterialUnit());
// inquiryDetail.setMaterialName(child.getMaterialName());
// inquiryDetail.setMaterialBrand(child.getMaterialBrand());
// inquiryDetail.setMaterialPhotourl(child.getMaterialPhotourl());
// inquiryDetail.setMaterialDescribe(child.getMaterialDescribe());
// inquiryDetail.setMaterialType(child.getMaterialType());
// inquiryDetail.setMaterialUnit(child.getMaterialUnit());
// inquiryDetail.setInventoryAttributionCode(child.getPurchasePlanCorrelationCode());
// inquiryDetail.setSupplierCode(child.());
// inquiryDetail.setSupplierName(child.getSupplierName());
@ -812,7 +812,7 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS
// inquiryDetail.setPurchaseOrderCode(child.getPurchaseOrderCode());
// 库存归属单号
BigDecimal realStorageNum = BigDecimal.valueOf(storageNum);
inquiryDetail.setAvailableStockNum(realStorageNum);
// inquiryDetail.setAvailableStockNum(realStorageNum);
// inquiryDetail.setPurchasePriceIncludesTax(child.getMaterialRealRmbSum());
// inquiryDetail.setPurchasePriceExcludingTax(child.getMaterialRealNoRmbSum());
inquiryDetail.setInventoryIncreaseDecrease("1");
@ -826,18 +826,18 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS
public WarehouseInventoryInquiryDetail createMakeInOrderInquiryDetail(WarehouseStorageOrderDetail warehouseStorageOrderDetail){
WarehouseInventoryInquiryDetail inquiryDetail = new WarehouseInventoryInquiryDetail();
inquiryDetail.setMaterialNo(warehouseStorageOrderDetail.getMaterialNo());
inquiryDetail.setMaterialName(warehouseStorageOrderDetail.getMaterialName());
inquiryDetail.setMaterialType(warehouseStorageOrderDetail.getMaterialType());
inquiryDetail.setMaterialPhotourl(warehouseStorageOrderDetail.getMaterialPhotourl());
inquiryDetail.setMaterialUnit(warehouseStorageOrderDetail.getMaterialUnit());
inquiryDetail.setMaterialDescribe(warehouseStorageOrderDetail.getMaterialDescribe());
inquiryDetail.setMaterialBrand(warehouseStorageOrderDetail.getMaterialBrand());
inquiryDetail.setMaterialProcessMethod(warehouseStorageOrderDetail.getMaterialProcessMethod());
// inquiryDetail.setMaterialName(warehouseStorageOrderDetail.getMaterialName());
// inquiryDetail.setMaterialType(warehouseStorageOrderDetail.getMaterialType());
// inquiryDetail.setMaterialPhotourl(warehouseStorageOrderDetail.getMaterialPhotourl());
// inquiryDetail.setMaterialUnit(warehouseStorageOrderDetail.getMaterialUnit());
// inquiryDetail.setMaterialDescribe(warehouseStorageOrderDetail.getMaterialDescribe());
// inquiryDetail.setMaterialBrand(warehouseStorageOrderDetail.getMaterialBrand());
// inquiryDetail.setMaterialProcessMethod(warehouseStorageOrderDetail.getMaterialProcessMethod());
BigDecimal storagenum = BigDecimal.ZERO;
if(warehouseStorageOrderDetail.getStorageNum()!=null){
storagenum = BigDecimal.valueOf(warehouseStorageOrderDetail.getStorageNum());
}
inquiryDetail.setAvailableStockNum(storagenum);
// inquiryDetail.setAvailableStockNum(storagenum);
inquiryDetail.setInventoryIncreaseDecrease("1");
inquiryDetail.setCreateBy(ShiroUtils.getLoginName());
inquiryDetail.setCreateTime(DateUtils.getNowDate());

8
ruoyi-admin/src/main/resources/mapper/sales/SalesEstimateDetailMapper.xml

@ -37,6 +37,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="noTaxMaterialCosts" column="no_tax_material_costs" />
<result property="noTaxOperatingCosts" column="no_tax_operating_costs" />
<result property="taxOperatingCosts" column="tax_operating_costs" />
<result property="totalOperatingCosts" column="total_operating_costs" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
@ -45,7 +46,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap>
<sql id="selectSalesEstimateDetailVo">
select estimate_detail_id, sales_estimate_code, material_gear_position, usd_rate, profit_rate, material_no, material_name, material_type, material_photo_url, material_unit, material_brand, material_describe, material_process_method, material_num, no_tax_rmb, tax_rmb, all_no_tax_rmb, all_tax_rmb, tax_dollar, no_tax_dollar, all_tax_dollar, all_no_tax_dollar, no_tax_shipping_costs, no_tax_service_costs, no_tax_develop_costs, no_tax_labor_costs, no_tax_promotional_costs, no_tax_business_costs, no_tax_manages_costs, no_tax_material_costs, no_tax_operating_costs, tax_operating_costs, create_by, create_time, update_by, update_time, remark from sales_estimate_detail
select estimate_detail_id, sales_estimate_code, material_gear_position, usd_rate, profit_rate, material_no, material_name, material_type, material_photo_url, material_unit, material_brand, material_describe, material_process_method, material_num, no_tax_rmb, tax_rmb, all_no_tax_rmb, all_tax_rmb, tax_dollar, no_tax_dollar, all_tax_dollar, all_no_tax_dollar, no_tax_shipping_costs, no_tax_service_costs, no_tax_develop_costs, no_tax_labor_costs, no_tax_promotional_costs, no_tax_business_costs, no_tax_manages_costs, no_tax_material_costs, no_tax_operating_costs, tax_operating_costs, total_operating_costs, create_by, create_time, update_by, update_time, remark from sales_estimate_detail
</sql>
<select id="selectSalesEstimateDetailList" parameterType="SalesEstimateDetail" resultMap="SalesEstimateDetailResult">
@ -102,6 +103,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="noTaxMaterialCosts != null">no_tax_material_costs,</if>
<if test="noTaxOperatingCosts != null">no_tax_operating_costs,</if>
<if test="taxOperatingCosts != null">tax_operating_costs,</if>
<if test="totalOperatingCosts != null">total_operating_costs,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
@ -140,6 +142,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="noTaxMaterialCosts != null">#{noTaxMaterialCosts},</if>
<if test="noTaxOperatingCosts != null">#{noTaxOperatingCosts},</if>
<if test="taxOperatingCosts != null">#{taxOperatingCosts},</if>
<if test="totalOperatingCosts != null">#{totalOperatingCosts},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
@ -184,6 +187,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
no_tax_material_costs,
no_tax_operating_costs,
tax_operating_costs,
total_operating_costs,
create_by,
create_time
)
@ -220,6 +224,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{item.noTaxMaterialCosts},
#{item.noTaxOperatingCosts},
#{item.taxOperatingCosts},
#{item.totalOperatingCosts},
#{item.createBy},
#{item.createTime}
</foreach>
@ -263,6 +268,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="noTaxMaterialCosts != null">no_tax_material_costs = #{noTaxMaterialCosts},</if>
<if test="noTaxOperatingCosts != null">no_tax_operating_costs = #{noTaxOperatingCosts},</if>
<if test="taxOperatingCosts != null">tax_operating_costs = #{taxOperatingCosts},</if>
<if test="totalOperatingCosts != null">total_operating_costs = #{totalOperatingCosts},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>

8
ruoyi-admin/src/main/resources/mapper/system/SysMakeOrderMapper.xml

@ -302,4 +302,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
WHERE wso.warehouse_storage_code = #{warehouseStorageCode}
</select>
<select id="selectMakeOrderListBySalesOrderCodes" parameterType="String" resultMap="SysMakeOrderResult">
<include refid="selectSysMakeOrderVo"/>
where a.saleNo in
<foreach item="saleNo" collection="list" open="(" separator="," close=")">
#{saleNo}
</foreach>
</select>
</mapper>

132
ruoyi-admin/src/main/resources/mapper/warehouse/WarehouseInventoryInquiryDetailMapper.xml

@ -7,33 +7,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<resultMap type="WarehouseInventoryInquiryDetail" id="WarehouseInventoryInquiryDetailResult">
<result property="inventoryInquiryDetailId" column="inventory_inquiry_detail_id" />
<result property="materialNo" column="material_no" />
<result property="materialName" column="material_name" />
<result property="materialType" column="material_type" />
<result property="materialPhotourl" column="material_photoUrl" />
<result property="materialBrand" column="material_brand" />
<result property="materialUnit" column="material_unit" />
<result property="materialDescribe" column="material_describe" />
<result property="materialProcessMethod" column="material_process_method" />
<result property="materialModel" column="material_model" />
<result property="materialSpecification" column="material_specification" />
<result property="historicalTotal" column="historical_total" />
<result property="availableStockNum" column="available_stock_num" />
<result property="attributionAvailableStockNum" column="attribution_available_stock_num" />
<result property="noattributionAvailableStockNum" column="noattribution_available_stock_num" />
<result property="useNum" column="use_num" />
<result property="reportDamageNum" column="report_damage_num" />
<result property="materialUseStatus" column="material_use_status" />
<result property="inventoryAttributionCode" column="inventory_attribution_code" />
<result property="inventoryUseCode" column="inventory_use_code" />
<result property="correlationCode" column="correlation_code" />
<result property="inquiryBusinessType" column="inquiry_business_type" />
<result property="inquiryOrderType" column="inquiry_order_type" />
<result property="inquiryWarehouseType" column="inquiry_warehouse_type" />
<result property="shippingDeviceId" column="shipping_device_id" />
<result property="inventoryHistoricalTime" column="inventory_historical_time" />
<result property="inventoryHistoricalType" column="inventory_historical_type" />
<result property="inventoryIncreaseDecrease" column="inventory_increase_decrease" />
<result property="inventoryHistoricalNum" column="inventory_historical_num" />
<result property="purchasePriceExcludingTax" column="purchase_price_excluding_tax" />
<result property="purchasePriceIncludesTax" column="purchase_price_includes_tax" />
<result property="purchaseOrderCode" column="purchase_order_code" />
<result property="supplierCode" column="supplier_code" />
<result property="supplierName" column="supplier_name" />
<result property="increaseDecreaseNum" column="increase_decrease_num" />
<result property="remark" column="remark" />
<result property="createTime" column="create_time" />
<result property="createBy" column="create_by" />
@ -42,7 +23,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap>
<sql id="selectWarehouseInventoryInquiryDetailVo">
select inventory_inquiry_detail_id, material_no, material_name, material_type, material_photoUrl, material_brand, material_unit, material_describe, material_process_method, material_model, material_specification, historical_total, available_stock_num, attribution_available_stock_num, noattribution_available_stock_num, use_num, report_damage_num, material_use_status, inventory_attribution_code, inventory_use_code, inventory_historical_time, inventory_historical_type, inventory_increase_decrease, inventory_historical_num, purchase_price_excluding_tax, purchase_price_includes_tax, purchase_order_code, supplier_code, supplier_name, remark, create_time, create_by, update_by, update_time from warehouse_inventory_inquiry_detail
select inventory_inquiry_detail_id, material_no, correlation_code, inquiry_business_type, inquiry_order_type, inquiry_warehouse_type, shipping_device_id, inventory_historical_time, inventory_increase_decrease, increase_decrease_num, remark, create_time, create_by, update_by, update_time from warehouse_inventory_inquiry_detail
</sql>
<select id="selectWarehouseInventoryInquiryDetailList" parameterType="WarehouseInventoryInquiryDetail" resultMap="WarehouseInventoryInquiryDetailResult">
@ -56,43 +37,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where inventory_inquiry_detail_id = #{inventoryInquiryDetailId}
</select>
<select id="selectWarehouseInventoryInquiryDetailByMaterialNo" parameterType="String" resultMap="WarehouseInventoryInquiryDetailResult">
<include refid="selectWarehouseInventoryInquiryDetailVo"/>
where material_no = #{materialNo}
</select>
<insert id="insertWarehouseInventoryInquiryDetail" parameterType="WarehouseInventoryInquiryDetail" useGeneratedKeys="true" keyProperty="inventoryInquiryDetailId">
insert into warehouse_inventory_inquiry_detail
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="materialNo != null">material_no,</if>
<if test="materialName != null">material_name,</if>
<if test="materialType != null">material_type,</if>
<if test="materialPhotourl != null">material_photoUrl,</if>
<if test="materialBrand != null">material_brand,</if>
<if test="materialUnit != null">material_unit,</if>
<if test="materialDescribe != null">material_describe,</if>
<if test="materialProcessMethod != null">material_process_method,</if>
<if test="materialModel != null">material_model,</if>
<if test="materialSpecification != null">material_specification,</if>
<if test="historicalTotal != null">historical_total,</if>
<if test="availableStockNum != null">available_stock_num,</if>
<if test="attributionAvailableStockNum != null">attribution_available_stock_num,</if>
<if test="noattributionAvailableStockNum != null">noattribution_available_stock_num,</if>
<if test="useNum != null">use_num,</if>
<if test="reportDamageNum != null">report_damage_num,</if>
<if test="materialUseStatus != null">material_use_status,</if>
<if test="inventoryAttributionCode != null">inventory_attribution_code,</if>
<if test="inventoryUseCode != null">inventory_use_code,</if>
<if test="correlationCode != null">correlation_code,</if>
<if test="inquiryBusinessType != null">inquiry_business_type,</if>
<if test="inquiryOrderType != null">inquiry_order_type,</if>
<if test="inquiryWarehouseType != null">inquiry_warehouse_type,</if>
<if test="shippingDeviceId != null">shipping_device_id,</if>
<if test="inventoryHistoricalTime != null">inventory_historical_time,</if>
<if test="inventoryHistoricalType != null">inventory_historical_type,</if>
<if test="inventoryIncreaseDecrease != null">inventory_increase_decrease,</if>
<if test="inventoryHistoricalNum != null">inventory_historical_num,</if>
<if test="purchasePriceExcludingTax != null">purchase_price_excluding_tax,</if>
<if test="purchasePriceIncludesTax != null">purchase_price_includes_tax,</if>
<if test="purchaseOrderCode != null">purchase_order_code,</if>
<if test="supplierCode != null">supplier_code,</if>
<if test="supplierName != null">supplier_name,</if>
<if test="increaseDecreaseNum != null">increase_decrease_num,</if>
<if test="remark != null">remark,</if>
<if test="createTime != null">create_time,</if>
<if test="createBy != null">create_by,</if>
@ -101,33 +57,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="materialNo != null">#{materialNo},</if>
<if test="materialName != null">#{materialName},</if>
<if test="materialType != null">#{materialType},</if>
<if test="materialPhotourl != null">#{materialPhotourl},</if>
<if test="materialBrand != null">#{materialBrand},</if>
<if test="materialUnit != null">#{materialUnit},</if>
<if test="materialDescribe != null">#{materialDescribe},</if>
<if test="materialProcessMethod != null">#{materialProcessMethod},</if>
<if test="materialModel != null">#{materialModel},</if>
<if test="materialSpecification != null">#{materialSpecification},</if>
<if test="historicalTotal != null">#{historicalTotal},</if>
<if test="availableStockNum != null">#{availableStockNum},</if>
<if test="attributionAvailableStockNum != null">#{attributionAvailableStockNum},</if>
<if test="noattributionAvailableStockNum != null">#{noattributionAvailableStockNum},</if>
<if test="useNum != null">#{useNum},</if>
<if test="reportDamageNum != null">#{reportDamageNum},</if>
<if test="materialUseStatus != null">#{materialUseStatus},</if>
<if test="inventoryAttributionCode != null">#{inventoryAttributionCode},</if>
<if test="inventoryUseCode != null">#{inventoryUseCode},</if>
<if test="correlationCode != null">#{correlationCode},</if>
<if test="inquiryBusinessType != null">#{inquiryBusinessType},</if>
<if test="inquiryOrderType != null">#{inquiryOrderType},</if>
<if test="inquiryWarehouseType != null">#{inquiryWarehouseType},</if>
<if test="shippingDeviceId != null">#{shippingDeviceId},</if>
<if test="inventoryHistoricalTime != null">#{inventoryHistoricalTime},</if>
<if test="inventoryHistoricalType != null">#{inventoryHistoricalType},</if>
<if test="inventoryIncreaseDecrease != null">#{inventoryIncreaseDecrease},</if>
<if test="inventoryHistoricalNum != null">#{inventoryHistoricalNum},</if>
<if test="purchasePriceExcludingTax != null">#{purchasePriceExcludingTax},</if>
<if test="purchasePriceIncludesTax != null">#{purchasePriceIncludesTax},</if>
<if test="purchaseOrderCode != null">#{purchaseOrderCode},</if>
<if test="supplierCode != null">#{supplierCode},</if>
<if test="supplierName != null">#{supplierName},</if>
<if test="increaseDecreaseNum != null">#{increaseDecreaseNum},</if>
<if test="remark != null">#{remark},</if>
<if test="createTime != null">#{createTime},</if>
<if test="createBy != null">#{createBy},</if>
@ -140,33 +77,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
update warehouse_inventory_inquiry_detail
<trim prefix="SET" suffixOverrides=",">
<if test="materialNo != null">material_no = #{materialNo},</if>
<if test="materialName != null">material_name = #{materialName},</if>
<if test="materialType != null">material_type = #{materialType},</if>
<if test="materialPhotourl != null">material_photoUrl = #{materialPhotourl},</if>
<if test="materialBrand != null">material_brand = #{materialBrand},</if>
<if test="materialUnit != null">material_unit = #{materialUnit},</if>
<if test="materialDescribe != null">material_describe = #{materialDescribe},</if>
<if test="materialProcessMethod != null">material_process_method = #{materialProcessMethod},</if>
<if test="materialModel != null">material_model = #{materialModel},</if>
<if test="materialSpecification != null">material_specification = #{materialSpecification},</if>
<if test="historicalTotal != null">historical_total = #{historicalTotal},</if>
<if test="availableStockNum != null">available_stock_num = #{availableStockNum},</if>
<if test="attributionAvailableStockNum != null">attribution_available_stock_num = #{attributionAvailableStockNum},</if>
<if test="noattributionAvailableStockNum != null">noattribution_available_stock_num = #{noattributionAvailableStockNum},</if>
<if test="useNum != null">use_num = #{useNum},</if>
<if test="reportDamageNum != null">report_damage_num = #{reportDamageNum},</if>
<if test="materialUseStatus != null">material_use_status = #{materialUseStatus},</if>
<if test="inventoryAttributionCode != null">inventory_attribution_code = #{inventoryAttributionCode},</if>
<if test="inventoryUseCode != null">inventory_use_code = #{inventoryUseCode},</if>
<if test="correlationCode != null">correlation_code = #{correlationCode},</if>
<if test="inquiryBusinessType != null">inquiry_business_type = #{inquiryBusinessType},</if>
<if test="inquiryOrderType != null">inquiry_order_type = #{inquiryOrderType},</if>
<if test="inquiryWarehouseType != null">inquiry_warehouse_type = #{inquiryWarehouseType},</if>
<if test="shippingDeviceId != null">shipping_device_id = #{shippingDeviceId},</if>
<if test="inventoryHistoricalTime != null">inventory_historical_time = #{inventoryHistoricalTime},</if>
<if test="inventoryHistoricalType != null">inventory_historical_type = #{inventoryHistoricalType},</if>
<if test="inventoryIncreaseDecrease != null">inventory_increase_decrease = #{inventoryIncreaseDecrease},</if>
<if test="inventoryHistoricalNum != null">inventory_historical_num = #{inventoryHistoricalNum},</if>
<if test="purchasePriceExcludingTax != null">purchase_price_excluding_tax = #{purchasePriceExcludingTax},</if>
<if test="purchasePriceIncludesTax != null">purchase_price_includes_tax = #{purchasePriceIncludesTax},</if>
<if test="purchaseOrderCode != null">purchase_order_code = #{purchaseOrderCode},</if>
<if test="supplierCode != null">supplier_code = #{supplierCode},</if>
<if test="supplierName != null">supplier_name = #{supplierName},</if>
<if test="increaseDecreaseNum != null">increase_decrease_num = #{increaseDecreaseNum},</if>
<if test="remark != null">remark = #{remark},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="createBy != null">create_by = #{createBy},</if>

18
ruoyi-admin/src/main/resources/mapper/warehouse/WarehouseInventoryInquiryMapper.xml

@ -18,6 +18,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="materialSpecification" column="material_specification" />
<result property="warehouseDept" column="warehouse_dept" />
<result property="historicalTotal" column="historical_total" />
<result property="sharedAvailableStockNum" column="shared_available_stock_num"/>
<result property="lockStockNum" column="lock_stock_num" />
<result property="fixedAvailableStockNum" column="fixed_available_stock_num" />
<result property="stockLossesNum" column="stock_losses_num" />
<result property="availableStockNum" column="available_stock_num" />
<result property="attributionAvailableStockNum" column="attribution_available_stock_num" />
<result property="noattributionAvailableStockNum" column="noattribution_available_stock_num" />
@ -35,7 +39,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
select inventory_inquiry_id, material_no, material_name, material_type,
material_photoUrl, material_brand, material_unit, material_describe,
material_process_method, material_model, material_specification,warehouse_dept,
historical_total, available_stock_num, attribution_available_stock_num,
historical_total, shared_available_stock_num, lock_stock_num, fixed_available_stock_num, stock_losses_num,available_stock_num, attribution_available_stock_num,
noattribution_available_stock_num, use_num, report_damage_num, material_use_status,
remark, create_time, create_by, update_by, update_time
from warehouse_inventory_inquiry
@ -83,6 +87,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="materialSpecification != null">material_specification,</if>
<if test="warehouseDept != null">warehouse_dept,</if>
<if test="historicalTotal != null">historical_total,</if>
<if test="sharedAvailableStockNum != null">shared_available_stock_num,</if>
<if test="lockStockNum != null">lock_stock_num,</if>
<if test="fixedAvailableStockNum != null">fixed_available_stock_num,</if>
<if test="stockLossesNum != null">stock_losses_num,</if>
<if test="availableStockNum != null">available_stock_num,</if>
<if test="attributionAvailableStockNum != null">attribution_available_stock_num,</if>
<if test="noattributionAvailableStockNum != null">noattribution_available_stock_num,</if>
@ -108,6 +116,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="materialSpecification != null">#{materialSpecification},</if>
<if test="warehouseDept != null">#{warehouseDept},</if>
<if test="historicalTotal != null">#{historicalTotal},</if>
<if test="sharedAvailableStockNum != null">#{sharedAvailableStockNum},</if>
<if test="lockStockNum != null">#{lockStockNum},</if>
<if test="fixedAvailableStockNum != null">#{fixedAvailableStockNum},</if>
<if test="stockLossesNum != null">#{stockLossesNum},</if>
<if test="availableStockNum != null">#{availableStockNum},</if>
<if test="attributionAvailableStockNum != null">#{attributionAvailableStockNum},</if>
<if test="noattributionAvailableStockNum != null">#{noattributionAvailableStockNum},</if>
@ -137,6 +149,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="materialSpecification != null">material_specification = #{materialSpecification},</if>
<if test="warehouseDept != null">warehouse_dept = #{warehouseDept},</if>
<if test="historicalTotal != null">historical_total = #{historicalTotal},</if>
<if test="sharedAvailableStockNum != null">shared_available_stock_num = #{sharedAvailableStockNum},</if>
<if test="lockStockNum != null">lock_stock_num = #{lockStockNum},</if>
<if test="fixedAvailableStockNum != null">fixed_available_stock_num = #{fixedAvailableStockNum},</if>
<if test="stockLossesNum != null">stock_losses_num = #{stockLossesNum},</if>
<if test="availableStockNum != null">available_stock_num = #{availableStockNum},</if>
<if test="attributionAvailableStockNum != null">attribution_available_stock_num = #{attributionAvailableStockNum},</if>
<if test="noattributionAvailableStockNum != null">noattribution_available_stock_num = #{noattributionAvailableStockNum},</if>

BIN
ruoyi-admin/src/main/resources/static/attachments/出货通知单.xlsx

Binary file not shown.

BIN
ruoyi-admin/src/main/resources/static/attachments/销售出货单1.xlsx

Binary file not shown.

BIN
ruoyi-admin/src/main/resources/static/attachments/销售出货单2.xlsx

Binary file not shown.

BIN
ruoyi-admin/src/main/resources/static/attachments/销售出货发票1.xlsx

Binary file not shown.

BIN
ruoyi-admin/src/main/resources/static/attachments/销售出货发票2.xlsx

Binary file not shown.

BIN
ruoyi-admin/src/main/resources/static/attachments/销售出货箱单1.xlsx

Binary file not shown.

BIN
ruoyi-admin/src/main/resources/static/attachments/销售出货箱单2.xlsx

Binary file not shown.

201
ruoyi-admin/src/main/resources/templates/sales/estimate/ceoAdd.html

@ -132,10 +132,7 @@
"noTaxDevelopCosts": null, // 初始化为 null 或 0
"noTaxShippingCosts": null,
"noTaxServiceCosts": null,
"noTaxLaborCosts": null,
"noTaxPromotionalCosts": null,
"noTaxBusinessCosts": null,
"noTaxManagesCosts": null,
"totalOperatingCosts": null,
"noTaxMaterialCosts": null,
"noTaxOperatingCosts": null,
"taxOperatingCosts": null,
@ -149,10 +146,7 @@
var noTaxDevelopCosts = $('#noTaxDevelopCosts' + index).val();
var noTaxShippingCosts = $('#noTaxShippingCosts' + index).val();
var noTaxServiceCosts = $('#noTaxServiceCosts' + index).val();
var noTaxLaborCosts = $('#noTaxLaborCosts' + index).val();
var noTaxPromotionalCosts = $('#noTaxPromotionalCosts' + index).val();
var noTaxBusinessCosts = $('#noTaxBusinessCosts' + index).val();
var noTaxManagesCosts = $('#noTaxManagesCosts' + index).val();
var totalOperatingCosts = $('#totalOperatingCosts' + index).val();
var noTaxMaterialCosts = $('#noTaxMaterialCosts' + index).val();
var noTaxOperatingCosts = $('#noTaxOperatingCosts' + index).val();
var taxOperatingCosts = $('#taxOperatingCosts' + index).val();
@ -174,39 +168,23 @@
hasError = true;
return; // 退出循环,阻止进一步处理
}
if (!noTaxLaborCosts && noTaxLaborCosts !== '0') {
$.modal.alertWarning("人工成本不能为空,请填写第 " + (parseInt(index) + 1) + " 行的人工成本");
hasError = true;
return; // 退出循环,阻止进一步处理
}
if (!noTaxPromotionalCosts && noTaxPromotionalCosts !== '0') {
$.modal.alertWarning("推广成本不能为空,请填写第 " + (parseInt(index) + 1) + " 行的推广成本");
hasError = true;
return; // 退出循环,阻止进一步处理
}
if (!noTaxBusinessCosts && noTaxBusinessCosts !== '0') {
$.modal.alertWarning("业务成本不能为空,请填写第 " + (parseInt(index) + 1) + " 行的业务成本");
hasError = true;
return; // 退出循环,阻止进一步处理
}
if (!noTaxManagesCosts && noTaxManagesCosts !== '0') {
$.modal.alertWarning("管理成本不能为空,请填写第 " + (parseInt(index) + 1) + " 行的管理成本");
if (!totalOperatingCosts && totalOperatingCosts !== '0') {
$.modal.alertWarning("不含税总经营成本不能为空,请填写第 " + (parseInt(index) + 1) + " 行的不含税总经营成本");
hasError = true;
return; // 退出循环,阻止进一步处理
}
if (!noTaxMaterialCosts && noTaxMaterialCosts !== '0') {
$.modal.alertWarning("物料成本不能为空,请填写第 " + (parseInt(index) + 1) + " 行的物料成本");
$.modal.alertWarning("不含税物料成本不能为空,请填写第 " + (parseInt(index) + 1) + " 行的不含税物料成本");
hasError = true;
return; // 退出循环,阻止进一步处理
}
if (!noTaxOperatingCosts && noTaxOperatingCosts !== '0') {
$.modal.alertWarning("经营成本不能为空,请填写第 " + (parseInt(index) + 1) + " 行的经营成本");
$.modal.alertWarning("不含税经营成本不能为空,请填写第 " + (parseInt(index) + 1) + " 行的不含税经营成本");
hasError = true;
return; // 退出循环,阻止进一步处理
}
if (!taxOperatingCosts && taxOperatingCosts !== '0') {
$.modal.alertWarning("税经营成本不能为空,请填写第 " + (parseInt(index) + 1) + " 行的税经营成本");
$.modal.alertWarning("含税经营成本不能为空,请填写第 " + (parseInt(index) + 1) + " 行的含税经营成本");
hasError = true;
return; // 退出循环,阻止进一步处理
}
@ -220,10 +198,7 @@
estimateMaterialDataList[index].noTaxDevelopCosts = noTaxDevelopCosts;
estimateMaterialDataList[index].noTaxShippingCosts = noTaxShippingCosts;
estimateMaterialDataList[index].noTaxServiceCosts = noTaxServiceCosts;
estimateMaterialDataList[index].noTaxLaborCosts = noTaxLaborCosts;
estimateMaterialDataList[index].noTaxPromotionalCosts = noTaxPromotionalCosts;
estimateMaterialDataList[index].noTaxBusinessCosts = noTaxBusinessCosts;
estimateMaterialDataList[index].noTaxManagesCosts = noTaxManagesCosts;
estimateMaterialDataList[index].totalOperatingCosts = totalOperatingCosts;
estimateMaterialDataList[index].noTaxMaterialCosts = noTaxMaterialCosts;
estimateMaterialDataList[index].noTaxOperatingCosts = noTaxOperatingCosts;
estimateMaterialDataList[index].taxOperatingCosts = taxOperatingCosts;
@ -489,8 +464,8 @@
var firstRow = data[0].rows[0];
// 初始化累积变量
let noTaxPurchaseRmb = 0;
let taxPurchaseRmb = 0;
let noTaxPurchaseRmb = 0; //不含税采购总成本
let taxPurchaseRmb = 0; //含税采购总成本
// 累加无税购买金额
data[0].rows.forEach(function (row) {
@ -517,33 +492,34 @@
// 从 `salesEstimateDetailVo` 中获取其他成本信息
const {
noTaxLaborCosts = '',
noTaxPromotionalCosts = '',
noTaxBusinessCosts = '',
noTaxManagesCosts = '',
noTaxMaterialCosts = ''
totalOperatingCosts = '', //上一年度的总经营不含税成本合计
noTaxMaterialCosts = '' // 上一年度总物料不含税成本合计
} = salesEstimateDetailVo || {};
// 计算不含税总经营成本
const noAllTaxOperatingCosts = (
parseFloat(noTaxLaborCosts) +
parseFloat(noTaxBusinessCosts) +
parseFloat(noTaxManagesCosts) +
parseFloat(noTaxPromotionalCosts)
).toFixed(2) || '';
// 计算含税总经营成本,假设增值税率为 13%
// 计算上一年度含税总经营成本,假设增值税率为 13%
const allTaxOperatingCosts = (
parseFloat(noAllTaxOperatingCosts) * 1.13
parseFloat(totalOperatingCosts) * 1.13
).toFixed(2) || '';
//该料号的不含税经营成本
//上一年度总物料含税成本合计
const allTaxMaterialCosts = (
parseFloat(noTaxMaterialCosts) * 1.13
).toFixed(2) || '';
//该料号的不含税经营成本 (RMB)=(该料号的BOM物料不含税总采购成本/上一年度总物料不含税成本合计)*上一年度的总经营不含税成本合计
const noTaxOperatingCosts = (
(noTaxPurchaseRmb/noTaxMaterialCosts) * noAllTaxOperatingCosts
(noTaxPurchaseRmb/noTaxMaterialCosts) * totalOperatingCosts
).toFixed(2) || '';
// 该料号的含税经营成本
// 该料号的含税经营成本 (RMB)=(该料号的BOM物料含税总采购成本/上一年度总物料含税成本合计)*上一年度的总经营含税成本合计
const taxOperatingCosts = (
(taxPurchaseRmb/noTaxMaterialCosts) * allTaxOperatingCosts
(taxPurchaseRmb/allTaxMaterialCosts) * allTaxOperatingCosts
).toFixed(2) || '';
// 根据 `parentRow.profitRate` 设置利润率
let profitRateKey = 'aprofitRate';
switch (parentRow.profitRate) {
@ -572,10 +548,7 @@
noTaxDevelopCosts,
noTaxShippingCosts,
noTaxServiceCosts,
noTaxLaborCosts,
noTaxPromotionalCosts,
noTaxBusinessCosts,
noTaxManagesCosts,
totalOperatingCosts,
noTaxMaterialCosts,
noTaxOperatingCosts,
taxOperatingCosts,
@ -590,10 +563,7 @@
noTaxDevelopCosts: '',
noTaxShippingCosts: '',
noTaxServiceCosts: '',
noTaxLaborCosts: '',
noTaxPromotionalCosts: '',
noTaxBusinessCosts: '',
noTaxManagesCosts: '',
totalOperatingCosts: '',
noTaxMaterialCosts: '',
noTaxOperatingCosts: '',
taxOperatingCosts: '',
@ -616,24 +586,12 @@
formHtml += '<label for="noTaxServiceCosts' + index + '">不含税服务成本(RMB):</label>';
formHtml += '<input type="text" class="form-control" id="noTaxServiceCosts' + index + '" name="noTaxServiceCosts' + index + '" value="' + costs.noTaxServiceCosts + '" readonly>';
formHtml += '</div>';
formHtml += '<h3>总经营成本</h3>';
formHtml += '<h3>上一年度总经营成本</h3>';
formHtml += '<div class="form-group">';
formHtml += '<label for="noTaxLaborCosts' + index + '">不含税人工成本(RMB):</label>';
formHtml += '<input type="text" class="form-control" id="noTaxLaborCosts' + index + '" name="noTaxLaborCosts' + index + '" value="' + costs.noTaxLaborCosts + '">';
formHtml += '<label for="totalOperatingCosts' + index + '">不含税总经营成本(RMB):</label>';
formHtml += '<input type="text" class="form-control" id="totalOperatingCosts' + index + '" name="totalOperatingCosts' + index + '" value="' + costs.totalOperatingCosts + '">';
formHtml += '</div>';
formHtml += '<div class="form-group">';
formHtml += '<label for="noTaxPromotionalCosts' + index + '">不含税推广成本(RMB):</label>';
formHtml += '<input type="text" class="form-control" id="noTaxPromotionalCosts' + index + '" name="noTaxPromotionalCosts' + index + '" value="' + costs.noTaxPromotionalCosts + '">';
formHtml += '</div>';
formHtml += '<div class="form-group">';
formHtml += '<label for="noTaxBusinessCosts' + index + '">不含税业务成本(RMB):</label>';
formHtml += '<input type="text" class="form-control" id="noTaxBusinessCosts' + index + '" name="noTaxBusinessCosts' + index + '" value="' + costs.noTaxBusinessCosts + '">';
formHtml += '</div>';
formHtml += '<div class="form-group">';
formHtml += '<label for="noTaxManagesCosts' + index + '">不含税管理成本(RMB):</label>';
formHtml += '<input type="text" class="form-control" id="noTaxManagesCosts' + index + '" name="noTaxManagesCosts' + index + '" value="' + costs.noTaxManagesCosts + '">';
formHtml += '</div>';
formHtml += '<h3>总物料成本</h3>';
formHtml += '<h3>上一年度总物料成本</h3>';
formHtml += '<div class="form-group">';
formHtml += '<label for="noTaxMaterialCosts' + index + '">不含税总物料成本(RMB):</label>';
formHtml += '<input type="text" class="form-control" id="noTaxMaterialCosts' + index + '" name="noTaxMaterialCosts' + index + '" value="' + costs.noTaxMaterialCosts + '">';
@ -669,17 +627,8 @@
// 根据 input 的 id 或 name 进行相应的计算
switch (inputId) {
case 'noTaxLaborCosts' + index:
calculateOperatingCosts(inputValue, 'noTaxLaborCosts');
break;
case 'noTaxPromotionalCosts' + index:
calculateOperatingCosts(inputValue, 'noTaxPromotionalCosts');
break;
case 'noTaxBusinessCosts' + index:
calculateOperatingCosts(inputValue, 'noTaxBusinessCosts');
break;
case 'noTaxManagesCosts' + index:
calculateOperatingCosts(inputValue, 'noTaxManagesCosts');
case 'totalOperatingCosts' + index:
calculateOperatingCosts(inputValue, 'totalOperatingCosts');
break;
case 'noTaxMaterialCosts' + index:
updateMaterialCosts(inputValue);
@ -692,41 +641,47 @@
});
function calculateOperatingCosts(value, costType) {
var noAllTaxOperatingCosts = 0;
// var totalOperatingCosts = 0;
var allNoTaxPurchaseRmb = 0;
var allTaxPurchaseRmb = 0;
// 获取所有相关的不含税成本
['noTaxLaborCosts', 'noTaxPromotionalCosts', 'noTaxBusinessCosts', 'noTaxManagesCosts'].forEach(function(cost) {
var currentCost = parseFloat($form.find('#' + cost + index).val());
noAllTaxOperatingCosts += currentCost;
});
// // 获取所有相关的不含税成本
// ['noTaxLaborCosts', 'noTaxPromotionalCosts', 'noTaxBusinessCosts', 'noTaxManagesCosts'].forEach(function(cost) {
// var currentCost = parseFloat($form.find('#' + cost + index).val());
// noAllTaxOperatingCosts += currentCost;
// });
// 更新不含税总经营成本
$form.find('#noAllTaxOperatingCosts' + index).val(noAllTaxOperatingCosts.toFixed(2));
// 更新上一年度不含税总经营成本
var totalOperatingCosts = parseFloat($form.find('#totalOperatingCosts' + index).val());
// 计算含税总经营成本
var allTaxOperatingCosts = noAllTaxOperatingCosts * 1.13;
// 计算上一年度含税总经营成本
var allTaxOperatingCosts = totalOperatingCosts * 1.13;
$form.find('#allTaxOperatingCosts' + index).val(allTaxOperatingCosts.toFixed(2));
// 遍历数据集计算不含税采购成本和含税采购成本
data.forEach(function(item) {
item.rows.forEach(function(row) {
var noTaxPurchaseRmb = row.noTaxPurchaseRmb * row.useNum;
var taxPurchaseRmb = row.taxPurchaseRmb * row.useNum;
// var noTaxPurchaseRmb = row.noTaxPurchaseRmb * row.useNum;
// var taxPurchaseRmb = row.taxPurchaseRmb * row.useNum;
var noTaxPurchaseRmb = row.noTaxPurchaseRmb;
var taxPurchaseRmb = row.taxPurchaseRmb;
allNoTaxPurchaseRmb += noTaxPurchaseRmb;
allTaxPurchaseRmb += taxPurchaseRmb;
});
});
// 该料号的不含税经营成本
var noTaxMaterialCosts = parseFloat($form.find('#noTaxMaterialCosts' + index).val());
var noTaxOperatingCosts = (allNoTaxPurchaseRmb / noTaxMaterialCosts) * noAllTaxOperatingCosts;
var noTaxMaterialCosts = parseFloat($form.find('#noTaxMaterialCosts' + index).val());//不含税总物料成本
var allTaxMaterialCosts = noTaxMaterialCosts * 1.13;//含税总物料成本
// 该料号的不含税经营成本(RMB)=(该料号的BOM物料不含税总采购成本/上一年度总物料不含税成本合计)*上一年度的总经营不含税成本合计
var noTaxOperatingCosts = (allNoTaxPurchaseRmb / noTaxMaterialCosts) * totalOperatingCosts;
$form.find('#noTaxOperatingCosts' + index).val(noTaxOperatingCosts.toFixed(2));
// 该料号的含税经营成本
var taxOperatingCosts = (allTaxPurchaseRmb / noTaxMaterialCosts) * allTaxOperatingCosts;
// 该料号含税经营成本(RMB)=(该料号BOM物料含税总采购成本/上一年度总物料含税成本合计)*上一年度的总经营含税成本合计
var taxOperatingCosts = (allTaxPurchaseRmb / allTaxMaterialCosts) * allTaxOperatingCosts;
$form.find('#taxOperatingCosts' + index).val(taxOperatingCosts.toFixed(2));
}
@ -739,22 +694,44 @@
// 遍历数据集计算不含税采购成本和含税采购成本
data.forEach(function(item) {
item.rows.forEach(function(row) {
var noTaxPurchaseRmb = row.noTaxPurchaseRmb * row.useNum;
var taxPurchaseRmb = row.taxPurchaseRmb * row.useNum;
// var noTaxPurchaseRmb = row.noTaxPurchaseRmb * row.useNum;
// var taxPurchaseRmb = row.taxPurchaseRmb * row.useNum;
var noTaxPurchaseRmb = row.noTaxPurchaseRmb;
var taxPurchaseRmb = row.taxPurchaseRmb;
allNoTaxPurchaseRmb += noTaxPurchaseRmb;
allTaxPurchaseRmb += taxPurchaseRmb;
});
});
// 更新不含税经营成本
var noAllTaxOperatingCosts = parseFloat($form.find('#noAllTaxOperatingCosts' + index).val());
var noTaxOperatingCosts = (noTaxPurchaseRmb / value) * noAllTaxOperatingCosts;
// // 更新不含税经营成本
// var noAllTaxOperatingCosts = parseFloat($form.find('#noAllTaxOperatingCosts' + index).val());
// var noTaxOperatingCosts = (noTaxPurchaseRmb / value) * noAllTaxOperatingCosts;
// $form.find('#noTaxOperatingCosts' + index).val(noTaxOperatingCosts.toFixed(2));
//
// // 更新含税经营成本
// var taxOperatingCosts = (taxPurchaseRmb / value) * noAllTaxOperatingCosts;
// $form.find('#taxOperatingCosts' + index).val(taxOperatingCosts.toFixed(2));
// 更新上一年度不含税总经营成本
var totalOperatingCosts = parseFloat($form.find('#totalOperatingCosts' + index).val());
// 计算上一年度含税总经营成本
var allTaxOperatingCosts = totalOperatingCosts * 1.13;
$form.find('#allTaxOperatingCosts' + index).val(allTaxOperatingCosts.toFixed(2));
// 该料号的不含税经营成本(RMB)=(该料号的BOM物料不含税总采购成本/上一年度总物料不含税成本合计)*上一年度的总经营不含税成本合计
var noTaxMaterialCosts = parseFloat($form.find('#noTaxMaterialCosts' + index).val());
var allTaxMaterialCosts = noTaxMaterialCosts * 1.13;
var noTaxOperatingCosts = (allNoTaxPurchaseRmb / noTaxMaterialCosts) * totalOperatingCosts;
$form.find('#noTaxOperatingCosts' + index).val(noTaxOperatingCosts.toFixed(2));
// 更新含税经营成本
var taxOperatingCosts = (taxPurchaseRmb / value) * noAllTaxOperatingCosts;
// 该料号含税经营成本(RMB)=(该料号的BOM物料含税总采购成本/上一年度总物料含税成本合计)*上一年度的总经营含税成本合计
var taxOperatingCosts = (allTaxPurchaseRmb / allTaxMaterialCosts) * allTaxOperatingCosts;
$form.find('#taxOperatingCosts' + index).val(taxOperatingCosts.toFixed(2));
}
}
});

156
ruoyi-admin/src/main/resources/templates/sales/estimate/ceoAddDetail.html

@ -354,33 +354,33 @@
// 从 `salesEstimateDetailVo` 中获取其他成本信息
const {
noTaxLaborCosts = '',
noTaxPromotionalCosts = '',
noTaxBusinessCosts = '',
noTaxManagesCosts = '',
noTaxMaterialCosts = ''
totalOperatingCosts = '', //上一年度的总经营不含税成本合计
noTaxMaterialCosts = '' // 上一年度总物料不含税成本合计
} = salesEstimateDetailVo || {};
// 计算不含税总经营成本
const noAllTaxOperatingCosts = (
parseFloat(noTaxLaborCosts) +
parseFloat(noTaxBusinessCosts) +
parseFloat(noTaxManagesCosts) +
parseFloat(noTaxPromotionalCosts)
// 计算上一年度含税总经营成本,假设增值税率为 13%
const allTaxOperatingCosts = (
parseFloat(totalOperatingCosts) * 1.13
).toFixed(2) || '';
// 计算含税总经营成本,假设增值税率为 13%
const allTaxOperatingCosts = (
parseFloat(noAllTaxOperatingCosts) * 1.13
//上一年度总物料含税成本合计
const allTaxMaterialCosts = (
parseFloat(noTaxMaterialCosts) * 1.13
).toFixed(2) || '';
//该料号的不含税经营成本
//该料号的不含税经营成本 (RMB)=(该料号的BOM物料不含税总采购成本/上一年度总物料不含税成本合计)*上一年度的总经营不含税成本合计
const noTaxOperatingCosts = (
(noTaxPurchaseRmb/noTaxMaterialCosts) * noAllTaxOperatingCosts
(noTaxPurchaseRmb/noTaxMaterialCosts) * totalOperatingCosts
).toFixed(2) || '';
// 该料号的含税经营成本
// 该料号的含税经营成本 (RMB)=(该料号的BOM物料含税总采购成本/上一年度总物料含税成本合计)*上一年度的总经营含税成本合计
const taxOperatingCosts = (
(taxPurchaseRmb/noTaxMaterialCosts) * allTaxOperatingCosts
(taxPurchaseRmb/allTaxMaterialCosts) * allTaxOperatingCosts
).toFixed(2) || '';
// 根据 `parentRow.profitRate` 设置利润率
let profitRateKey = 'aprofitRate';
switch (parentRow.profitRate) {
@ -409,10 +409,7 @@
noTaxDevelopCosts,
noTaxShippingCosts,
noTaxServiceCosts,
noTaxLaborCosts,
noTaxPromotionalCosts,
noTaxBusinessCosts,
noTaxManagesCosts,
totalOperatingCosts,
noTaxMaterialCosts,
noTaxOperatingCosts,
taxOperatingCosts,
@ -427,10 +424,7 @@
noTaxDevelopCosts: '',
noTaxShippingCosts: '',
noTaxServiceCosts: '',
noTaxLaborCosts: '',
noTaxPromotionalCosts: '',
noTaxBusinessCosts: '',
noTaxManagesCosts: '',
totalOperatingCosts: '',
noTaxMaterialCosts: '',
noTaxOperatingCosts: '',
taxOperatingCosts: '',
@ -453,24 +447,12 @@
formHtml += '<label for="noTaxServiceCosts' + index + '">不含税服务成本(RMB):</label>';
formHtml += '<input type="text" class="form-control" id="noTaxServiceCosts' + index + '" name="noTaxServiceCosts' + index + '" value="' + costs.noTaxServiceCosts + '" readonly>';
formHtml += '</div>';
formHtml += '<h3>总经营成本</h3>';
formHtml += '<h3>上一年度总经营成本</h3>';
formHtml += '<div class="form-group">';
formHtml += '<label for="noTaxLaborCosts' + index + '">不含税人工成本(RMB):</label>';
formHtml += '<input type="text" class="form-control" id="noTaxLaborCosts' + index + '" name="noTaxLaborCosts' + index + '" value="' + costs.noTaxLaborCosts + '" readonly>';
formHtml += '<label for="totalOperatingCosts' + index + '">不含税总经营成本(RMB):</label>';
formHtml += '<input type="text" class="form-control" id="totalOperatingCosts' + index + '" name="totalOperatingCosts' + index + '" value="' + costs.totalOperatingCosts + '" readonly>';
formHtml += '</div>';
formHtml += '<div class="form-group">';
formHtml += '<label for="noTaxPromotionalCosts' + index + '">不含税推广成本(RMB):</label>';
formHtml += '<input type="text" class="form-control" id="noTaxPromotionalCosts' + index + '" name="noTaxPromotionalCosts' + index + '" value="' + costs.noTaxPromotionalCosts + '" readonly>';
formHtml += '</div>';
formHtml += '<div class="form-group">';
formHtml += '<label for="noTaxBusinessCosts' + index + '">不含税业务成本(RMB):</label>';
formHtml += '<input type="text" class="form-control" id="noTaxBusinessCosts' + index + '" name="noTaxBusinessCosts' + index + '" value="' + costs.noTaxBusinessCosts + '" readonly>';
formHtml += '</div>';
formHtml += '<div class="form-group">';
formHtml += '<label for="noTaxManagesCosts' + index + '">不含税管理成本(RMB):</label>';
formHtml += '<input type="text" class="form-control" id="noTaxManagesCosts' + index + '" name="noTaxManagesCosts' + index + '" value="' + costs.noTaxManagesCosts + '" readonly>';
formHtml += '</div>';
formHtml += '<h3>总物料成本</h3>';
formHtml += '<h3>上一年度总物料成本</h3>';
formHtml += '<div class="form-group">';
formHtml += '<label for="noTaxMaterialCosts' + index + '">不含税总物料成本(RMB):</label>';
formHtml += '<input type="text" class="form-control" id="noTaxMaterialCosts' + index + '" name="noTaxMaterialCosts' + index + '" value="' + costs.noTaxMaterialCosts + '" readonly>';
@ -506,17 +488,8 @@
// 根据 input 的 id 或 name 进行相应的计算
switch (inputId) {
case 'noTaxLaborCosts' + index:
calculateOperatingCosts(inputValue, 'noTaxLaborCosts');
break;
case 'noTaxPromotionalCosts' + index:
calculateOperatingCosts(inputValue, 'noTaxPromotionalCosts');
break;
case 'noTaxBusinessCosts' + index:
calculateOperatingCosts(inputValue, 'noTaxBusinessCosts');
break;
case 'noTaxManagesCosts' + index:
calculateOperatingCosts(inputValue, 'noTaxManagesCosts');
case 'totalOperatingCosts' + index:
calculateOperatingCosts(inputValue, 'totalOperatingCosts');
break;
case 'noTaxMaterialCosts' + index:
updateMaterialCosts(inputValue);
@ -529,41 +502,47 @@
});
function calculateOperatingCosts(value, costType) {
var noAllTaxOperatingCosts = 0;
// var totalOperatingCosts = 0;
var allNoTaxPurchaseRmb = 0;
var allTaxPurchaseRmb = 0;
// 获取所有相关的不含税成本
['noTaxLaborCosts', 'noTaxPromotionalCosts', 'noTaxBusinessCosts', 'noTaxManagesCosts'].forEach(function(cost) {
var currentCost = parseFloat($form.find('#' + cost + index).val());
noAllTaxOperatingCosts += currentCost;
});
// // 获取所有相关的不含税成本
// ['noTaxLaborCosts', 'noTaxPromotionalCosts', 'noTaxBusinessCosts', 'noTaxManagesCosts'].forEach(function(cost) {
// var currentCost = parseFloat($form.find('#' + cost + index).val());
// noAllTaxOperatingCosts += currentCost;
// });
// 更新不含税总经营成本
$form.find('#noAllTaxOperatingCosts' + index).val(noAllTaxOperatingCosts.toFixed(2));
// 更新上一年度不含税总经营成本
var totalOperatingCosts = parseFloat($form.find('#totalOperatingCosts' + index).val());
// 计算含税总经营成本
var allTaxOperatingCosts = noAllTaxOperatingCosts * 1.13;
// 计算上一年度含税总经营成本
var allTaxOperatingCosts = totalOperatingCosts * 1.13;
$form.find('#allTaxOperatingCosts' + index).val(allTaxOperatingCosts.toFixed(2));
// 遍历数据集计算不含税采购成本和含税采购成本
data.forEach(function(item) {
item.rows.forEach(function(row) {
var noTaxPurchaseRmb = row.noTaxPurchaseRmb * row.useNum;
var taxPurchaseRmb = row.taxPurchaseRmb * row.useNum;
// var noTaxPurchaseRmb = row.noTaxPurchaseRmb * row.useNum;
// var taxPurchaseRmb = row.taxPurchaseRmb * row.useNum;
var noTaxPurchaseRmb = row.noTaxPurchaseRmb;
var taxPurchaseRmb = row.taxPurchaseRmb;
allNoTaxPurchaseRmb += noTaxPurchaseRmb;
allTaxPurchaseRmb += taxPurchaseRmb;
});
});
// 该料号的不含税经营成本
var noTaxMaterialCosts = parseFloat($form.find('#noTaxMaterialCosts' + index).val());
var noTaxOperatingCosts = (allNoTaxPurchaseRmb / noTaxMaterialCosts) * noAllTaxOperatingCosts;
var noTaxMaterialCosts = parseFloat($form.find('#noTaxMaterialCosts' + index).val());//不含税总物料成本
var allTaxMaterialCosts = noTaxMaterialCosts * 1.13;//含税总物料成本
// 该料号的不含税经营成本(RMB)=(该料号的BOM物料不含税总采购成本/上一年度总物料不含税成本合计)*上一年度的总经营不含税成本合计
var noTaxOperatingCosts = (allNoTaxPurchaseRmb / noTaxMaterialCosts) * totalOperatingCosts;
$form.find('#noTaxOperatingCosts' + index).val(noTaxOperatingCosts.toFixed(2));
// 该料号的含税经营成本
var taxOperatingCosts = (allTaxPurchaseRmb / noTaxMaterialCosts) * allTaxOperatingCosts;
// 该料号含税经营成本(RMB)=(该料号BOM物料含税总采购成本/上一年度总物料含税成本合计)*上一年度的总经营含税成本合计
var taxOperatingCosts = (allTaxPurchaseRmb / allTaxMaterialCosts) * allTaxOperatingCosts;
$form.find('#taxOperatingCosts' + index).val(taxOperatingCosts.toFixed(2));
}
@ -576,23 +555,46 @@
// 遍历数据集计算不含税采购成本和含税采购成本
data.forEach(function(item) {
item.rows.forEach(function(row) {
var noTaxPurchaseRmb = row.noTaxPurchaseRmb * row.useNum;
var taxPurchaseRmb = row.taxPurchaseRmb * row.useNum;
// var noTaxPurchaseRmb = row.noTaxPurchaseRmb * row.useNum;
// var taxPurchaseRmb = row.taxPurchaseRmb * row.useNum;
var noTaxPurchaseRmb = row.noTaxPurchaseRmb;
var taxPurchaseRmb = row.taxPurchaseRmb;
allNoTaxPurchaseRmb += noTaxPurchaseRmb;
allTaxPurchaseRmb += taxPurchaseRmb;
});
});
// 更新不含税经营成本
var noAllTaxOperatingCosts = parseFloat($form.find('#noAllTaxOperatingCosts' + index).val());
var noTaxOperatingCosts = (noTaxPurchaseRmb / value) * noAllTaxOperatingCosts;
// // 更新不含税经营成本
// var noAllTaxOperatingCosts = parseFloat($form.find('#noAllTaxOperatingCosts' + index).val());
// var noTaxOperatingCosts = (noTaxPurchaseRmb / value) * noAllTaxOperatingCosts;
// $form.find('#noTaxOperatingCosts' + index).val(noTaxOperatingCosts.toFixed(2));
//
// // 更新含税经营成本
// var taxOperatingCosts = (taxPurchaseRmb / value) * noAllTaxOperatingCosts;
// $form.find('#taxOperatingCosts' + index).val(taxOperatingCosts.toFixed(2));
// 更新上一年度不含税总经营成本
var totalOperatingCosts = parseFloat($form.find('#totalOperatingCosts' + index).val());
// 计算上一年度含税总经营成本
var allTaxOperatingCosts = totalOperatingCosts * 1.13;
$form.find('#allTaxOperatingCosts' + index).val(allTaxOperatingCosts.toFixed(2));
// 该料号的不含税经营成本(RMB)=(该料号的BOM物料不含税总采购成本/上一年度总物料不含税成本合计)*上一年度的总经营不含税成本合计
var noTaxMaterialCosts = parseFloat($form.find('#noTaxMaterialCosts' + index).val());
var allTaxMaterialCosts = noTaxMaterialCosts * 1.13;
var noTaxOperatingCosts = (allNoTaxPurchaseRmb / noTaxMaterialCosts) * totalOperatingCosts;
$form.find('#noTaxOperatingCosts' + index).val(noTaxOperatingCosts.toFixed(2));
// 更新含税经营成本
var taxOperatingCosts = (taxPurchaseRmb / value) * noAllTaxOperatingCosts;
// 该料号含税经营成本(RMB)=(该料号的BOM物料含税总采购成本/上一年度总物料含税成本合计)*上一年度的总经营含税成本合计
var taxOperatingCosts = (allTaxPurchaseRmb / allTaxMaterialCosts) * allTaxOperatingCosts;
$form.find('#taxOperatingCosts' + index).val(taxOperatingCosts.toFixed(2));
}
}
});

8
ruoyi-admin/src/main/resources/templates/system/salesOrder/salesOrder.html

@ -111,11 +111,11 @@
<i class="fa fa-plus"></i> 添加
</a>
<a class="btn btn-success" onclick="exportExcel()" shiro:hasPermission="system:salesOrder:export">
<i class="fa fa-download"></i> 导出销售订单列表
</a>
<a class="btn btn-success" onclick="exportSalesOrder()" shiro:hasPermission="system:salesOrder:exportSalesOrder">
<i class="fa fa-download"></i> 导出销售订单模板
<i class="fa fa-download"></i> 导出
</a>
<!-- <a class="btn btn-success" onclick="exportSalesOrder()" shiro:hasPermission="system:salesOrder:exportSalesOrder">-->
<!-- <i class="fa fa-download"></i> 导出销售订单模板-->
<!-- </a>-->
<a class="btn btn-success" onclick="salesDeliverGoods()" shiro:hasPermission="system:salesOrder:salesDeliverGoods">
<i class="fa fa-plus"></i> 出货
</a>

4
ruoyi-admin/src/main/resources/templates/system/salesShippingInform/salesShippingInform.html

@ -524,7 +524,7 @@
const row = selectedRows[0];
// 使用 $.modal.confirm 显示确认对话框
$.modal.confirm("确定导出这条数据的出货吗?", function() {
$.modal.confirm("确定导出这条数据的出货发票1吗?", function() {
// 如果用户点击确定,继续导出
var outOrderCode = row.outOrderCode;
window.location.href = prefix + "/exportShippingInvoiceOne/" + outOrderCode;
@ -546,7 +546,7 @@
const row = selectedRows[0];
// 使用 $.modal.confirm 显示确认对话框
$.modal.confirm("确定导出这条数据的出货吗?", function() {
$.modal.confirm("确定导出这条数据的出货发票吗?", function() {
// 如果用户点击确定,继续导出
var outOrderCode = row.outOrderCode;
window.location.href = prefix + "/exportShippingInvoiceTwo/" + outOrderCode;

Loading…
Cancel
Save