From 067af762685339aa35f970e0ddb10c50bec69a04 Mon Sep 17 00:00:00 2001 From: liuxiaoxu <1793812695@qq.com> Date: Mon, 2 Dec 2024 14:02:08 +0800 Subject: [PATCH 01/10] =?UTF-8?q?[feat]=20=E9=94=80=E5=94=AE=E7=AE=A1?= =?UTF-8?q?=E7=90=86=20=E4=BF=AE=E6=94=B9=E6=80=BB=E7=BB=8F=E7=90=86?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=BB=8F=E8=90=A5=E6=88=90=E6=9C=AC=E5=89=8D?= =?UTF-8?q?=E7=AB=AF=E9=A1=B5=E9=9D=A2=EF=BC=9A=E5=8E=BB=E6=8E=89=E6=8F=90?= =?UTF-8?q?=E4=BA=A4=E6=96=B9=E6=B3=95=E4=B8=AD=20=E4=B8=8D=E5=90=AB?= =?UTF-8?q?=E7=A8=8E=E4=BA=BA=E5=B7=A5=E6=88=90=E6=9C=AC=E3=80=81=E4=B8=8D?= =?UTF-8?q?=E5=90=AB=E7=A8=8E=E6=8E=A8=E5=B9=BF=E6=88=90=E6=9C=AC=E3=80=81?= =?UTF-8?q?=E4=B8=8D=E5=90=AB=E7=A8=8E=E4=B8=9A=E5=8A=A1=E6=88=90=E6=9C=AC?= =?UTF-8?q?=E3=80=81=E4=B8=8D=E5=90=AB=E7=A8=8E=E7=AE=A1=E7=90=86=E6=88=90?= =?UTF-8?q?=E6=9C=AC=E7=9B=B8=E5=85=B3=E7=9A=84=E6=96=B9=E6=B3=95=20?= =?UTF-8?q?=E5=8E=BB=E6=8E=89=20=E4=BB=8E=20`salesEstimateDetailVo`=20?= =?UTF-8?q?=E4=B8=AD=E8=8E=B7=E5=8F=96=E5=85=B6=E4=BB=96=E6=88=90=E6=9C=AC?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E6=96=B9=E6=B3=95=E4=B8=AD=E7=9A=84=EF=BC=8C?= =?UTF-8?q?=E4=B8=8A=E8=BF=B0=E5=9B=9B=E4=B8=AA=E5=AD=97=E6=AE=B5=EF=BC=8C?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=B8=8A=E4=B8=80=E5=B9=B4=E5=BA=A6=E7=9A=84?= =?UTF-8?q?=E6=80=BB=E7=BB=8F=E8=90=A5=E4=B8=8D=E5=90=AB=E7=A8=8E=E6=88=90?= =?UTF-8?q?=E6=9C=AC=E5=90=88=E8=AE=A1=EF=BC=9B=E8=AE=A1=E7=AE=97=E4=B8=8A?= =?UTF-8?q?=E4=B8=80=E5=B9=B4=E5=BA=A6=E5=90=AB=E7=A8=8E=E6=80=BB=E7=BB=8F?= =?UTF-8?q?=E8=90=A5=E6=88=90=E6=9C=AC=EF=BC=8C=E5=A2=9E=E5=80=BC=E7=A8=8E?= =?UTF-8?q?=E7=8E=87=E4=B8=BA=2013%=EF=BC=9B=E8=AE=A1=E7=AE=97=20=E4=B8=8A?= =?UTF-8?q?=E4=B8=80=E5=B9=B4=E5=BA=A6=E6=80=BB=E7=89=A9=E6=96=99=E5=90=AB?= =?UTF-8?q?=E7=A8=8E=E6=88=90=E6=9C=AC=E5=90=88=E8=AE=A1=EF=BC=8C=E5=A2=9E?= =?UTF-8?q?=E5=80=BC=E7=A8=8E=E7=8E=87=E4=B8=BA=2013%=EF=BC=9B=E8=AE=A1?= =?UTF-8?q?=E7=AE=97=E8=AF=A5=E6=96=99=E5=8F=B7=E7=9A=84=E4=B8=8D=E5=90=AB?= =?UTF-8?q?=E7=A8=8E=E7=BB=8F=E8=90=A5=E6=88=90=E6=9C=AC=20(RMB)=3D(?= =?UTF-8?q?=E8=AF=A5=E6=96=99=E5=8F=B7=E7=9A=84BOM=E7=89=A9=E6=96=99?= =?UTF-8?q?=E4=B8=8D=E5=90=AB=E7=A8=8E=E6=80=BB=E9=87=87=E8=B4=AD=E6=88=90?= =?UTF-8?q?=E6=9C=AC/=E4=B8=8A=E4=B8=80=E5=B9=B4=E5=BA=A6=E6=80=BB?= =?UTF-8?q?=E7=89=A9=E6=96=99=E4=B8=8D=E5=90=AB=E7=A8=8E=E6=88=90=E6=9C=AC?= =?UTF-8?q?=E5=90=88=E8=AE=A1)*=E4=B8=8A=E4=B8=80=E5=B9=B4=E5=BA=A6?= =?UTF-8?q?=E7=9A=84=E6=80=BB=E7=BB=8F=E8=90=A5=E4=B8=8D=E5=90=AB=E7=A8=8E?= =?UTF-8?q?=E6=88=90=E6=9C=AC=E5=90=88=E8=AE=A1=EF=BC=9B=E8=AE=A1=E7=AE=97?= =?UTF-8?q?=E8=AF=A5=E6=96=99=E5=8F=B7=E7=9A=84=E5=90=AB=E7=A8=8E=E7=BB=8F?= =?UTF-8?q?=E8=90=A5=E6=88=90=E6=9C=AC=20(RMB)=3D(=E8=AF=A5=E6=96=99?= =?UTF-8?q?=E5=8F=B7=E7=9A=84BOM=E7=89=A9=E6=96=99=E5=90=AB=E7=A8=8E?= =?UTF-8?q?=E6=80=BB=E9=87=87=E8=B4=AD=E6=88=90=E6=9C=AC/=E4=B8=8A?= =?UTF-8?q?=E4=B8=80=E5=B9=B4=E5=BA=A6=E6=80=BB=E7=89=A9=E6=96=99=E5=90=AB?= =?UTF-8?q?=E7=A8=8E=E6=88=90=E6=9C=AC=E5=90=88=E8=AE=A1)*=E4=B8=8A?= =?UTF-8?q?=E4=B8=80=E5=B9=B4=E5=BA=A6=E7=9A=84=E6=80=BB=E7=BB=8F=E8=90=A5?= =?UTF-8?q?=E5=90=AB=E7=A8=8E=E6=88=90=E6=9C=AC=E5=90=88=E8=AE=A1=20?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=20=E6=80=BB=E7=BB=8F=E8=90=A5=E6=88=90?= =?UTF-8?q?=E6=9C=AC->=E4=B8=8A=E4=B8=80=E5=B9=B4=E5=BA=A6=E6=80=BB?= =?UTF-8?q?=E7=BB=8F=E8=90=A5=E6=88=90=E6=9C=AC;=E6=80=BB=E7=89=A9?= =?UTF-8?q?=E6=96=99=E6=88=90=E6=9C=AC->=E4=B8=8A=E4=B8=80=E5=B9=B4?= =?UTF-8?q?=E5=BA=A6=E6=80=BB=E7=89=A9=E6=96=99=E6=88=90=E6=9C=AC;=20?= =?UTF-8?q?=E4=BA=8B=E4=BB=B6=E7=9B=91=E5=90=AC=E5=8E=BB=E6=8E=89=E4=B9=8B?= =?UTF-8?q?=E5=89=8D=E5=9B=9B=E4=B8=AA=E6=88=90=E6=9C=AC=E7=9A=84=E7=9B=91?= =?UTF-8?q?=E5=90=AC=E4=BA=8B=E4=BB=B6=EF=BC=8C=E5=8A=A0=E4=B8=8AtotalOper?= =?UTF-8?q?atingCosts=E7=9B=91=E5=90=AC=E4=BA=8B=E4=BB=B6=20=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=20calculateOperatingCosts=E6=96=B9=E6=B3=95=EF=BC=8C?= =?UTF-8?q?=E9=80=9A=E8=BF=87=E8=BE=93=E5=85=A5=E4=B8=8D=E5=90=AB=E7=A8=8E?= =?UTF-8?q?=E6=80=BB=E7=BB=8F=E8=90=A5=E6=88=90=E6=9C=AC(RMB)=EF=BC=8C?= =?UTF-8?q?=E5=92=8C=E4=B8=8D=E5=90=AB=E7=A8=8E=E6=80=BB=E7=89=A9=E6=96=99?= =?UTF-8?q?=E6=88=90=E6=9C=AC(RMB)=E5=8A=A8=E6=80=81=E8=AE=A1=E7=AE=97?= =?UTF-8?q?=E4=B8=8D=E5=90=AB=E7=A8=8E=E7=BB=8F=E8=90=A5=E6=88=90=E6=9C=AC?= =?UTF-8?q?(RMB)=E3=80=81=E5=90=AB=E7=A8=8E=E7=BB=8F=E8=90=A5=E6=88=90?= =?UTF-8?q?=E6=9C=AC(RMB)=20=E9=94=80=E5=94=AE=E4=BC=B0=E4=BB=B7=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E6=95=B0=E6=8D=AE=E5=BA=93=E8=A1=A8=E3=80=81=E5=AE=9E?= =?UTF-8?q?=E4=BD=93=E7=B1=BB=E5=92=8Cmapper.xml=E5=B1=82=E7=9A=84?= =?UTF-8?q?=E6=89=80=E6=9C=89=E6=96=B9=E6=B3=95=E6=96=B0=E5=A2=9E=20?= =?UTF-8?q?=E4=B8=8A=E4=B8=80=E5=B9=B4=E5=BA=A6=E4=B8=8D=E5=90=AB=E7=A8=8E?= =?UTF-8?q?=E6=80=BB=E7=BB=8F=E8=90=A5=E6=88=90=E6=9C=AC=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=20=E7=89=A9=E6=96=99=E8=AF=A6=E6=83=85=E5=AD=90=E8=A1=A8?= =?UTF-8?q?=E5=8C=85=E6=8B=ACform=E8=A1=A8=E5=8D=95=E7=9A=84=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=20=E5=8E=BB=E6=8E=89=E4=B8=8D=E5=90=AB=E7=A8=8E?= =?UTF-8?q?=E4=BA=BA=E5=B7=A5=E6=88=90=E6=9C=AC=E3=80=81=E4=B8=8D=E5=90=AB?= =?UTF-8?q?=E7=A8=8E=E6=8E=A8=E5=B9=BF=E6=88=90=E6=9C=AC=E3=80=81=E4=B8=8D?= =?UTF-8?q?=E5=90=AB=E7=A8=8E=E4=B8=9A=E5=8A=A1=E6=88=90=E6=9C=AC=E3=80=81?= =?UTF-8?q?=E4=B8=8D=E5=90=AB=E7=A8=8E=E7=AE=A1=E7=90=86=E6=88=90=E6=9C=AC?= =?UTF-8?q?=EF=BC=8C=E6=96=B0=E5=A2=9E=20=E4=B8=8A=E4=B8=80=E5=B9=B4?= =?UTF-8?q?=E5=BA=A6=E4=B8=8D=E5=90=AB=E7=A8=8E=E6=80=BB=E7=BB=8F=E8=90=A5?= =?UTF-8?q?=E6=88=90=E6=9C=AC=E5=AD=97=E6=AE=B5=20=E4=BF=AE=E6=94=B9=20?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E9=94=80=E5=94=AE=E4=BC=B0=E4=BB=B7=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E7=89=A9=E6=96=99=E4=BB=B7=E6=A0=BC=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E6=96=B9=E6=B3=95=EF=BC=9A=E6=96=B0=E5=A2=9E=20=E7=BB=99?= =?UTF-8?q?=E4=B8=8A=E4=B8=80=E5=B9=B4=E5=BA=A6=E4=B8=8D=E5=90=AB=E7=A8=8E?= =?UTF-8?q?=E6=80=BB=E7=BB=8F=E8=90=A5=E6=88=90=E6=9C=AC=E8=B5=8B=E5=80=BC?= =?UTF-8?q?=EF=BC=8C=E5=8E=BB=E6=8E=89=E4=B9=8B=E5=89=8D=E5=9B=9B=E4=B8=AA?= =?UTF-8?q?=E7=9A=84=E8=B5=8B=E5=80=BC=20=E4=BF=AE=E6=94=B9=20=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E9=94=80=E5=94=AE=E4=BC=B0=E4=BB=B7Vo=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E6=96=B9=E6=B3=95=EF=BC=9A=E6=96=B0=E5=A2=9E=20?= =?UTF-8?q?=E7=BB=99=E4=B8=8A=E4=B8=80=E5=B9=B4=E5=BA=A6=E4=B8=8D=E5=90=AB?= =?UTF-8?q?=E7=A8=8E=E6=80=BB=E7=BB=8F=E8=90=A5=E6=88=90=E6=9C=AC=E8=B5=8B?= =?UTF-8?q?=E5=80=BC=EF=BC=8C=E5=8E=BB=E6=8E=89=E4=B9=8B=E5=89=8D=E5=9B=9B?= =?UTF-8?q?=E4=B8=AA=E7=9A=84=E8=B5=8B=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sales/domain/SalesEstimateDetail.java | 13 ++ .../VO/SalesEstimateDetailMaterialVo.java | 13 +- ...alesEstimateDetailMaterialServiceImpl.java | 5 +- .../impl/SalesEstimateServiceImpl.java | 6 +- .../sales/SalesEstimateDetailMapper.xml | 8 +- .../templates/sales/estimate/ceoAdd.html | 177 +++++++----------- 6 files changed, 94 insertions(+), 128 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sales/domain/SalesEstimateDetail.java b/ruoyi-admin/src/main/java/com/ruoyi/sales/domain/SalesEstimateDetail.java index 2544a160..b4b1b282 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/sales/domain/SalesEstimateDetail.java +++ b/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 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 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()) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sales/domain/VO/SalesEstimateDetailMaterialVo.java b/ruoyi-admin/src/main/java/com/ruoyi/sales/domain/VO/SalesEstimateDetailMaterialVo.java index 0c6030f8..775dd7d3 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/sales/domain/VO/SalesEstimateDetailMaterialVo.java +++ b/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; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sales/service/impl/SalesEstimateDetailMaterialServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/sales/service/impl/SalesEstimateDetailMaterialServiceImpl.java index 23b193bb..4452bc3a 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/sales/service/impl/SalesEstimateDetailMaterialServiceImpl.java +++ b/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()); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sales/service/impl/SalesEstimateServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/sales/service/impl/SalesEstimateServiceImpl.java index 26c15b03..764f3d23 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/sales/service/impl/SalesEstimateServiceImpl.java +++ b/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; } diff --git a/ruoyi-admin/src/main/resources/mapper/sales/SalesEstimateDetailMapper.xml b/ruoyi-admin/src/main/resources/mapper/sales/SalesEstimateDetailMapper.xml index 02554362..e964afc5 100644 --- a/ruoyi-admin/src/main/resources/mapper/sales/SalesEstimateDetailMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/sales/SalesEstimateDetailMapper.xml @@ -37,6 +37,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -45,7 +46,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - 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 '; formHtml += ''; - formHtml += '

总经营成本

'; + formHtml += '

上一年度总经营成本

'; formHtml += '
'; - formHtml += ''; - formHtml += ''; + formHtml += ''; + formHtml += ''; formHtml += '
'; - formHtml += '
'; - formHtml += ''; - formHtml += ''; - formHtml += '
'; - formHtml += '
'; - formHtml += ''; - formHtml += ''; - formHtml += '
'; - formHtml += '
'; - formHtml += ''; - formHtml += ''; - formHtml += '
'; - formHtml += '

总物料成本

'; + formHtml += '

上一年度总物料成本

'; formHtml += '
'; formHtml += ''; formHtml += ''; @@ -669,17 +617,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,21 +631,21 @@ }); 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)); // 遍历数据集计算不含税采购成本和含税采购成本 @@ -720,13 +659,16 @@ }); }); - // 该料号的不含税经营成本 - 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)); } @@ -747,14 +689,33 @@ }); }); - // 更新不含税经营成本 - 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)); + + } } }); From 1b63514992bea9c813f790396315f422593b3885 Mon Sep 17 00:00:00 2001 From: liuxiaoxu <1793812695@qq.com> Date: Mon, 2 Dec 2024 15:25:06 +0800 Subject: [PATCH 02/10] =?UTF-8?q?[feat]=20=E9=94=80=E5=94=AE=E7=AE=A1?= =?UTF-8?q?=E7=90=86=20=E4=BF=AE=E6=94=B9=E9=94=80=E5=94=AE=E4=BC=B0?= =?UTF-8?q?=E4=BB=B7=E7=9A=84=E6=80=BB=E7=BB=8F=E7=90=86=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=89=8D=E7=AB=AF=E9=A1=B5=E9=9D=A2=EF=BC=8C=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=E6=96=B9=E6=B3=95=E6=96=B0=E5=A2=9E=E4=B8=8D=E5=90=AB=E7=A8=8E?= =?UTF-8?q?=E6=80=BB=E7=BB=8F=E8=90=A5=E6=88=90=E6=9C=AC=E4=B8=8D=E8=83=BD?= =?UTF-8?q?=E4=B8=BA=E7=A9=BA=E7=9A=84=E5=88=A4=E6=96=AD=E6=9D=A1=E4=BB=B6?= =?UTF-8?q?=20=E5=8E=BB=E6=8E=89=E4=B8=8D=E5=90=AB=E7=A8=8E=E9=87=87?= =?UTF-8?q?=E8=B4=AD=E6=88=90=E6=9C=AC=E5=92=8C=E5=90=AB=E7=A8=8E=E9=87=87?= =?UTF-8?q?=E8=B4=AD=E6=88=90=E6=9C=AC=E4=B9=98=E4=BB=A5=E7=94=A8=E9=87=8F?= =?UTF-8?q?=E7=9A=84=E8=AE=A1=E7=AE=97=E8=A7=84=E5=88=99=20=E6=8C=89?= =?UTF-8?q?=E7=85=A7=E9=94=80=E5=94=AE=E4=BC=B0=E4=BB=B7=E6=80=BB=E7=BB=8F?= =?UTF-8?q?=E7=90=86=E6=B7=BB=E5=8A=A0=E5=89=8D=E7=AB=AF=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=EF=BC=8C=E9=87=8D=E5=86=99=E8=AF=A6=E6=83=85=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=20=E4=BF=AE=E6=94=B9=20=E6=80=BB=E7=BB=8F=E7=90=86=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E9=94=80=E5=94=AE=E4=BC=B0=E4=BB=B7=E5=90=8E=E7=AB=AF?= =?UTF-8?q?=E6=96=B9=E6=B3=95=EF=BC=8C=E6=8C=89=E7=85=A7=E4=BB=A5=E4=B8=8B?= =?UTF-8?q?=E8=AE=A1=E7=AE=97=E8=A7=84=E5=88=99=E8=AE=A1=E7=AE=97=201?= =?UTF-8?q?=E3=80=81=E4=B8=8D=E5=90=AB=E7=A8=8E=E6=96=99=E5=8F=B7=E4=BC=B0?= =?UTF-8?q?=E4=BB=B7=E6=88=90=E6=9C=AC=3D=E8=AF=A5=E6=96=99=E5=8F=B7?= =?UTF-8?q?=E7=9A=84BOM=E7=89=A9=E6=96=99=E4=B8=8D=E5=90=AB=E7=A8=8E?= =?UTF-8?q?=E6=80=BB=E9=87=87=E8=B4=AD=E6=88=90=E6=9C=AC+=E4=B8=8D?= =?UTF-8?q?=E5=90=AB=E7=A8=8E=E8=BF=90=E8=BE=93=E6=88=90=E6=9C=AC+?= =?UTF-8?q?=E4=B8=8D=E5=90=AB=E7=A8=8E=E6=9C=8D=E5=8A=A1=E6=88=90=E6=9C=AC?= =?UTF-8?q?+=E4=B8=8D=E5=90=AB=E7=A8=8E=E5=BC=80=E5=8F=91=E6=88=90?= =?UTF-8?q?=E6=9C=AC+(=E8=AF=A5=E6=96=99=E5=8F=B7=E7=9A=84BOM=E7=89=A9?= =?UTF-8?q?=E6=96=99=E4=B8=8D=E5=90=AB=E7=A8=8E=E6=80=BB=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E6=88=90=E6=9C=AC/=E4=B8=8D=E5=90=AB=E7=A8=8E=E6=80=BB?= =?UTF-8?q?=E7=89=A9=E6=96=99=E6=88=90=E6=9C=AC)*=E4=B8=8A=E4=B8=80?= =?UTF-8?q?=E5=B9=B4=E5=BA=A6=E7=9A=84=E6=80=BB=E7=BB=8F=E8=90=A5=E4=B8=8D?= =?UTF-8?q?=E5=90=AB=E7=A8=8E=E6=88=90=E6=9C=AC=E5=90=88=E8=AE=A1=201.1?= =?UTF-8?q?=E3=80=81=E8=AF=A5=E6=96=99=E5=8F=B7=E7=9A=84BOM=E7=89=A9?= =?UTF-8?q?=E6=96=99=E4=B8=8D=E5=90=AB=E7=A8=8E=E6=80=BB=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E6=88=90=E6=9C=AC=3D=E6=89=8B=E5=A1=AB=E7=9A=84bom=E7=89=A9?= =?UTF-8?q?=E6=96=99=E7=9A=84=E6=80=BB=E7=9A=84=E4=B8=8D=E5=90=AB=E7=A8=8E?= =?UTF-8?q?=E9=87=87=E8=B4=AD=E5=8D=95=E4=BB=B7=E7=9A=84=E5=90=88=E8=AE=A1?= =?UTF-8?q?=202=E3=80=81=E5=90=AB=E7=A8=8E=E6=96=99=E5=8F=B7=E4=BC=B0?= =?UTF-8?q?=E4=BB=B7=E6=88=90=E6=9C=AC=3D=E8=AF=A5=E6=96=99=E5=8F=B7?= =?UTF-8?q?=E7=9A=84BOM=E7=89=A9=E6=96=99=E5=90=AB=E7=A8=8E=E6=80=BB?= =?UTF-8?q?=E9=87=87=E8=B4=AD=E6=88=90=E6=9C=AC+=E5=90=AB=E7=A8=8E?= =?UTF-8?q?=E8=BF=90=E8=BE=93=E6=88=90=E6=9C=AC+=E5=90=AB=E7=A8=8E?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E6=88=90=E6=9C=AC+=E5=90=AB=E7=A8=8E?= =?UTF-8?q?=E5=BC=80=E5=8F=91=E6=88=90=E6=9C=AC+(=E8=AF=A5=E6=96=99?= =?UTF-8?q?=E5=8F=B7=E7=9A=84BOM=E7=89=A9=E6=96=99=E5=90=AB=E7=A8=8E?= =?UTF-8?q?=E6=80=BB=E9=87=87=E8=B4=AD=E6=88=90=E6=9C=AC/=E5=90=AB?= =?UTF-8?q?=E7=A8=8E=E6=80=BB=E7=89=A9=E6=96=99=E6=88=90=E6=9C=AC)*?= =?UTF-8?q?=E4=B8=8A=E4=B8=80=E5=B9=B4=E5=BA=A6=E7=9A=84=E6=80=BB=E7=BB=8F?= =?UTF-8?q?=E8=90=A5=E5=90=AB=E7=A8=8E=E6=88=90=E6=9C=AC=E5=90=88=E8=AE=A1?= =?UTF-8?q?=202.1=E3=80=81=E8=AF=A5=E6=96=99=E5=8F=B7=E7=9A=84BOM=E7=89=A9?= =?UTF-8?q?=E6=96=99=E5=90=AB=E7=A8=8E=E6=80=BB=E9=87=87=E8=B4=AD=E6=88=90?= =?UTF-8?q?=E6=9C=AC=3D=E6=89=8B=E5=A1=AB=E7=9A=84bom=E7=89=A9=E6=96=99?= =?UTF-8?q?=E7=9A=84=E6=80=BB=E7=9A=84=E5=90=AB=E7=A8=8E=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E5=8D=95=E4=BB=B7=E7=9A=84=E5=90=88=E8=AE=A1=203=E3=80=81?= =?UTF-8?q?=E4=B8=8D=E5=90=AB=E7=A8=8E=E8=BF=90=E8=BE=93=E6=88=90=E6=9C=AC?= =?UTF-8?q?=EF=BC=9A=E6=89=8B=E5=A1=AB=EF=BC=88=E4=B8=9A=E5=8A=A1=E5=A1=AB?= =?UTF-8?q?=E5=86=99=EF=BC=89=20=E5=90=AB=E7=A8=8E=E8=BF=90=E8=BE=93?= =?UTF-8?q?=E6=88=90=E6=9C=AC=3D=EF=BC=881+0.13=EF=BC=89*=E4=B8=8D?= =?UTF-8?q?=E5=90=AB=E7=A8=8E=E8=BF=90=E8=BE=93=E6=88=90=E6=9C=AC=204?= =?UTF-8?q?=E3=80=81=E4=B8=8D=E5=90=AB=E7=A8=8E=E6=9C=8D=E5=8A=A1=E6=88=90?= =?UTF-8?q?=E6=9C=AC=EF=BC=9A=E6=89=8B=E5=A1=AB=EF=BC=88=E4=B8=9A=E5=8A=A1?= =?UTF-8?q?=E5=A1=AB=E5=86=99=EF=BC=89=20=E5=90=AB=E7=A8=8E=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E6=88=90=E6=9C=AC=3D=EF=BC=881+0.13=EF=BC=89*?= =?UTF-8?q?=E4=B8=8D=E5=90=AB=E7=A8=8E=E6=9C=8D=E5=8A=A1=E6=88=90=E6=9C=AC?= =?UTF-8?q?=205=E3=80=81=E4=B8=8D=E5=90=AB=E7=A8=8E=E5=BC=80=E5=8F=91?= =?UTF-8?q?=E6=88=90=E6=9C=AC=EF=BC=9A=E6=89=8B=E5=A1=AB=EF=BC=88=E5=B7=A5?= =?UTF-8?q?=E7=A8=8B=E5=A1=AB=E5=86=99=EF=BC=89=20=E5=90=AB=E7=A8=8E?= =?UTF-8?q?=E5=BC=80=E5=8F=91=E6=88=90=E6=9C=AC=3D=EF=BC=881+0.13=EF=BC=89?= =?UTF-8?q?*=E4=B8=8D=E5=90=AB=E7=A8=8E=E5=BC=80=E5=8F=91=E6=88=90?= =?UTF-8?q?=E6=9C=AC=206.1=E3=80=81=E8=AF=A5=E6=96=99=E5=8F=B7=E7=9A=84?= =?UTF-8?q?=E4=B8=8D=E5=90=AB=E7=A8=8E=E7=BB=8F=E8=90=A5=E6=88=90=E6=9C=AC?= =?UTF-8?q?(RMB)=3D(=E8=AF=A5=E6=96=99=E5=8F=B7=E7=9A=84BOM=E7=89=A9?= =?UTF-8?q?=E6=96=99=E4=B8=8D=E5=90=AB=E7=A8=8E=E6=80=BB=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E6=88=90=E6=9C=AC/=E4=B8=8A=E4=B8=80=E5=B9=B4=E5=BA=A6?= =?UTF-8?q?=E6=80=BB=E7=89=A9=E6=96=99=E4=B8=8D=E5=90=AB=E7=A8=8E=E6=88=90?= =?UTF-8?q?=E6=9C=AC=E5=90=88=E8=AE=A1)*=E4=B8=8A=E4=B8=80=E5=B9=B4?= =?UTF-8?q?=E5=BA=A6=E7=9A=84=E6=80=BB=E7=BB=8F=E8=90=A5=E4=B8=8D=E5=90=AB?= =?UTF-8?q?=E7=A8=8E=E6=88=90=E6=9C=AC=E5=90=88=E8=AE=A1=206.1.1=E3=80=81?= =?UTF-8?q?=E4=B8=8A=E4=B8=80=E5=B9=B4=E5=BA=A6=E7=9A=84=E6=80=BB=E7=BB=8F?= =?UTF-8?q?=E8=90=A5=E4=B8=8D=E5=90=AB=E7=A8=8E=E6=88=90=E6=9C=AC=E5=90=88?= =?UTF-8?q?=E8=AE=A1=EF=BC=9A=E6=89=8B=E5=A1=AB=EF=BC=88=E6=80=BB=E7=BB=8F?= =?UTF-8?q?=E7=90=86=E5=A1=AB=EF=BC=89=206.1.2=E3=80=81=E4=B8=8A=E4=B8=80?= =?UTF-8?q?=E5=B9=B4=E5=BA=A6=E6=80=BB=E7=89=A9=E6=96=99=E4=B8=8D=E5=90=AB?= =?UTF-8?q?=E7=A8=8E=E6=88=90=E6=9C=AC=E5=90=88=E8=AE=A1=EF=BC=9A=E6=89=8B?= =?UTF-8?q?=E5=A1=AB=EF=BC=88=E6=80=BB=E7=BB=8F=E7=90=86=E5=A1=AB=EF=BC=89?= =?UTF-8?q?=207.1=E3=80=81=E8=AF=A5=E6=96=99=E5=8F=B7=E5=90=AB=E7=A8=8E?= =?UTF-8?q?=E7=BB=8F=E8=90=A5=E6=88=90=E6=9C=AC(RMB)=3D(=E8=AF=A5=E6=96=99?= =?UTF-8?q?=E5=8F=B7=E7=9A=84BOM=E7=89=A9=E6=96=99=E5=90=AB=E7=A8=8E?= =?UTF-8?q?=E6=80=BB=E9=87=87=E8=B4=AD=E6=88=90=E6=9C=AC/=E4=B8=8A?= =?UTF-8?q?=E4=B8=80=E5=B9=B4=E5=BA=A6=E6=80=BB=E7=89=A9=E6=96=99=E5=90=AB?= =?UTF-8?q?=E7=A8=8E=E6=88=90=E6=9C=AC=E5=90=88=E8=AE=A1)*=E4=B8=8A?= =?UTF-8?q?=E4=B8=80=E5=B9=B4=E5=BA=A6=E7=9A=84=E6=80=BB=E7=BB=8F=E8=90=A5?= =?UTF-8?q?=E5=90=AB=E7=A8=8E=E6=88=90=E6=9C=AC=E5=90=88=E8=AE=A1=207.1.1?= =?UTF-8?q?=E3=80=81=E4=B8=8A=E4=B8=80=E5=B9=B4=E5=BA=A6=E7=9A=84=E6=80=BB?= =?UTF-8?q?=E7=BB=8F=E8=90=A5=E5=90=AB=E7=A8=8E=E6=88=90=E6=9C=AC=E5=90=88?= =?UTF-8?q?=E8=AE=A1=EF=BC=9A=EF=BC=881+0.13=EF=BC=89*=E4=B8=8A=E4=B8=80?= =?UTF-8?q?=E5=B9=B4=E5=BA=A6=E7=9A=84=E6=80=BB=E7=BB=8F=E8=90=A5=E4=B8=8D?= =?UTF-8?q?=E5=90=AB=E7=A8=8E=E6=88=90=E6=9C=AC=E5=90=88=E8=AE=A1=207.1.2?= =?UTF-8?q?=E3=80=81=E4=B8=8A=E4=B8=80=E5=B9=B4=E5=BA=A6=E6=80=BB=E7=89=A9?= =?UTF-8?q?=E6=96=99=E5=90=AB=E7=A8=8E=E6=88=90=E6=9C=AC=E5=90=88=E8=AE=A1?= =?UTF-8?q?=EF=BC=9A=EF=BC=881+0.13=EF=BC=89*=E4=B8=8A=E4=B8=80=E5=B9=B4?= =?UTF-8?q?=E5=BA=A6=E6=80=BB=E7=89=A9=E6=96=99=E4=B8=8D=E5=90=AB=E7=A8=8E?= =?UTF-8?q?=E6=88=90=E6=9C=AC=E5=90=88=E8=AE=A1=208=E3=80=81=E8=A2=AB?= =?UTF-8?q?=E4=BC=B0=E4=BB=B7=E7=89=A9=E6=96=99=E7=9A=84=E4=B8=8D=E5=90=AB?= =?UTF-8?q?=E7=A8=8E=E5=8D=95=E4=BB=B7=EF=BC=88RMB=EF=BC=89=3D=E8=A2=AB?= =?UTF-8?q?=E4=BC=B0=E4=BB=B7=E7=89=A9=E6=96=99=E7=9A=84=E4=B8=8D=E5=90=AB?= =?UTF-8?q?=E7=A8=8E=E6=80=BB=E6=88=90=E6=9C=AC/=EF=BC=881-=E5=88=A9?= =?UTF-8?q?=E6=B6=A6=E7=8E=87=EF=BC=89=209=E3=80=81=E8=A2=AB=E4=BC=B0?= =?UTF-8?q?=E4=BB=B7=E7=89=A9=E6=96=99=E7=9A=84=E5=90=AB=E7=A8=8E=E5=8D=95?= =?UTF-8?q?=E4=BB=B7(RMB)=3D=E8=A2=AB=E4=BC=B0=E4=BB=B7=E7=89=A9=E6=96=99?= =?UTF-8?q?=E7=9A=84=E5=90=AB=E7=A8=8E=E6=80=BB=E6=88=90=E6=9C=AC/?= =?UTF-8?q?=EF=BC=881-=E5=88=A9=E6=B6=A6=E7=8E=87=EF=BC=89=2010=E3=80=81?= =?UTF-8?q?=E4=B8=8D=E5=90=AB=E7=A8=8E=E6=80=BB=E4=BB=B7(RMB)=3D=E8=A2=AB?= =?UTF-8?q?=E4=BC=B0=E4=BB=B7=E7=89=A9=E6=96=99=E7=9A=84=E4=B8=8D=E5=90=AB?= =?UTF-8?q?=E7=A8=8E=E5=8D=95=E4=BB=B7(RMB)*=E6=95=B0=E9=87=8F=2011?= =?UTF-8?q?=E3=80=81=E5=90=AB=E7=A8=8E=E6=80=BB=E4=BB=B7(RMB)=3D=E8=A2=AB?= =?UTF-8?q?=E4=BC=B0=E4=BB=B7=E7=89=A9=E6=96=99=E7=9A=84=E5=90=AB=E7=A8=8E?= =?UTF-8?q?=E5=8D=95=E4=BB=B7(RMB)*=E6=95=B0=E9=87=8F=2012=E3=80=81?= =?UTF-8?q?=E4=B8=8D=E5=90=AB=E7=A8=8E=E5=8D=95=E4=BB=B7(=E7=BE=8E?= =?UTF-8?q?=E5=85=83)=3D=E8=A2=AB=E4=BC=B0=E4=BB=B7=E7=89=A9=E6=96=99?= =?UTF-8?q?=E7=9A=84=E4=B8=8D=E5=90=AB=E7=A8=8E=E5=8D=95=E4=BB=B7(RMB)/?= =?UTF-8?q?=E7=BE=8E=E5=85=83=E6=B1=87=E7=8E=87=20=E6=B3=A8:=E6=8D=A2?= =?UTF-8?q?=E7=AE=97=E5=90=8E=EF=BC=8C=E4=BF=9D=E7=95=99=E5=B0=8F=E6=95=B0?= =?UTF-8?q?=E7=82=B9=E5=90=8E=E4=B8=A4=E4=BD=8D=EF=BC=8C=E8=B6=85=E8=BF=87?= =?UTF-8?q?=E5=90=8E=E7=9A=84=E5=9B=9B=E8=88=8D=E4=BA=94=E5=85=A5=2013?= =?UTF-8?q?=E3=80=81=E5=90=AB=E7=A8=8E=E5=8D=95=E4=BB=B7(=E7=BE=8E?= =?UTF-8?q?=E5=85=83)=3D=E4=B8=8D=E5=90=AB=E7=A8=8E=E5=8D=95=E4=BB=B7(?= =?UTF-8?q?=E7=BE=8E=E5=85=83)=2014=E3=80=81=E4=B8=8D=E5=90=AB=E7=A8=8E?= =?UTF-8?q?=E6=80=BB=E4=BB=B7(=E7=BE=8E=E5=85=83)=3D=E4=B8=8D=E5=90=AB?= =?UTF-8?q?=E7=A8=8E=E5=8D=95=E4=BB=B7(=E7=BE=8E=E5=85=83)*=E6=95=B0?= =?UTF-8?q?=E9=87=8F=2015=E3=80=81=E5=90=AB=E7=A8=8E=E6=80=BB=E4=BB=B7(?= =?UTF-8?q?=E7=BE=8E=E5=85=83)=3D=E5=90=AB=E7=A8=8E=E5=8D=95=E4=BB=B7(?= =?UTF-8?q?=E7=BE=8E=E5=85=83)*=E6=95=B0=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/SalesEstimateServiceImpl.java | 132 +++++++++------ .../templates/sales/estimate/ceoAdd.html | 30 +++- .../sales/estimate/ceoAddDetail.html | 156 +++++++++--------- 3 files changed, 182 insertions(+), 136 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sales/service/impl/SalesEstimateServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/sales/service/impl/SalesEstimateServiceImpl.java index 764f3d23..13e5f09e 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/sales/service/impl/SalesEstimateServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/sales/service/impl/SalesEstimateServiceImpl.java @@ -300,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物料的总的不含税采购单价的合计 -6、含税料号估价成本:该料号的BOM物料总含税采购成本+含税总经营成本+(该料号的BOM物料总含税采购成本/总含税物料成本)*总含税经营成本 -新版:含税料号估价成本:该料号的BOM物料总含税采购成本+含税运输成本+含税服务成本+含税开发成本+(该料号的BOM物料总含税采购成本/总物料含税成本)*总经营含税成本 +2、含税料号估价成本=该料号的BOM物料含税总采购成本+含税运输成本+含税服务成本+含税开发成本+(该料号的BOM物料含税总采购成本/含税总物料成本)*上一年度的总经营含税成本合计 +2.1、该料号的BOM物料含税总采购成本=手填的bom物料的总的含税采购单价的合计 -7、不含税单价(RMB):该料号不含税估价成本/(1-利润率) -8、含税单价(RMB)=该料号含税估价成本/(1-利润率) -9、不含税总价(RMB)=不含税单价(RMB)*数量 -10、含税总价(RMB)=含税单价(RMB)*数量 -11、不含税单价(美元)=不税单价(RMB)/美元汇率 +3、不含税运输成本:手填(业务填写) +含税运输成本=(1+0.13)*不含税运输成本 + +4、不含税服务成本:手填(业务填写) +含税服务成本=(1+0.13)*不含税服务成本 + +5、不含税开发成本:手填(工程填写) +含税开发成本=(1+0.13)*不含税开发成本 + +6.1、该料号的不含税经营成本(RMB)=(该料号的BOM物料不含税总采购成本/上一年度总物料不含税成本合计)*上一年度的总经营不含税成本合计 +6.1.1、上一年度的总经营不含税成本合计:手填(总经理填) +6.1.2、上一年度总物料不含税成本合计:手填(总经理填) + +7.1、该料号含税经营成本(RMB)=(该料号的BOM物料含税总采购成本/上一年度总物料含税成本合计)*上一年度的总经营含税成本合计 + +7.1.1、上一年度的总经营含税成本合计:(1+0.13)*上一年度的总经营不含税成本合计 +7.1.2、上一年度总物料含税成本合计:(1+0.13)*上一年度总物料不含税成本合计 + +8、被估价物料的不含税单价(RMB)=被估价物料的不含税总成本/(1-利润率) + +9、被估价物料的含税单价(RMB)=被估价物料的含税总成本/(1-利润率) + +10、不含税总价(RMB)=被估价物料的不含税单价(RMB)*数量 + +11、含税总价(RMB)=被估价物料的含税单价(RMB)*数量 + +12、不含税单价(美元)=被估价物料的不含税单价(RMB)/美元汇率 注:换算后,保留小数点后两位,超过后的四舍五入 -12、含税单价(美元)=不含税单价(美元) -13、不含税总价(美元)=不含税单价(美元)*数量 -14、含税总价(美元)=含税单价(美元)*数量 -15、总含税物料成本 = 总不含税物料成本*(1+0.13) + +13、含税单价(美元)=不含税单价(美元) + +14、不含税总价(美元)=不含税单价(美元)*数量 + +15、含税总价(美元)=含税单价(美元)*数量 * */ @@ -360,25 +380,32 @@ public class SalesEstimateServiceImpl implements ISalesEstimateService List 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); @@ -389,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),并保留两位小数 @@ -434,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); @@ -499,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; } @@ -510,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) @@ -531,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) diff --git a/ruoyi-admin/src/main/resources/templates/sales/estimate/ceoAdd.html b/ruoyi-admin/src/main/resources/templates/sales/estimate/ceoAdd.html index e92a1b4a..4e350c59 100644 --- a/ruoyi-admin/src/main/resources/templates/sales/estimate/ceoAdd.html +++ b/ruoyi-admin/src/main/resources/templates/sales/estimate/ceoAdd.html @@ -132,6 +132,7 @@ "noTaxDevelopCosts": null, // 初始化为 null 或 0 "noTaxShippingCosts": null, "noTaxServiceCosts": null, + "totalOperatingCosts": null, "noTaxMaterialCosts": null, "noTaxOperatingCosts": null, "taxOperatingCosts": null, @@ -145,6 +146,7 @@ var noTaxDevelopCosts = $('#noTaxDevelopCosts' + index).val(); var noTaxShippingCosts = $('#noTaxShippingCosts' + index).val(); var noTaxServiceCosts = $('#noTaxServiceCosts' + index).val(); + var totalOperatingCosts = $('#totalOperatingCosts' + index).val(); var noTaxMaterialCosts = $('#noTaxMaterialCosts' + index).val(); var noTaxOperatingCosts = $('#noTaxOperatingCosts' + index).val(); var taxOperatingCosts = $('#taxOperatingCosts' + index).val(); @@ -166,18 +168,23 @@ hasError = true; return; // 退出循环,阻止进一步处理 } + 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; // 退出循环,阻止进一步处理 } @@ -191,6 +198,7 @@ estimateMaterialDataList[index].noTaxDevelopCosts = noTaxDevelopCosts; estimateMaterialDataList[index].noTaxShippingCosts = noTaxShippingCosts; estimateMaterialDataList[index].noTaxServiceCosts = noTaxServiceCosts; + estimateMaterialDataList[index].totalOperatingCosts = totalOperatingCosts; estimateMaterialDataList[index].noTaxMaterialCosts = noTaxMaterialCosts; estimateMaterialDataList[index].noTaxOperatingCosts = noTaxOperatingCosts; estimateMaterialDataList[index].taxOperatingCosts = taxOperatingCosts; @@ -510,6 +518,8 @@ const taxOperatingCosts = ( (taxPurchaseRmb/allTaxMaterialCosts) * allTaxOperatingCosts ).toFixed(2) || ''; + + // 根据 `parentRow.profitRate` 设置利润率 let profitRateKey = 'aprofitRate'; switch (parentRow.profitRate) { @@ -651,8 +661,11 @@ // 遍历数据集计算不含税采购成本和含税采购成本 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; @@ -681,8 +694,11 @@ // 遍历数据集计算不含税采购成本和含税采购成本 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; diff --git a/ruoyi-admin/src/main/resources/templates/sales/estimate/ceoAddDetail.html b/ruoyi-admin/src/main/resources/templates/sales/estimate/ceoAddDetail.html index a9dc3d0c..087c8032 100644 --- a/ruoyi-admin/src/main/resources/templates/sales/estimate/ceoAddDetail.html +++ b/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 += ''; formHtml += ''; formHtml += '
'; - formHtml += '

总经营成本

'; + formHtml += '

上一年度总经营成本

'; formHtml += '
'; - formHtml += ''; - formHtml += ''; + formHtml += ''; + formHtml += ''; formHtml += '
'; - formHtml += '
'; - formHtml += ''; - formHtml += ''; - formHtml += '
'; - formHtml += '
'; - formHtml += ''; - formHtml += ''; - formHtml += '
'; - formHtml += '
'; - formHtml += ''; - formHtml += ''; - formHtml += '
'; - formHtml += '

总物料成本

'; + formHtml += '

上一年度总物料成本

'; formHtml += '
'; formHtml += ''; formHtml += ''; @@ -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)); + + } + } }); From ce973236830bf74f725867d4536d615844c968ee Mon Sep 17 00:00:00 2001 From: liuxiaoxu <1793812695@qq.com> Date: Mon, 2 Dec 2024 17:59:08 +0800 Subject: [PATCH 03/10] =?UTF-8?q?[feat]=20=E9=94=80=E5=94=AE=E7=AE=A1?= =?UTF-8?q?=E7=90=86=20=E4=BF=AE=E6=94=B9=20=E9=94=80=E5=94=AE=E5=87=BA?= =?UTF-8?q?=E8=B4=A7=E9=80=9A=E7=9F=A5=E5=8D=95=E5=AF=BC=E5=87=BA=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E5=AE=9E=E4=BD=93=E7=B1=BB=20=E6=96=B0=E5=A2=9E=20?= =?UTF-8?q?=E9=94=80=E5=94=AE=E5=8D=95=E5=8F=B7=E3=80=81=E7=94=9F=E4=BA=A7?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=8F=B7=E3=80=81=E5=AE=A2=E6=88=B7=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E5=8F=B7=E3=80=81=E7=89=A9=E6=96=99=E5=90=8D=E7=A7=B0?= =?UTF-8?q?=E3=80=81=E7=89=A9=E6=96=99=E5=9E=8B=E5=8F=B7=E3=80=81=E9=93=AD?= =?UTF-8?q?=E7=89=8Clogo=E3=80=81=E5=A4=87=E6=B3=A8=E3=80=81=E8=BF=BD?= =?UTF-8?q?=E8=B8=AA=E7=A0=81=E5=AD=97=E6=AE=B5=20=E7=94=9F=E4=BA=A7?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E6=96=B0=E5=A2=9E=20=E6=A0=B9=E6=8D=AE?= =?UTF-8?q?=E9=94=80=E5=94=AE=E5=8D=95=E5=8F=B7=E9=9B=86=E5=90=88=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E7=94=9F=E4=BA=A7=E8=AE=A2=E5=8D=95=E9=9B=86=E5=90=88?= =?UTF-8?q?=E6=96=B9=E6=B3=95=20=E4=BF=AE=E6=94=B9=E9=94=80=E5=94=AE?= =?UTF-8?q?=E5=87=BA=E8=B4=A7=E9=80=9A=E7=9F=A5=20=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E5=87=BA=E8=B4=A7=E9=80=9A=E7=9F=A5=E5=8D=95=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E6=96=B9=E6=B3=95=EF=BC=9A=E6=A0=B9=E6=8D=AE=E4=B8=87=E6=9D=90?= =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=8C=89=E7=85=A7=E4=BB=A5=E4=B8=8B=E5=85=B3?= =?UTF-8?q?=E7=B3=BB=E5=AF=BC=E5=87=BA=E6=95=B0=E6=8D=AE=20=E5=AD=98?= =?UTF-8?q?=E5=82=A8=E7=9A=84=E6=AF=8F=E4=B8=80=E6=9D=A1=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E4=B8=BA=EF=BC=8C=E4=B8=80=E4=B8=AA=E9=94=80=E5=94=AE=E5=8D=95?= =?UTF-8?q?=E5=8F=B7=EF=BC=8C=E4=B8=80=E4=B8=AA=E7=94=9F=E4=BA=A7=E5=8D=95?= =?UTF-8?q?=E5=8F=B7=EF=BC=8C=E4=B8=80=E4=B8=AA=E5=AE=A2=E6=88=B7=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E5=8F=B7=EF=BC=8C=E4=B8=80=E4=B8=AA=E7=89=A9=E6=96=99?= =?UTF-8?q?=E5=90=8D=E7=A7=B0=EF=BC=8C=E4=B8=80=E4=B8=AA=E7=89=A9=E6=96=99?= =?UTF-8?q?=E5=9E=8B=E5=8F=B7=E3=80=82=E4=BD=86=E6=98=AF=E4=B8=80=E4=B8=AA?= =?UTF-8?q?=E9=94=80=E5=94=AE=E5=8D=95=E5=8F=B7=EF=BC=8C=E4=B8=80=E4=B8=AA?= =?UTF-8?q?=E7=94=9F=E4=BA=A7=E5=8D=95=E5=8F=B7=EF=BC=8C=E4=B8=80=E4=B8=AA?= =?UTF-8?q?=E5=AE=A2=E6=88=B7=E8=AE=A2=E5=8D=95=E5=8F=B7=E4=BB=96=E4=BB=AC?= =?UTF-8?q?=E6=98=AF=E4=B8=80=E4=B8=80=E5=AF=B9=E5=BA=94=E7=9A=84=EF=BC=8C?= =?UTF-8?q?=E4=B8=80=E4=B8=AA=E9=94=80=E5=94=AE=E5=8D=95=E5=8F=B7=E5=AF=B9?= =?UTF-8?q?=E5=BA=94=E5=A4=9A=E6=9D=A1=E7=89=A9=E6=96=99=20=E6=8C=89?= =?UTF-8?q?=E7=85=A7=E4=B8=87=E6=9D=90=E8=B0=83=E6=95=B4=EF=BC=8C=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E5=87=BA=E8=B4=A7=E9=80=9A=E7=9F=A5.xlsx=E6=96=87?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/ExportShippingInformOrderDto.java | 23 ++++++++- .../system/mapper/SysMakeOrderMapper.java | 5 ++ .../SysSalesShippingInformServiceImpl.java | 48 ++++++++++++++---- .../mapper/system/SysMakeOrderMapper.xml | 8 +++ .../static/attachments/出货通知单.xlsx | Bin 17779 -> 34336 bytes 5 files changed, 74 insertions(+), 10 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/dto/ExportShippingInformOrderDto.java b/ruoyi-admin/src/main/java/com/ruoyi/system/dto/ExportShippingInformOrderDto.java index 7339dcf1..7a6bbee6 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/dto/ExportShippingInformOrderDto.java +++ b/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; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/mapper/SysMakeOrderMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/system/mapper/SysMakeOrderMapper.java index 2b1d3136..e464d730 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/mapper/SysMakeOrderMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/mapper/SysMakeOrderMapper.java @@ -130,4 +130,9 @@ public interface SysMakeOrderMapper * */ List selectMakeOrderByMakeNoList(List makeNos); + + /** + * 根据销售单号集合查询生产订单集合 + * */ + List selectMakeOrderListBySalesOrderCodes(List salesOrderCode); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysSalesShippingInformServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysSalesShippingInformServiceImpl.java index e83ec932..c21e726b 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysSalesShippingInformServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysSalesShippingInformServiceImpl.java @@ -1119,6 +1119,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 +1137,52 @@ public class SysSalesShippingInformServiceImpl implements ISysSalesShippingInfor insertShippingInformation(outOrderCode,shippingInformationType,shippingTemplateType,sysSalesShippingInform); String salesOrderCode = sysSalesShippingInform.getSalesOrderCode(); - SysMakeOrder sysMakeOrder = sysMakeOrderMapper.selectMakeOrderBySaleNo(salesOrderCode); + + List salesOrderCodes = new ArrayList<>(); + + if (StringUtils.isNotEmpty(salesOrderCode)){ + String[] splitSalesOrderCode = salesOrderCode.split(","); + salesOrderCodes = Arrays.asList(splitSalesOrderCode); + } + //生产订主表的数据 + List sysMakeOrders = sysMakeOrderMapper.selectMakeOrderListBySalesOrderCodes(salesOrderCodes); + + //获取销售订单的明细 + List 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 salesShippingDeviceList = salesShippingDeviceMapper.selectShippingDeviceBySalesOrderCode(salesOrderCode); + + Map makeOrderMap = new HashMap<>(); + + for (SysMakeOrder sysMakeOrder : sysMakeOrders) { + makeOrderMap.put(sysMakeOrder.getSaleNo(),sysMakeOrder); + } + ArrayList 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 +1191,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(); diff --git a/ruoyi-admin/src/main/resources/mapper/system/SysMakeOrderMapper.xml b/ruoyi-admin/src/main/resources/mapper/system/SysMakeOrderMapper.xml index bb131c25..f237a36d 100644 --- a/ruoyi-admin/src/main/resources/mapper/system/SysMakeOrderMapper.xml +++ b/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} + + \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/static/attachments/出货通知单.xlsx b/ruoyi-admin/src/main/resources/static/attachments/出货通知单.xlsx index 5fa20c7e978ef1fca73ce774f115f16def9436a8..078bc21271271fd5bc92c935267bee6f78d79342 100644 GIT binary patch delta 26382 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 delta 9537 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 Date: Tue, 3 Dec 2024 09:13:29 +0800 Subject: [PATCH 04/10] =?UTF-8?q?[fix]=20=E9=94=80=E5=94=AE=E7=AE=A1?= =?UTF-8?q?=E7=90=86=20=E6=8C=89=E7=85=A7=E4=B8=87=E6=9D=90=E8=B0=83?= =?UTF-8?q?=E6=95=B4:=20=E9=87=8D=E5=86=99=E5=AF=BC=E5=87=BA=E5=87=BA?= =?UTF-8?q?=E8=B4=A7=E5=8D=951=E6=A8=A1=E6=9D=BF=E7=9A=84=E5=90=8E?= =?UTF-8?q?=E7=AB=AF=E6=8E=A5=E5=8F=A3=20=E4=BF=AE=E6=94=B9=20=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E9=94=80=E5=94=AE=E5=87=BA=E8=B4=A7=E5=8D=95=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E6=95=B0=E6=8D=AE=E5=AE=9E=E4=BD=93=E7=B1=BB=20?= =?UTF-8?q?=E6=8C=89=E7=85=A7=E6=96=B0=E6=A8=A1=E6=9D=BF=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=87=BA=E8=B4=A7=E5=8D=951.xlsx=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/dto/ExportShippingOrderDto.java | 6 +- .../SysSalesShippingInformServiceImpl.java | 52 +++++++++++++----- .../static/attachments/销售出货单1.xlsx | Bin 19752 -> 19306 bytes 3 files changed, 41 insertions(+), 17 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/dto/ExportShippingOrderDto.java b/ruoyi-admin/src/main/java/com/ruoyi/system/dto/ExportShippingOrderDto.java index 2ecd299e..59e52e87 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/dto/ExportShippingOrderDto.java +++ b/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; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysSalesShippingInformServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysSalesShippingInformServiceImpl.java index c21e726b..74b60134 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysSalesShippingInformServiceImpl.java +++ b/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 salesOrderCodes = new ArrayList<>(); + + if (StringUtils.isNotEmpty(salesOrderCode)){ + String[] splitSalesOrderCode = salesOrderCode.split(","); + salesOrderCodes = Arrays.asList(splitSalesOrderCode); + } + + + List sysSalesOrders = sysSalesOrderMapper.selectSysSalesOrderListByCodeList(salesOrderCodes); + HashMap salesOrderHashMap = new HashMap<>(); + for (SysSalesOrder sysSalesOrder : sysSalesOrders) { + salesOrderHashMap.put(sysSalesOrder.getSalesOrderCode(),sysSalesOrder); + } //销售出货单 String shippingInformationType = "2"; @@ -644,33 +660,40 @@ public class SysSalesShippingInformServiceImpl implements ISysSalesShippingInfor List 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 sysSalesOrderChildren = salesOrderChildMapper.selectBatchOrderChildListBySalesOrderCode(salesOrderCodes); + + AtomicInteger index = new AtomicInteger(1); //处理物料数据 List 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()); @@ -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 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); @@ -744,8 +770,6 @@ public class SysSalesShippingInformServiceImpl implements ISysSalesShippingInfor 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()); diff --git a/ruoyi-admin/src/main/resources/static/attachments/销售出货单1.xlsx b/ruoyi-admin/src/main/resources/static/attachments/销售出货单1.xlsx index 3fbb9f2f754f140c3dc30fbf8dc51f6f1cfd1633..f7f8a848852093e29fa67f8bbda9693f97000c00 100644 GIT binary patch delta 7849 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 T+68Y=qk!Y9lRqg1{e}Dw4+XV% delta 8299 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 Date: Tue, 3 Dec 2024 09:30:19 +0800 Subject: [PATCH 05/10] =?UTF-8?q?[fix]=20=E9=94=80=E5=94=AE=E7=AE=A1?= =?UTF-8?q?=E7=90=86=20=E6=8C=89=E7=85=A7=E4=B8=87=E6=9D=90=E8=B0=83?= =?UTF-8?q?=E6=95=B4:=20=E9=87=8D=E5=86=99=E5=AF=BC=E5=87=BA=E5=87=BA?= =?UTF-8?q?=E8=B4=A7=E5=8D=952=E6=A8=A1=E6=9D=BF=E7=9A=84=E5=90=8E?= =?UTF-8?q?=E7=AB=AF=E6=8E=A5=E5=8F=A3=20=E6=8C=89=E7=85=A7=E6=96=B0?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E4=BF=AE=E6=94=B9=E5=87=BA=E8=B4=A7=E5=8D=95?= =?UTF-8?q?2.xlsx=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SysSalesShippingInformServiceImpl.java | 55 +++++++++++++----- .../static/attachments/销售出货单1.xlsx | Bin 19306 -> 19342 bytes .../static/attachments/销售出货单2.xlsx | Bin 89100 -> 88463 bytes 3 files changed, 42 insertions(+), 13 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysSalesShippingInformServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysSalesShippingInformServiceImpl.java index 74b60134..1b86e8ad 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysSalesShippingInformServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysSalesShippingInformServiceImpl.java @@ -695,7 +695,7 @@ public class SysSalesShippingInformServiceImpl implements ISysSalesShippingInfor //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(); @@ -732,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); @@ -746,6 +746,22 @@ public class SysSalesShippingInformServiceImpl implements ISysSalesShippingInfor SysSalesShippingInform salesShippingInform = sysSalesShippingInformMapper.selectSysSalesShippingInformByCode(outOrderCode); + String salesOrderCode = salesShippingInform.getSalesOrderCode(); + + List salesOrderCodes = new ArrayList<>(); + + if (StringUtils.isNotEmpty(salesOrderCode)){ + String[] splitSalesOrderCode = salesOrderCode.split(","); + salesOrderCodes = Arrays.asList(splitSalesOrderCode); + } + + + List sysSalesOrders = sysSalesOrderMapper.selectSysSalesOrderListByCodeList(salesOrderCodes); + HashMap salesOrderHashMap = new HashMap<>(); + for (SysSalesOrder sysSalesOrder : sysSalesOrders) { + salesOrderHashMap.put(sysSalesOrder.getSalesOrderCode(),sysSalesOrder); + } + //销售出货单 String shippingInformationType = "2"; String shippingTemplateType = "销售出货单2"; @@ -753,33 +769,42 @@ public class SysSalesShippingInformServiceImpl implements ISysSalesShippingInfor insertShippingInformation(outOrderCode,shippingInformationType,shippingTemplateType,salesShippingInform); List 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 sysSalesOrderChildren = salesOrderChildMapper.selectBatchOrderChildListBySalesOrderCode(salesOrderCodes); + + AtomicInteger index = new AtomicInteger(1); //处理物料数据 List 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.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(); @@ -789,10 +814,14 @@ public class SysSalesShippingInformServiceImpl implements ISysSalesShippingInfor FillConfig fillConfig = FillConfig.builder().forceNewRow(true).build(); HashMap 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); diff --git a/ruoyi-admin/src/main/resources/static/attachments/销售出货单1.xlsx b/ruoyi-admin/src/main/resources/static/attachments/销售出货单1.xlsx index f7f8a848852093e29fa67f8bbda9693f97000c00..263bf01c78a7685c8cf42c4092eabe51f21e29c2 100644 GIT binary patch delta 5921 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 Ikbju}2L+cLq5uE@ diff --git a/ruoyi-admin/src/main/resources/static/attachments/销售出货单2.xlsx b/ruoyi-admin/src/main/resources/static/attachments/销售出货单2.xlsx index 5fbf35b59ce41651c08e5face5b0c55f19508fa2..4b9c888c24ec98010489b599b9afad80558b50fb 100644 GIT binary patch delta 7752 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 KR`>Z?1O5+Ut#`Em delta 8326 zcmZ8`Wl&r}v-U0;G`PD4cPERxYjAgW3$VD`LST^q!GjYVf(3#Gx8UyXE+2W{s_)jl z^W*70bNcD-nsaKpW;(GBKCT(QCI<-LH+VIvnNk2`1VigR1;rPGhjK_zD?W6DZ#kja zPbEnnnmyJU;2FFJ=Q{_PnJa#5aL-jBamQ?Lp`3KDu3$sq+XQ|FFoqc;=61& z;EIUO7JFE(NI<8DLcB;+V-zeATu6#d*PnVDfw>_GkLF$XZ9K2V(Xl7MXMvQ%;OHJ* zR(zku7To1N_>ul2J0~?}E<`;}_R{naNC6*AL^Qqv@xe{m7M>unvt~c z;60SKF-Jo!Ty|ptHU|^xnZW{bJi)UGM71(1bP1pMp z#N!=E>eQ}9ar!gg0h7oIK$)Q08^4cHHiO4`p|4NMiyEwKFPd)x$%YB=Hkyj;cMFdV zqqCLVRr~tIb$COd;HsU^onuuWgqvAc^cu~FX(%bDJ_)aIq9aHf2pjY3cAJl(1E8t^ z3x@*$0Nw#2l{ZB3Ck|N|Q)posz?4S;b>xGM%gKe@#uQ}CI-gUM92P`tiM{w{s9wCA zrWwiF_FR1;t#dM>wW}pgNyB-wlQ}3r2sud&c7iR5zor_)P}T_b2a69-5#64u5~Iu~_Toa1B$i_#hzBF>C>ICEB{u zi@BNZTYV5$e4L8AQfAh)JHh@gb5>=Jf}R0&*b8}yUh|1;eFtG?(v*1}Kl4;}Xuitq z3B`@itmpFnn%QApd?p}grL_8D+O0rxmIRHfc8#&-ey1x&z;ecw*NK#O*}&SV2m+-1 z!Xl~*gTsbJX4wdBqC^4!BB)dH5Xr%rBgq8=nEj^-XF?|aWO5V@peXHX{U~QaGxL6< zT*7E4%=j?W?>w6+#=kzv9A#CI_pcWi|I*dOy@piO3q^`Omsijn8p}c8g#&M|b%@A) zmvLrn9rX&LZMRAc8`zYc?JwEDHzF)b1-5llAf|GS4&Kh~`1|FlQ}C@%6qnjh9o}5T(k@~ju_1)_ zv(>KbuUCC}f;kZp*|uGqdY>=tBFh#i+XA zu!ZngnHgD*!k%MP|8}x|#x<)Uwk{4_M8v3js;416S#VN@z6zv3jv!fuMdoY2q)C)Fr2({>rPy@mMd4; zZ{QEnWyqfVr{zZb!IwwcBJMPU={J{{!vv@3x`ONv97;i~4YE}tA7^J~f;<5gayfI@ z1K0%u))wuxB=*Snt<=Y3aM)Y}!{`nkYwCa&Kp@fH?K!tE30M?-aiRldX<7pbBe!~- zetl@25=G2Ir&^Y&(5DfUWvC&4_|-OGftq~P+U3%ExN9m|H3l^75}lDkWQ9*EYG+L= zMrqpf%oF{+tHFK>i|&DOK#^}kXT@yw`=p&FE(%GO0a65srb2t?rcacgp3Eue!VqNt z4ca$bxQ^G(jl&Fns^+^ccOF`{qx$_an$NLTHTJ?o)%k* zDgAj-FBmw191{yF%pjU9=3A$1iE_X^$2iAC!a%}|#)!t0!;oWu&?ZMyVOI1s(Zaw| zVH%XROTN#P9G0|bUi99`cZ9@8MkUGy$wtYB$;Qcs$jXDGnIVce(Q8H$G!NTSM5s}c zNfGUm?n+cvRFiX37O_$P$Ns&qE*$e0@zz#ws#%1qA2e22V8hjhgc^ah6@HF5MmW@8 zuN*tx$u`DyiTTWG+gG2`&fEMc8FToSj~iHjO-*o7U?@u2@MAl5VUqJhJ}(!9>|B+N zr4(zL$+BIN@{9`GGQz~5$@(4YII690eI9S2#}Q9$LxpQbypDO(M~I)T`zZ&puVrmR z%Wb4XeFl0u+LDxH*n%QBa#%WtQa@`yYGHtjds-pu5$;-Em(4c9B7Yd8rDZjT%1mrG z%K9~eG94?yAfb@3YhY7$+6yENl-cmYaO2(|BjBJZ53j^>NOfb9BZDt}5M5ZFh)mnB z8FJy^EhGU9;sg*RUyBWFl3E6&r-}lblCMp*Ye6^+4;1BL_sQT2^%JAnNYA6BviH;F z-dA}It@-bnR=1x_WoHp7$IN8IcFb{HXtZ0CsCCH?6o`D|DzPGH%D?DGQyAeC9>B)_ zAq}tzsM?c&B#WR9K2U5ysA6eyWbw!gg5C(TYO|44wp$#B{Me;AE;Rl{OYIf!-9?f_ zYHU^}B5`*w48cpYCyvCigwZVNu@iXIiPS%|E;*3llC^z~l?mObbtQ<>@+o6Ab!aOJ zEK=Q!Ya=Q)gCbN_mnSfoDcFjKmSsA}k}pz-&clbdWevXT#|bA$Iz5m?OQP~8e`4{H z4yJOV_3tG?Du*lhLfPV?ndGM>UK%LFp*PGFqtsAlZVtYd7UzhNtkHL(P3ngb6pcY@ zklB$rV)(H-%o4(?|Iws4h(1b{nYr9AtHsUkmznAHHc&P+=a{2Ln=~!SQzTMz$mdd< z;+o)?;keTL3ucTY%^(qD#{EFq`;D=qfS@v~WTTK6g%ZDjMVd^;Oc5m09T21zrS=3+n!< zJ^#4$PMIpMeiCFN&E@NvZPySm5J%%kbz(4^kzhr4Vvf`lvTYpp?HH(j^eiPd)S%cH z-IPj?M^T1zgh2hDB&6T|A8ATyOlc0V^joshY{=@@!FIO^Ah(Z-tHMdorHmQ>zQ%iM z@&Z5sM!~xRf&#b#9O?^cHPomBiPe{hPu%@&frl$tynR)zUnzKwY1@qVIRbbH=h21N zBYzf*mY@rd^ga3RbipnHU)H)bhJYaNwF#1)iSFQCm2~H{x7WXf4Fu2p!El#8`(4-= z!+cDLIRYkRRU~u0=490*b0y~J`nHir*{&!KzNEGNy(}E{NdYWQ!SVDyhcP@#rx<$q zztRZw23TDNvd~r{tll?jtT}#%Z&ZClOLL`Pi{oD-$Fa~FyCPuQ(5`(Ot=1erXnaFO zbe8z%Nsl=3YF_Y3=i?y8|o z?*&nj_WV)6nUl?W^J_3_Zfs}hjSIN)0H#B1zu3bur<^E4vz~_WVEDAHEBA;PJ5Svk z68Fevlk@VvZWCP?8Tp>=_KPeU0Kno8bpZi!!H&+0v$!uHlha+MQ?np9uwH@ICnel7F$hnvYl1sLu6^GHAtg%9OwA?VA4d} z32vxl<*~4}X+m6XG)1pZ^Z$;vjdE!Gy09<~;;t|MoN1*XYR2v`__?ti+@VS2byFYs zx!K{w9`>%tTJO0L&A4)T(q(mWVVTl)nooYl&9`XU`4Bckjeqr&hH}zbpHJpdfwZo3 zwegyCdHh&HULoxv`?C5JU9r5~Jm@>3Hh8KCm0Y6m(XXE~(rU~IL7lel@05_9Z1<4- z;H1<3Z$TyB07v$N@_^4DJclQ`oCZBllYa;Lwl5~9#xQdf@r|%Xxk@}VdYlODj;1=x zRzt=_^tx9&t~VjJosGX=^1S_TBWR!o+UZU_vQVCf(@%+Wh{JSO*gHfI5JOoSNifTY zupZAAlJT+5F11b<)7E79q(E66yN^)6y-zY@1FI_3ik6xTwsW}cy; z>r-3U5j*1F`m~6IhxQ-c*I*?XV8sVguN&5dCMz3(l-iWH-ikf-G{jW!7~<8a3jy)V z9H58oSnKzDhMyhn-vRrGW^vr&BfwC1Yh%P3jhi@`AdS?gFJGLHQsyY*41zzYr%Z5U z1aU9=857Gp+c_(UusgK zoGMCNry>STQOg{ui&}q>EYun)%EYBejSDBQ|(1xgFt)#*AdnH?R1y z3=UM{t{TX&6cS;K=#EYQ)gSerqz=k4CRH!fSm$o+q|OSgDv{YuWyzhA%-9Rb8i{G) z!ZVxAYEvU|#GJ)bo&$598meGj4SU9`NPygrRL=OtBs*mSjEIIO7c8sqMh44_)Ho?L5MTIOz~jpg3@Wmx?N+$ml3^!7Ik=zAzule3NYGS_3UB1Uy-gBqi+cy z@-=R{;?Jcg*M-^af;(oee^R=>flPDUdwI|6d%o}*6xf2w%O z@?M6Exo(sv6Z5sDneaR}Hp_Y%J_vWerS(4#nBZ5g){F#8)2lXfJ;S*U3IT}2?8p_L|yi;3gsl7hQZg*T zk}y5BiEvHTTqD0}J20YuEJgRT`9yN`iG~KJ;X{B(+MDDb54i5WaK zE6BSHmYWu8`0nv%NjwU?SmvIpTiR3d2yx0>;=igrRKU1Fg9Dr3O_YYGwsh+%RoDi8>yq9d7hH@&L^BKirtR zQK5{3XtCjMh>1eSS=vPfG4&JS0JFRGv6i;M<6~CP;$T{h#hUegz(n~9?DDJ90>TDP zh72AsXpa!acP-%}D;}W0r+Nj7=W&i9@qALq6GzXvVuAm=YgMYJNf}nTK2@kr3B3Q9 z?@y^6TjqbJs$gm%S%faSBjnvm$ag{h9TQPVVupy(34;u6z@JY4J4TzuH-atWjX(5yoQ#hyQT{GNIJZ`_5{#gCbHD7uwKN3LS zKvtg9Q`O%fc`)=J3H*;$(}4K(NLd^~RgM>7ohP8NI}z^|*R6YWAOE%})M!B~Fljs+ z5}me~_kQvR11ongLj0aTrBQeFZ`SqG&nPd+re03T8nkiV;ndx7smpln$apxhk$G?4mq7w`K&@41-LRzhRh8)3? zvK)b!_W_BTHfFJ*)?U&(KNPj?j99{B^2QdmKZEs!f{wp?^f;HvL)%XKB3}q=@P=B| z>0%^pVgAm8(|;XKsZ7z-eZeD?nsgbPMC5By(i-b^ude7&3(fzey&lC3>*d1(B;}#I z#EB53+6zA`wXp+iKHoG4$sjOg^riEvR!a_|{$0+9$sZ({nZMkyxv@gm4%+8Uj6zX) z38C@pQU=iqXuO7%xiW91WaT<(!#0h7%O*-cN@H398xZbKu9@J%Q5H9&+ktFyvZS#sEKMoO0+xf_acurx(W?_V7Si<;o2RO|p8*jk9DCHB zWc6SM`zsA1JI;r{kciU?ty_1jNsieKxb#*eH+rYGiX^un*lK9lq17r&%K{0Cj>mgx zcl{$xpzP&my(yx)sbVS&U01bE+IRK_o8SG_qWR_h-37fep?s8fdIQ6BM>%w&mH)3 zEFrN&(AVecqUSa-^mx$8YL)RSy^msSP~_Fk?GzSDIj?iXXTqk9+{hnzv3p)ElKynE zvQ^O8dOVQU)#7aUoyif6 zC|0?bOEV>X!MMFLH5(!X9;qUI+!6eyYos9YEXnTim0&I%MD=fml9rQlK3^hk{v;Dz zb2LwXFDykJRb_7Dc8ZdSlK9T2P-=Q>PlYX!%umTjvCEbqgf2zJS>@%<#{acx^QSi* zIe5Qe+f@x$Fh&eCod&|$5^7oX2?eYzD2IzLZ|q|f#Dc#0kKpPMWZN>c8os7mW( zV3E@pJktp_JcVInJh$+9>T2`=W~BOX3K!dnD&C8bGS@>)*if@7cg@C;g1Aco4VX8qE9sYrw z)D0Jw9$z1$64B56we5q8+ket=I~3pgPde01tdgvUjS5DbArtrmMe+q|%=B*ps zf-Ux0?w1va%SS2|>~L3z+9q_=?eqdlbyw%~%9yf<_4V!Q3|O2y5MQWICqQ6TwaNDK z)+J`1`N#Toj?5UhK$|Y&N){PinY;3rhP1d2_VdyfQ3v+Sa!K30_TA6V;QxK|&%&Pt z=K%)*47{Dd{`CWVQrHP`z@OAq7PWB#bL(GC?z8#3;NWRb3LR&X5Gso=U=`i;D+GBj zJ-?A=TI|8dQPOC^lG2Lqn{>@06xPzh!H5)h{2kSJ?M^U12s&1;(?0Nt8u)no^)dT2 zaQAE0-1Q?vG@%S59^giN-+J+iwyD4eMv?{!Pw`IS%8b*2x_p~(k zk!`BMHkxp~xT!k=Yw%BgC)f*8HM|DI;crOYp6F3>j_ejj}G`(W$S{mp?3ST05cF zx0&r|55z9-P<<15%pDft!M~|E$blU|xS(WSrM6v)EQG%!O#oM|oK19FN+WCWZ3*OO zJ$&)3QM!mViPU7HZy4*@cjO3X=L(}sCr|xCVVs%F(iA96MV&zAR(&`rOF8sZVL?yioKHVlz;KBZz`$Y)N^(=Rxz&cSNax!`-yVzC;A7`(%cD6 zQ-j}_aoG!;cf$&f~aHkWwkG!ON%r1{nYyMy5te1*LG_X`y zY!kx$0S=sffVV8qGO`OW}iHH8T?la zZ-s13|Ff2RfteO>w$!G}sNh_%Iz_n5=*YrnbfbwPiHm;jd7(mqWn0_v&@~2$gpx{m z_?slZ=r7)*{Y@`bL=7bKOSD`W#V^AKtNHW&7`xzj&@tW4?6&o^nRe@}s!cCGdr_|-4MFU`3pg!rDaL#19Zfhb__p9xJpu^*<+YD)D zxl1DE8uCREn~Kf7ir$|fbUD`5$()f?*S9U!bC=^-I9n`I)ItAiNybheX7<>xbe@F3 zP=2t9-2sMUyVB`?Sxd7+npa$=a%~-j)PvuIpktR6e?k?AW`0?;dp%%W+drnVetw!>|-E?K4<2B4|w%gY;(k#lOk_OhS+V+ zgw$h?%HJ|J)M+1UifA*{JvU?SD$X-kzW^TuDF;JS{nPQTAh^h*7pK>VO3M~WqF zTp0wroxl>FZ62>Qs?~xNxqS(1-67Tel^w9PexCBCPkE0q+JIH&feyjDelwHCO2*4m9G^ zn{y@>X#Xdm5YQ9~s{<5*SyqFJ>HtMy-mCwUc+hkmAUVnZv}pkVg8$_<9x>$=9T&Q% e17w5Q!g$k(pj^5@MwlrqsPUUbfY$=P+5bN_x0MnA From 034ada3f32742fff1a024c58c5039c1ef0378e5f Mon Sep 17 00:00:00 2001 From: liuxiaoxu <1793812695@qq.com> Date: Tue, 3 Dec 2024 10:10:07 +0800 Subject: [PATCH 06/10] =?UTF-8?q?[fix]=20=E9=94=80=E5=94=AE=E7=AE=A1?= =?UTF-8?q?=E7=90=86=20=E6=8C=89=E7=85=A7=E4=B8=87=E6=9D=90=E8=B0=83?= =?UTF-8?q?=E6=95=B4:=20=E9=87=8D=E5=86=99=E5=AF=BC=E5=87=BA=E5=87=BA?= =?UTF-8?q?=E8=B4=A7=E7=AE=B1=E5=8D=951=E6=A8=A1=E6=9D=BF=E7=9A=84?= =?UTF-8?q?=E5=90=8E=E7=AB=AF=E6=8E=A5=E5=8F=A3=20=E4=BF=AE=E6=94=B9=20?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=E9=94=80=E5=94=AE=E5=87=BA=E8=B4=A7=E7=AE=B1?= =?UTF-8?q?=E5=8D=95=E6=A8=A1=E6=9D=BF=E6=95=B0=E6=8D=AE=E5=AE=9E=E4=BD=93?= =?UTF-8?q?=E7=B1=BB=20=E6=8C=89=E7=85=A7=E6=96=B0=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=87=BA=E8=B4=A7=E7=AE=B1=E5=8D=951.xlsx?= =?UTF-8?q?=E6=96=87=E4=BB=B6=20=E9=87=8D=E5=86=99=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E5=87=BA=E8=B4=A7=E7=AE=B1=E5=8D=952=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E7=9A=84=E5=90=8E=E7=AB=AF=E6=8E=A5=E5=8F=A3=20=E6=8C=89?= =?UTF-8?q?=E7=85=A7=E6=96=B0=E6=A8=A1=E6=9D=BF=E4=BF=AE=E6=94=B9=E5=87=BA?= =?UTF-8?q?=E8=B4=A7=E7=AE=B1=E5=8D=952.xlsx=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/dto/ExportShippingPackingDto.java | 10 ++ .../SysSalesShippingInformServiceImpl.java | 119 +++++++++++++----- .../attachments/销售出货箱单1.xlsx | Bin 91701 -> 91766 bytes .../attachments/销售出货箱单2.xlsx | Bin 31297 -> 31339 bytes 4 files changed, 98 insertions(+), 31 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/dto/ExportShippingPackingDto.java b/ruoyi-admin/src/main/java/com/ruoyi/system/dto/ExportShippingPackingDto.java index dda12cc2..4cbf0b2f 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/dto/ExportShippingPackingDto.java +++ b/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; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysSalesShippingInformServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysSalesShippingInformServiceImpl.java index 1b86e8ad..902d0aab 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysSalesShippingInformServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysSalesShippingInformServiceImpl.java @@ -853,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"; @@ -863,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 salesOrderCodes = new ArrayList<>(); + + if (StringUtils.isNotEmpty(salesOrderCode)){ + String[] splitSalesOrderCode = salesOrderCode.split(","); + salesOrderCodes = Arrays.asList(splitSalesOrderCode); } - Map map = new HashMap<>(); - map.put("customerContactBillto",sysSalesShippingInform.getCustomerContactBillto()); - map.put("contactAddressBillto",sysSalesShippingInform.getContactAddressBillto()); - map.put("customerContact",sysSalesShippingInform.getCustomerContact()); - map.put("customerContactAddress",sysSalesShippingInform.getCustomerContactAddress()); + //生产订主表的数据 + List sysMakeOrders = sysMakeOrderMapper.selectMakeOrderListBySalesOrderCodes(salesOrderCodes); + + //获取销售订单的明细 + List sysSalesOrderChildren = salesOrderChildMapper.selectBatchOrderChildListBySalesOrderCode(salesOrderCodes); + + + + Map makeOrderMap = new HashMap<>(); + + for (SysMakeOrder sysMakeOrder : sysMakeOrders) { + makeOrderMap.put(sysMakeOrder.getSaleNo(),sysMakeOrder); + } + List shippingPackingDtos = new ArrayList<>(); AtomicInteger index = new AtomicInteger(1); - List 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 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(); @@ -944,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 salesOrderCodes = new ArrayList<>(); + + if (StringUtils.isNotEmpty(salesOrderCode)){ + String[] splitSalesOrderCode = salesOrderCode.split(","); + salesOrderCodes = Arrays.asList(splitSalesOrderCode); } - Map map = new HashMap<>(); - map.put("customerContactBillto",sysSalesShippingInform.getCustomerContactBillto()); - map.put("contactAddressBillto",sysSalesShippingInform.getContactAddressBillto()); - map.put("customerContact",sysSalesShippingInform.getCustomerContact()); - map.put("customerContactAddress",sysSalesShippingInform.getCustomerContactAddress()); + //生产订主表的数据 + List sysMakeOrders = sysMakeOrderMapper.selectMakeOrderListBySalesOrderCodes(salesOrderCodes); + + //获取销售订单的明细 + List sysSalesOrderChildren = salesOrderChildMapper.selectBatchOrderChildListBySalesOrderCode(salesOrderCodes); + + + + Map makeOrderMap = new HashMap<>(); + + for (SysMakeOrder sysMakeOrder : sysMakeOrders) { + makeOrderMap.put(sysMakeOrder.getSaleNo(),sysMakeOrder); + } + List shippingPackingDtos = new ArrayList<>(); AtomicInteger index = new AtomicInteger(1); - List 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 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(); diff --git a/ruoyi-admin/src/main/resources/static/attachments/销售出货箱单1.xlsx b/ruoyi-admin/src/main/resources/static/attachments/销售出货箱单1.xlsx index eef3e6f7cb303ab2e559aac2ce23bf020357a3d8..b93f752ee6fd22c553ebdaf2485795cc75b78d0b 100644 GIT binary patch delta 4879 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 GsQv@yo&g2` diff --git a/ruoyi-admin/src/main/resources/static/attachments/销售出货箱单2.xlsx b/ruoyi-admin/src/main/resources/static/attachments/销售出货箱单2.xlsx index 115fd87508e1f2485d9d62ef279913348620baa6..e823b97b51aaec5bc61b011876533376132f6b94 100644 GIT binary patch delta 8316 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 TuR#o}5`onNh>(LkAMO4JxTL$D From cbc673daf3f30c6281bee5b59011a2b9eec6765b Mon Sep 17 00:00:00 2001 From: liuxiaoxu <1793812695@qq.com> Date: Tue, 3 Dec 2024 14:05:48 +0800 Subject: [PATCH 07/10] =?UTF-8?q?[fix]=20=E9=94=80=E5=94=AE=E7=AE=A1?= =?UTF-8?q?=E7=90=86=20=E6=8C=89=E7=85=A7=E4=B8=87=E6=9D=90=E8=B0=83?= =?UTF-8?q?=E6=95=B4:=20=E9=87=8D=E5=86=99=E5=AF=BC=E5=87=BA=E5=87=BA?= =?UTF-8?q?=E8=B4=A7=E5=8F=91=E7=A5=A81=E6=A8=A1=E6=9D=BF=E7=9A=84?= =?UTF-8?q?=E5=90=8E=E7=AB=AF=E6=8E=A5=E5=8F=A3=20=E4=BF=AE=E6=94=B9=20?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=E9=94=80=E5=94=AE=E5=87=BA=E8=B4=A7=E5=8F=91?= =?UTF-8?q?=E7=A5=A8=E6=A8=A1=E6=9D=BF=E6=95=B0=E6=8D=AE=E5=AE=9E=E4=BD=93?= =?UTF-8?q?=E7=B1=BB=20=E6=8C=89=E7=85=A7=E6=96=B0=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=87=BA=E8=B4=A7=E5=8F=91=E7=A5=A81.xlsx?= =?UTF-8?q?=E6=96=87=E4=BB=B6=20=E9=87=8D=E5=86=99=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E5=87=BA=E8=B4=A7=E5=8F=91=E7=A5=A82=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E7=9A=84=E5=90=8E=E7=AB=AF=E6=8E=A5=E5=8F=A3=20=E6=8C=89?= =?UTF-8?q?=E7=85=A7=E6=96=B0=E6=A8=A1=E6=9D=BF=E4=BF=AE=E6=94=B9=E5=87=BA?= =?UTF-8?q?=E8=B4=A7=E5=8F=91=E7=A5=A82.xlsx=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/dto/ExportShippingInvoiceDto.java | 7 +- .../SysSalesShippingInformServiceImpl.java | 153 ++++++++++++------ .../attachments/销售出货发票1.xlsx | Bin 89413 -> 89424 bytes .../attachments/销售出货发票2.xlsx | Bin 29190 -> 29138 bytes .../salesShippingInform.html | 4 +- 5 files changed, 114 insertions(+), 50 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/dto/ExportShippingInvoiceDto.java b/ruoyi-admin/src/main/java/com/ruoyi/system/dto/ExportShippingInvoiceDto.java index eed8c878..b075df5e 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/dto/ExportShippingInvoiceDto.java +++ b/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; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysSalesShippingInformServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysSalesShippingInformServiceImpl.java index 902d0aab..b45f411b 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysSalesShippingInformServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysSalesShippingInformServiceImpl.java @@ -1075,51 +1075,83 @@ public class SysSalesShippingInformServiceImpl implements ISysSalesShippingInfor insertShippingInformation(outOrderCode,shippingInformationType,shippingTemplateType,sysSalesShippingInform); String salesOrderCode = sysSalesShippingInform.getSalesOrderCode(); - SysMakeOrder sysMakeOrder = sysMakeOrderMapper.selectMakeOrderBySaleNo(salesOrderCode); - List sysSalesOrderChildren = salesOrderChildMapper.selectOrderChildListBySalesOrderCode(salesOrderCode); + List salesOrderCodes = new ArrayList<>(); - String makeNo = sysMakeOrder.getMakeNo(); - if (!StringUtils.isEmpty(makeNo)){ - List afterSalesShippingDevices = salesShippingDeviceMapper.selectShippingDeviceByMakeNo(makeNo); + if (StringUtils.isNotEmpty(salesOrderCode)){ + String[] splitSalesOrderCode = salesOrderCode.split(","); + salesOrderCodes = Arrays.asList(splitSalesOrderCode); } - Map map = new HashMap<>(); - map.put("customerContact",sysSalesShippingInform.getCustomerContact()); - map.put("customerContactAddress",sysSalesShippingInform.getCustomerContactAddress()); - map.put("customerContactBillto",sysSalesShippingInform.getCustomerContactBillto()); - map.put("contactAddressBillto",sysSalesShippingInform.getContactAddressBillto()); + //生产订主表的数据 + List sysMakeOrders = sysMakeOrderMapper.selectMakeOrderListBySalesOrderCodes(salesOrderCodes); + + + //销售订单主表的数据 + List sysSalesOrders = sysSalesOrderMapper.selectSysSalesOrderListByCodeList(salesOrderCodes); + + //获取销售订单的明细 + List sysSalesOrderChildren = salesOrderChildMapper.selectBatchOrderChildListBySalesOrderCode(salesOrderCodes); + + + + Map makeOrderMap = new HashMap<>(); + + for (SysMakeOrder sysMakeOrder : sysMakeOrders) { + makeOrderMap.put(sysMakeOrder.getSaleNo(),sysMakeOrder); + } + + Map salesOrderMap = new HashMap<>(); + + for (SysSalesOrder sysSalesOrder : sysSalesOrders) { + salesOrderMap.put(sysSalesOrder.getSalesOrderCode(),sysSalesOrder); + } ArrayList 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 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(); @@ -1163,50 +1195,79 @@ public class SysSalesShippingInformServiceImpl implements ISysSalesShippingInfor insertShippingInformation(outOrderCode,shippingInformationType,shippingTemplateType,sysSalesShippingInform); String salesOrderCode = sysSalesShippingInform.getSalesOrderCode(); - SysMakeOrder sysMakeOrder = sysMakeOrderMapper.selectMakeOrderBySaleNo(salesOrderCode); - List sysSalesOrderChildren = salesOrderChildMapper.selectOrderChildListBySalesOrderCode(salesOrderCode); + List salesOrderCodes = new ArrayList<>(); - String makeNo = sysMakeOrder.getMakeNo(); - if (!StringUtils.isEmpty(makeNo)){ - List afterSalesShippingDevices = salesShippingDeviceMapper.selectShippingDeviceByMakeNo(makeNo); + if (StringUtils.isNotEmpty(salesOrderCode)){ + String[] splitSalesOrderCode = salesOrderCode.split(","); + salesOrderCodes = Arrays.asList(splitSalesOrderCode); } - Map map = new HashMap<>(); - map.put("customerContact",sysSalesShippingInform.getCustomerContact()); - map.put("customerContactAddress",sysSalesShippingInform.getCustomerContactAddress()); - map.put("customerContactBillto",sysSalesShippingInform.getCustomerContactBillto()); - map.put("contactAddressBillto",sysSalesShippingInform.getContactAddressBillto()); + //生产订主表的数据 + List sysMakeOrders = sysMakeOrderMapper.selectMakeOrderListBySalesOrderCodes(salesOrderCodes); + + + //销售订单主表的数据 + List sysSalesOrders = sysSalesOrderMapper.selectSysSalesOrderListByCodeList(salesOrderCodes); + + //获取销售订单的明细 + List sysSalesOrderChildren = salesOrderChildMapper.selectBatchOrderChildListBySalesOrderCode(salesOrderCodes); + + + + Map makeOrderMap = new HashMap<>(); + + for (SysMakeOrder sysMakeOrder : sysMakeOrders) { + makeOrderMap.put(sysMakeOrder.getSaleNo(),sysMakeOrder); + } + + Map salesOrderMap = new HashMap<>(); + + for (SysSalesOrder sysSalesOrder : sysSalesOrders) { + salesOrderMap.put(sysSalesOrder.getSalesOrderCode(),sysSalesOrder); + } ArrayList 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 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(); diff --git a/ruoyi-admin/src/main/resources/static/attachments/销售出货发票1.xlsx b/ruoyi-admin/src/main/resources/static/attachments/销售出货发票1.xlsx index 5153f88d1b5f38afb1341bf4c256198a4f0c25c9..d712f516b79ff9b2332461f02635b0f209d2c82c 100644 GIT binary patch delta 4514 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 diff --git a/ruoyi-admin/src/main/resources/static/attachments/销售出货发票2.xlsx b/ruoyi-admin/src/main/resources/static/attachments/销售出货发票2.xlsx index 7cda613a96bb1ddfc602b011cfd9ca20d769c644..4f0494a831a82cad9298b0bd434b39f3049ff662 100644 GIT binary patch delta 6032 zcmZ8lbySpHx1Slhk!A*^Ly!)K?rxizI9f?OuA=H?z@QT53LMB!>#Oilr+I>40N9lOWUa$9Kjf^Ko>1 z+plj&Ij)LbB6FlSkUgzJa(L8Jxjb3=lvVa)+qURKZkHU}&y{lh5YP4F`qs|RVSq_N zU2R<~c#jlLqOinmLgsbUX%Y&ri^%AJv$$C~zzkfeb3Ej6$uYW6l3oZg^Luf$Z5Lt4 zZAlF<7m<(`T{q5x5`rbr_^plih(!^jC$QKROU6AW^wD6zvdZknCGb0ON4wd3uRa)q1w)v{wzeo+LF7 zndCyjbPm1zmWH3NWKYZ7J!{fWXk~~(g!ax3*X{75dA#}$Z1Sh74Uyvo4D5(dMqarc zdB-iAt`-rpT}1JHlqZ;cs;bCU?xlb-^8jxih2I+h@g1h2jDkw?aN3yIpa`|^5<9qQ zODqk{C`4esWLXC3HIr}-{QJfzPJxymmqT9q#Z%GTYD7BY77b~eX&i#3$;^96b;xT^ zTDSJO>-V295}--;sEAlpVbr1aK8l7fsQcg-eB<>Dy^+_UaMgCyNvM~;>56F$42j}| zWwD;GDdnl#+`?aUWn1j;DJjj`IB~+0&XjK~6KGfwpq0HhIo`_0gyxsP@9swNlUiM< z==R9)4w3*xFksMNKTpl+uS5fZYDf@j7&L%Ed?uVE;EnY?%J)uG6f9KL5*w+!l=c@* zE2F&9Sy-$sXqMAEAJ$A^xXp?K$_ianfLQLtr$KdUAT{hHe3|1zWp>oFWj?2r+0u_b zE9t;JDS)X`NN??~^sc>6`0TOg*3kAE;M+cX5PulV%^jG(>#-GmEl zotD5B0&>VsvX{=$^)Ub@4!Jw(-UyMgZk~yy_R5KYkzJQhMl;$Dx(14t>DDs5@3cz} z;%(2skubtvN#ugwmM$0(T$J7pEkLHbtq@zK4<{2&=p89jgsuE8kCLK|n0OtgpRMkM zdMTAoV)&}niMM5d)P^NV+A#+2HS65b2eI9*xV63X8Dg93>Yq`_sU#f|bQg43`l@za;jHjfz-S|7vSVWyy^8;#ES+8+i z%H9EI#BKXus+%tSJc+&V>*vSOy?hbkd&`zt-LEm>9nGK*ABu+A?nt{gAcIFLx#O9$ zXey9gx%3$*S1ix(&pFSgLvCn&*6pf2M7jfBph^&{@O$0{L)UmdbMma=Nzs#d6QpMhs{82j20dG z%-El1w8i)vk#?3vff5=%E1`4X1$6676YVXj0#hIZ1oBG))rDQ5kdYN0|9nvHFQUBX zKf6VckzYVi^q7Tpxbu@MlAU0r+adv(bUT$6&5NKy>;cvU6_6s?c_2o;A(L&1+7%ZI zYkr@m7A~1o7`6Z9H2!dd%UraErAS^?m!<@l%<$=(1j^$QMCY z5QQhxOu(8nv!4D)mgR0?=@ncLlUn;BMHSBcPWEtq4kJCIDZzv1rEJI}zMsxQjDbVF3K?oq#v&Ao zMz5l1fE3Ws112~ZgJ~}MhxXR;W~a7CRER+9ai~qQ=VZP@M4S-Go(7#{Jz3WZXDp;8wJBySILt5JXQZ4AFWRm0A&*e9 zLPAv-HEycS##}vFHO58qOLi#96m}sNxBg>ymbrYH;8wDLy`HrtrEgvJw^6|O@UAUd z=euT&pv(6RuQ4%f7Id`z9`{ALq5qPGlZ~%SVlr1!`oa3FEzspX6bMjU@4aXb&~C&N ziTl`a*V#6n8M^cBu>GO8e{)vBi{08CP@{xLtRa7cuek*ok|Tzh56jtuqv%g+bh4fro>QWpC|$p!M(vu#WH{e+(=; z%t#RW%YUbq3xG^5s7Wf?Fml*0X{FGx+bHEezx?{zy)*OhlXc{k=b)l>j{r?*sLf)k zCx@lwxR*sl1VLCJQPYM}+{YSfpFkeXr|%bsJ91QoPzYkodCa90sl3_vR!#0sKTT5L zAlb%-N2`rwB#o1(a4h_qBos3Yig5r7>+*)4XMFWvk&(@Wy#W-L!NJZuk_B0f^p4%z zL5RE6jVnb$0=)Q$j6-FgF%*3uC{&hu3t33J45yeT&nOk*I9;)_?UOM4Jz3Z~CDG+h=jOYD8z>ua6r#EzXaw~4= z9Q_A)#!K?(Bjvf!?^Q|5$s_7>{JtkWc;obX9Pb0Jf6Jc{YlE_0kSFx3G$g^^IQ{y= z98yYzq0OchA3I@Q?iFk>tL6uM3CnYl*$b^G#{O!$i=VonV!xin^$rgNsWuJJdK%q+dj8&6ikQ+YL& zcZe|REXY4;KXhhq3sYW^x=hLRtg8P?1h_sXowchxs=sVgImz$sTPoGriPB!PKed}( z+h}~Xlx><~SGh*^-s>jT19m`-SEDa6&X-MoK1wLb?%rs%JH1O|t+rhQ}&3;HKGaLztX{WqI1%<<0{@%k|%j zcsbNzXwv=j@dtZl7k;j=i@8mo^vU}!pD*~e>0!zXyM3~kl1zj)RH2R+1w?0@H-R$& zKSo@bn_B;%)$;iSU4~V5~vo* z*I>SUW836KqjFiDxn_(ZsQ{7&`bZ0!cN;uiO@GGF6U{I8ygmKAHHb9YX*Q9jEK9t- zjXP*f!lPoxZ4>Mm`GyMz(e()#mArN)+bmb-=dXr}{$IpUrqoPvO6y-W@}) z3iCIiN6{glUr8ID;9Nxm)$At46_rBgS%$N|O-u>Mj5XXyNq+I1JU#S-Lz_MQxC1p~ z4d#0t%4x>ynfa}i@tXnQLvePig%m3vwa2N;lLJ7X05a&G0bPIhY8`u!6+&H^ecd`Sun{~f> z75_#ThO`uI_8HsrIlA$&1M}+dHMsj%BAyfcPF3^Hrbm`*f~7qd^EWMS5wz}Mn(cy?ES#+w^f@(*MdqQUxJ%S>3a;Q6}bbd$%g zVaJI@=J=Gj?cU(+t-&51kL)^=ev=gI&kR_jy|t&yDV?HvZFo9SG3DD=?_~1cQ7Fvk zRz&vvnkrpY_AlZnS;aQNEJ*Nie9~2`Qj{@{!jvXw#zG=hal&KqHMelF0zu95r@X}3 zO%tH|^g%X=kM5b0nK`>U2HZ4Q(nfBpCnK&;;E9+lQMaqWqe~*Fx5m7F#`HAwg6W;N z&Tx=(M2mhh5XuK#df~jTVq&U3EH92w z$j{?08F_Y-&PsR8r_EIP;i>8iJNbE&MIgNfnq6mvZGb($I^)0P@Mfzy*H*8b3{&;%kjz|Ei7gIK zN4%UV4!bd?cv(4BtzzxNXbP-}eeD%%8XpHqxi!mT7*Ac#g5=Mq@a9jxbji0Y08iIf z%k!s=G`AtFxK1+&?YO*Yf1ho-GU&>UCr4hvpi&u)L)EkUwd^<#72VQX>B8oM4;{|5 z15L=A7dpe3+zAX7kzB$Gw%Sq&Z9b{epZX*j5B9T80vlUg(bLZ@wsCoOW@QpgMqDX9 zB^g-B1zpMKUX0*B(r+iE`@)jS2t+Fq<|~8mdazMD9)+Mi1(OT0`rv0w{`}*VxOl)~Km_Q`;9(?@>-xmT-Q80LoT zACJnv13$c*_2TDt_K+~Q(l@2=@xv{RYB5~Ult&fMtelkda>umm!hBn^#|`TQE7t8s zbMdjqr;zL`%85wBY1GBtn9au!ahKTN23ue|abuVW*(G;gZ58=q&ZhoRpA_Aqm88e& z@C#O*`&d>xMwsgNAOb`6-XzRJOeU%jw`{>C0N%cU0W>HK9?-MwTNT8+q9)Wt#y(B> z9RAV#qXfc_N&^0wl4eu38BdUsE<=2s7XeB+bQyqm@)raa9y*Wx-1#GXf?wVAJwzZ` z>v*c(K&|)HTahST4JucM4mL+@G^y8$rYwYjeweyVH=2|hLEF7PuK;v-AKYD7?pGKD zFv#b*At#O1SDKi5L#FibkB_f*XIVvY>y=^&2K7E|Z0f(*dSd#C-CB_u-JE41Ht{7v zwES?CeX!V6AMdjz@9`sHf?O}g)63=>5#P)GtIxhH4Z<%+!#TO?<@KDrB-eXa$S0`3 z1e}~92m)Y{l2KA`&qWQL>ox)LbkSRDfCe-r1=(*3?p5=qUKkY*z>?bn2x1ci*D+!K zGg9A%aZPT!PD6U2e9ssZyFXIDH#<(iO=pa)nsN;09KPFL{oK#F-5o%+0M@6YymV+w z(`}d#6BWDJMNUnP608cxjY@Awou1!TIA@*#zb}w~Zi6Iw>d1pa`Mo8(;&T50=9ihj zw!6EsM^)gB8Rdv z5bHWRrauedJS<-_I7#rq!{|@;)41%rG!|ezzZ3;&O;-JATW2GN&O$ohFg)qo~JL; zIG1G^J%em@qt?fq;?%ooa*Vvcub8B`-M;@Q-hH;#LuEuOO(&%`_C%cEXuDF*NFi#` zQhwvN2y9nMAnV)p;yX)q=|?#@$KUlNQ7zv11>D7V^qeft$TL#|UU#GF0R2+mUL9BZ zZl9c?Zr4-oqGB7bnx3i#P(*4?_;x%iQk~ZbZ{lfM3u)e?R^n!5Oq4k6j~Oa?G~BHD zP@(H5kHR}ccvpWC6%v(i>?N`yjoxa}@jHb^$Fi1e(&_f~p_r_bU|y$Fq$uD`ywV4coKlAHW$YbJWO@!vO9mfg< zWek*s+R)&_XEU4z=p(U_p%>4QDSMH283_$hhEZRSvt~oHRAU}IEo+#}9R3zSNWGt& z&=y<<`gB(o$XX@wpSg6-vz>EYu$U{?#m}-(KS?$yCq*2f;UOl;Z;K)xr01k_BdMa>Kk1T&9~@h z+s_COcvBd|!LR8!Gg8dO2wg|L;_+*5)oe(+80z8BebrJ!iBYd2M!7PYoCrOCD6{5n55%I*C tkm|pj=>M;c2LqvrM~Zmk%n2dJdoZDh3TIXbgy5gmJ!evMJlnsS{|7)>VBr7& delta 6062 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 diff --git a/ruoyi-admin/src/main/resources/templates/system/salesShippingInform/salesShippingInform.html b/ruoyi-admin/src/main/resources/templates/system/salesShippingInform/salesShippingInform.html index 6e6bf075..5c25a2fc 100644 --- a/ruoyi-admin/src/main/resources/templates/system/salesShippingInform/salesShippingInform.html +++ b/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; From 603200175559358ab51c099523d9775244881ff1 Mon Sep 17 00:00:00 2001 From: liuxiaoxu <1793812695@qq.com> Date: Tue, 3 Dec 2024 14:19:27 +0800 Subject: [PATCH 08/10] =?UTF-8?q?[fix]=20=E9=94=80=E5=94=AE=E7=AE=A1?= =?UTF-8?q?=E7=90=86=20=E6=8C=89=E7=85=A7=E4=B8=87=E6=9D=90=E8=B0=83?= =?UTF-8?q?=E6=95=B4=EF=BC=9A=E5=8E=BB=E6=8E=89=E5=AF=BC=E5=87=BA=E9=94=80?= =?UTF-8?q?=E5=94=AE=E8=AE=A2=E5=8D=95=E6=A8=A1=E6=9D=BF=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/templates/system/salesOrder/salesOrder.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ruoyi-admin/src/main/resources/templates/system/salesOrder/salesOrder.html b/ruoyi-admin/src/main/resources/templates/system/salesOrder/salesOrder.html index 0e49617a..2216202b 100644 --- a/ruoyi-admin/src/main/resources/templates/system/salesOrder/salesOrder.html +++ b/ruoyi-admin/src/main/resources/templates/system/salesOrder/salesOrder.html @@ -111,11 +111,11 @@ 添加 - 导出销售订单列表 - - - 导出销售订单模板 + 导出 + + + 出货 From 2bf66f995e0a9ca39f09562602403cbc97b86174 Mon Sep 17 00:00:00 2001 From: liuxiaoxu <1793812695@qq.com> Date: Tue, 3 Dec 2024 17:38:59 +0800 Subject: [PATCH 09/10] =?UTF-8?q?[feat]=20=E5=BA=93=E5=AD=98=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=20=E6=8C=89=E7=85=A7=E4=B8=87=E6=9D=90=E8=B0=83?= =?UTF-8?q?=E6=95=B4:=E6=A0=B9=E6=8D=AE=E6=96=B0=E7=89=88prd=20=E9=87=8D?= =?UTF-8?q?=E5=86=99=E5=BA=93=E5=AD=98=E6=9F=A5=E8=AF=A2=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E8=A1=A8=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E5=BA=93=E5=AD=98=E6=9F=A5=E8=AF=A2=E5=AE=9E=E4=BD=93=E7=B1=BB?= =?UTF-8?q?=20=E6=96=B0=E5=A2=9E=E5=BA=93=E5=AD=98=E6=9F=A5=E8=AF=A2mapper?= =?UTF-8?q?.xml=E6=96=87=E4=BB=B6=20=E4=BF=AE=E6=94=B9=E4=BB=93=E5=BA=93?= =?UTF-8?q?=E5=87=BA=E5=BA=93=E5=8D=95=E5=92=8C=E4=BB=93=E5=BA=93=E5=85=A5?= =?UTF-8?q?=E5=BA=93=E5=8D=95=E7=9B=B8=E5=85=B3=E7=9A=84=E5=BA=93=E5=AD=98?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E4=B8=9A=E5=8A=A1=20=E6=96=B0=E5=A2=9E=20=20?= =?UTF-8?q?inquiry=5Fbusiness=5Ftype=20=E5=BA=93=E5=AD=98=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E4=B8=9A=E5=8A=A1=E7=B1=BB=E5=9E=8B(0=E9=87=87?= =?UTF-8?q?=E8=B4=AD=E3=80=811=E7=94=9F=E4=BA=A7=E3=80=812=E5=A7=94?= =?UTF-8?q?=E5=A4=96=E3=80=813=E9=80=80=E6=8D=A2=E8=B4=A7=E3=80=814?= =?UTF-8?q?=E5=BA=93=E5=AD=98=E7=9B=98=E7=82=B9=E3=80=815=E5=BC=80?= =?UTF-8?q?=E5=8F=91=E4=BF=AE=E6=94=B9=E3=80=816=E9=94=80=E5=94=AE?= =?UTF-8?q?=E3=80=817=E5=91=98=E5=B7=A5=E6=9C=8D=E5=8A=A1=E3=80=818?= =?UTF-8?q?=E5=BA=93=E5=AD=98=E6=8A=A5=E6=8D=9F)=20=E6=96=B0=E5=A2=9E=20?= =?UTF-8?q?=20inquiry=5Forder=5Ftype=20=E5=BA=93=E5=AD=98=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E8=AE=A2=E5=8D=95=E7=B1=BB=E5=9E=8B(0=E9=87=87?= =?UTF-8?q?=E8=B4=AD=E5=85=A5=E5=BA=93=E5=8D=95=E3=80=811=E7=94=9F?= =?UTF-8?q?=E4=BA=A7=E5=85=A5=E5=BA=93=E5=8D=95=E3=80=812=E5=A7=94?= =?UTF-8?q?=E5=A4=96=E5=85=A5=E5=BA=93=E5=8D=95=E3=80=813=E9=80=80?= =?UTF-8?q?=E6=8D=A2=E8=B4=A7=E5=8D=95=E3=80=814=E5=BA=93=E5=AD=98?= =?UTF-8?q?=E7=9B=98=E7=82=B9=E5=8D=95=E3=80=815=E6=8D=A2=E8=B4=A7?= =?UTF-8?q?=E5=85=A5=E5=BA=93=E5=8D=95=E3=80=816=E7=94=9F=E4=BA=A7?= =?UTF-8?q?=E9=80=80=E6=96=99=E5=8D=95=E3=80=817=E5=BC=80=E5=8F=91?= =?UTF-8?q?=E9=80=80=E6=96=99=E5=8D=95=E3=80=818=E5=A7=94=E5=A4=96?= =?UTF-8?q?=E9=80=80=E6=96=99=E5=8D=95=E3=80=819=E5=91=98=E5=B7=A5?= =?UTF-8?q?=E9=80=80=E6=96=99=E5=8D=95=E3=80=8110=E5=91=98=E5=B7=A5?= =?UTF-8?q?=E9=A2=86=E6=96=99=E5=8D=95=E3=80=8111=E7=94=9F=E4=BA=A7?= =?UTF-8?q?=E9=A2=86=E6=96=99=E5=8D=95=E3=80=8112=E5=A7=94=E5=A4=96?= =?UTF-8?q?=E9=A2=86=E6=96=99=E5=8D=95=E3=80=8113=E5=BC=80=E5=8F=91?= =?UTF-8?q?=E9=A2=86=E6=96=99=E5=8D=95=E3=80=8114=E9=94=80=E5=94=AE?= =?UTF-8?q?=E5=87=BA=E8=B4=A7=E5=8D=95=E3=80=8115=E9=80=80=E6=8D=A2?= =?UTF-8?q?=E8=B4=A7=E5=8D=95=E3=80=8116=E5=BA=93=E5=AD=98=E6=8A=A5?= =?UTF-8?q?=E6=8D=9F=E5=8D=95)=20=E6=96=B0=E5=A2=9E=20=20inquiry=5Fwarehou?= =?UTF-8?q?se=5Ftype=20=E5=BA=93=E5=AD=98=E6=9F=A5=E8=AF=A2=E5=87=BA?= =?UTF-8?q?=E5=85=A5=E5=BA=93=E7=B1=BB=E5=9E=8B(0=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E5=85=A5=E5=BA=93=E3=80=81=E4=BE=9B=E5=BA=94=E5=95=86=E8=A1=A5?= =?UTF-8?q?=E8=B4=A7=E3=80=811=E7=94=9F=E4=BA=A7=E5=85=A5=E5=BA=93?= =?UTF-8?q?=E3=80=812=E5=A7=94=E5=A4=96=E5=85=A5=E5=BA=93=E3=80=813?= =?UTF-8?q?=E5=85=AC=E5=8F=B8=E9=80=80=E8=B4=A7=E5=85=A5=E5=BA=93=E3=80=81?= =?UTF-8?q?4=E7=9B=98=E7=9B=88=E3=80=815=E4=BE=9B=E5=BA=94=E5=95=86?= =?UTF-8?q?=E6=8D=A2=E8=B4=A7=E3=80=816=E7=94=9F=E4=BA=A7=E9=80=80?= =?UTF-8?q?=E6=96=99=E3=80=817=E5=BC=80=E5=8F=91=E9=80=80=E6=96=99?= =?UTF-8?q?=E3=80=818=E5=A7=94=E5=A4=96=E9=80=80=E6=96=99=E3=80=819?= =?UTF-8?q?=E5=91=98=E5=B7=A5=E9=80=80=E6=96=99=20=20=2010=E5=91=98?= =?UTF-8?q?=E5=B7=A5=E9=A2=86=E6=96=99=E3=80=8111=E7=94=9F=E4=BA=A7?= =?UTF-8?q?=E9=A2=86=E6=96=99=E3=80=8112=E5=A7=94=E5=A4=96=E9=A2=86?= =?UTF-8?q?=E6=96=99=E3=80=8113=E5=BC=80=E5=8F=91=E9=A2=86=E6=96=99?= =?UTF-8?q?=E3=80=8114=E9=94=80=E5=94=AE=E5=87=BA=E5=BA=93=E3=80=8115?= =?UTF-8?q?=E5=85=AC=E5=8F=B8=E9=80=80=E8=B4=A7=E5=87=BA=E5=BA=93=E3=80=81?= =?UTF-8?q?16=E7=9B=98=E4=BA=8F=E3=80=8117=E6=8A=A5=E6=8D=9F)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WarehouseInventoryInquiryDetail.java | 396 ++++-------------- ...houseInventoryReportDamageServiceImpl.java | 16 +- .../impl/WarehouseOutOrderServiceImpl.java | 15 +- .../WarehouseStorageOrderServiceImpl.java | 36 +- .../WarehouseInventoryInquiryDetailMapper.xml | 148 ++----- 5 files changed, 137 insertions(+), 474 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/domain/WarehouseInventoryInquiryDetail.java b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/domain/WarehouseInventoryInquiryDetail.java index 20b00865..39dd8363 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/domain/WarehouseInventoryInquiryDetail.java +++ b/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; @@ -10,9 +9,9 @@ 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,400 +21,151 @@ 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 Integer increaseDecreaseNum; - /** 含税总价 */ - @Excel(name = "含税单价") - private BigDecimal purchasePriceIncludesTax; - - /** 采购单号 */ - @Excel(name = "采购单号") - private String purchaseOrderCode; - - /** 供应商ID */ - @Excel(name = "供应商ID") - private String supplierCode; - - /** 供应商名称 */ - @Excel(name = "供应商名称") - private String supplierName; - - public void setInventoryInquiryDetailId(Long inventoryInquiryDetailId) + public void setInventoryInquiryDetailId(Long inventoryInquiryDetailId) { this.inventoryInquiryDetailId = inventoryInquiryDetailId; } - public Long getInventoryInquiryDetailId() + public Long getInventoryInquiryDetailId() { return inventoryInquiryDetailId; } - public void setMaterialNo(String materialNo) + public void setMaterialNo(String materialNo) { this.materialNo = materialNo; } - public String getMaterialNo() + public String getMaterialNo() { 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; + return shippingDeviceId; } - 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; - } - public void setInventoryHistoricalTime(Date inventoryHistoricalTime) + public void setInventoryHistoricalTime(Date inventoryHistoricalTime) { this.inventoryHistoricalTime = inventoryHistoricalTime; } - public Date getInventoryHistoricalTime() + public Date getInventoryHistoricalTime() { return inventoryHistoricalTime; } - public void setInventoryHistoricalType(String inventoryHistoricalType) - { - this.inventoryHistoricalType = inventoryHistoricalType; - } - - public String getInventoryHistoricalType() - { - return inventoryHistoricalType; - } - public void setInventoryIncreaseDecrease(String inventoryIncreaseDecrease) + public void setInventoryIncreaseDecrease(String inventoryIncreaseDecrease) { this.inventoryIncreaseDecrease = inventoryIncreaseDecrease; } - public String getInventoryIncreaseDecrease() + public String getInventoryIncreaseDecrease() { 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 public String toString() { 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("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("remark", getRemark()) - .append("createTime", getCreateTime()) - .append("createBy", getCreateBy()) - .append("updateBy", getUpdateBy()) - .append("updateTime", getUpdateTime()) - .toString(); + .append("inventoryInquiryDetailId", getInventoryInquiryDetailId()) + .append("materialNo", getMaterialNo()) + .append("correlationCode", getCorrelationCode()) + .append("inquiryBusinessType", getInquiryBusinessType()) + .append("inquiryOrderType", getInquiryOrderType()) + .append("inquiryWarehouseType", getInquiryWarehouseType()) + .append("shippingDeviceId", getShippingDeviceId()) + .append("inventoryHistoricalTime", getInventoryHistoricalTime()) + .append("inventoryIncreaseDecrease", getInventoryIncreaseDecrease()) + .append("increaseDecreaseNum", getIncreaseDecreaseNum()) + .append("remark", getRemark()) + .append("createTime", getCreateTime()) + .append("createBy", getCreateBy()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .toString(); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseInventoryReportDamageServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseInventoryReportDamageServiceImpl.java index 95b67f51..92c41a3b 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseInventoryReportDamageServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseInventoryReportDamageServiceImpl.java @@ -237,7 +237,7 @@ 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("新增库存历史失败!"); @@ -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); +// inquiryDetail.setAvailableStockNum(decreaseNum); inquiryDetail.setInventoryHistoricalTime(DateUtils.getNowDate()); inquiryDetail.setCreateBy(ShiroUtils.getLoginName()); inquiryDetail.setCreateTime(DateUtils.getNowDate()); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseOutOrderServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseOutOrderServiceImpl.java index 59265e3c..c7969ed7 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseOutOrderServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseOutOrderServiceImpl.java @@ -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("新增库存历史数据失败"); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseStorageOrderServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseStorageOrderServiceImpl.java index 25ac4673..6b1ac73f 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseStorageOrderServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseStorageOrderServiceImpl.java @@ -716,7 +716,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")) { //// 有无归属分类 // } @@ -726,12 +726,12 @@ 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); } //查询该物料报损数,更新库存查询报损数 @@ -791,12 +791,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()); @@ -804,7 +804,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"); @@ -818,18 +818,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()); diff --git a/ruoyi-admin/src/main/resources/mapper/warehouse/WarehouseInventoryInquiryDetailMapper.xml b/ruoyi-admin/src/main/resources/mapper/warehouse/WarehouseInventoryInquiryDetailMapper.xml index 3e0f79d8..26b29fd8 100644 --- a/ruoyi-admin/src/main/resources/mapper/warehouse/WarehouseInventoryInquiryDetailMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/warehouse/WarehouseInventoryInquiryDetailMapper.xml @@ -1,39 +1,20 @@ + PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + - - - - - - - - - - - - - - - - - - + + + + + - - - - - - - + @@ -42,131 +23,68 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - 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 - + - - - insert into warehouse_inventory_inquiry_detail 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, + correlation_code, + inquiry_business_type, + inquiry_order_type, + inquiry_warehouse_type, + shipping_device_id, 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, + increase_decrease_num, remark, create_time, create_by, update_by, update_time, - + #{materialNo}, - #{materialName}, - #{materialType}, - #{materialPhotourl}, - #{materialBrand}, - #{materialUnit}, - #{materialDescribe}, - #{materialProcessMethod}, - #{materialModel}, - #{materialSpecification}, - #{historicalTotal}, - #{availableStockNum}, - #{attributionAvailableStockNum}, - #{noattributionAvailableStockNum}, - #{useNum}, - #{reportDamageNum}, - #{materialUseStatus}, - #{inventoryAttributionCode}, - #{inventoryUseCode}, + #{correlationCode}, + #{inquiryBusinessType}, + #{inquiryOrderType}, + #{inquiryWarehouseType}, + #{shippingDeviceId}, #{inventoryHistoricalTime}, - #{inventoryHistoricalType}, #{inventoryIncreaseDecrease}, - #{inventoryHistoricalNum}, - #{purchasePriceExcludingTax}, - #{purchasePriceIncludesTax}, - #{purchaseOrderCode}, - #{supplierCode}, - #{supplierName}, + #{increaseDecreaseNum}, #{remark}, #{createTime}, #{createBy}, #{updateBy}, #{updateTime}, - + update warehouse_inventory_inquiry_detail material_no = #{materialNo}, - material_name = #{materialName}, - material_type = #{materialType}, - material_photoUrl = #{materialPhotourl}, - material_brand = #{materialBrand}, - material_unit = #{materialUnit}, - material_describe = #{materialDescribe}, - material_process_method = #{materialProcessMethod}, - material_model = #{materialModel}, - material_specification = #{materialSpecification}, - historical_total = #{historicalTotal}, - available_stock_num = #{availableStockNum}, - attribution_available_stock_num = #{attributionAvailableStockNum}, - noattribution_available_stock_num = #{noattributionAvailableStockNum}, - use_num = #{useNum}, - report_damage_num = #{reportDamageNum}, - material_use_status = #{materialUseStatus}, - inventory_attribution_code = #{inventoryAttributionCode}, - inventory_use_code = #{inventoryUseCode}, + correlation_code = #{correlationCode}, + inquiry_business_type = #{inquiryBusinessType}, + inquiry_order_type = #{inquiryOrderType}, + inquiry_warehouse_type = #{inquiryWarehouseType}, + shipping_device_id = #{shippingDeviceId}, inventory_historical_time = #{inventoryHistoricalTime}, - inventory_historical_type = #{inventoryHistoricalType}, inventory_increase_decrease = #{inventoryIncreaseDecrease}, - inventory_historical_num = #{inventoryHistoricalNum}, - purchase_price_excluding_tax = #{purchasePriceExcludingTax}, - purchase_price_includes_tax = #{purchasePriceIncludesTax}, - purchase_order_code = #{purchaseOrderCode}, - supplier_code = #{supplierCode}, - supplier_name = #{supplierName}, + increase_decrease_num = #{increaseDecreaseNum}, remark = #{remark}, create_time = #{createTime}, create_by = #{createBy}, @@ -181,7 +99,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - delete from warehouse_inventory_inquiry_detail where inventory_inquiry_detail_id in + delete from warehouse_inventory_inquiry_detail where inventory_inquiry_detail_id in #{inventoryInquiryDetailId} From 76351c8f6ecca0e4bf6c37e8febf2d71cd677e82 Mon Sep 17 00:00:00 2001 From: liuxiaoxu <1793812695@qq.com> Date: Tue, 3 Dec 2024 19:15:25 +0800 Subject: [PATCH 10/10] =?UTF-8?q?[feat]=20=E5=BA=93=E5=AD=98=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=20=E5=BA=93=E5=AD=98=E6=9F=A5=E8=AF=A2=E4=B8=BB?= =?UTF-8?q?=E8=A1=A8,=E5=AE=9E=E4=BD=93=E7=B1=BB,Mapper.xml=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E6=96=B0=E5=A2=9E:=E5=85=B1=E4=BA=AB=E5=8F=AF?= =?UTF-8?q?=E7=94=A8=E5=BA=93=E5=AD=98=E6=95=B0=E3=80=81=E5=9B=BA=E5=AE=9A?= =?UTF-8?q?=E5=8F=AF=E7=94=A8=E5=BA=93=E5=AD=98=E6=95=B0=E3=80=81=E9=94=81?= =?UTF-8?q?=E5=AE=9A=E5=BA=93=E5=AD=98=E6=95=B0=E3=80=81=E7=9B=98=E4=BA=8F?= =?UTF-8?q?=E6=95=B0=20=E6=89=80=E6=9C=89=E4=B8=8E=E6=95=B0=E9=87=8F?= =?UTF-8?q?=E6=9C=89=E5=85=B3=E7=9A=84=E6=95=B0=E6=8D=AE=E9=83=BD=E6=94=B9?= =?UTF-8?q?=E4=B8=BAInteger=E7=B1=BB=E5=9E=8B=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E7=94=9F=E4=BA=A7Bom=E5=AE=9E=E4=BD=93=E7=B1=BB=E4=B8=AD?= =?UTF-8?q?=E7=9A=84=20=E5=A7=94=E5=A4=96=E5=B7=A5=E5=BA=8F=E6=95=B0?= =?UTF-8?q?=E7=AD=89=E6=95=B0=E9=87=8F=E7=9B=B8=E5=85=B3=E7=9A=84=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E9=83=BD=E6=94=B9=E4=B8=BAInteger=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=20=E4=BF=AE=E6=94=B9=E7=94=9F=E4=BA=A7Bom=E7=9A=84=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0=E7=B1=BB=E4=B8=AD=E7=9A=84=E4=B8=9A=E5=8A=A1=E6=96=B9?= =?UTF-8?q?=E6=B3=95,=E6=8A=8A=E6=89=80=E6=9C=89=E6=95=B0=E9=87=8F?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E7=9A=84=E6=95=B0=E6=8D=AE=E7=94=B1BigDecima?= =?UTF-8?q?l=E6=94=B9=E4=B8=BAInteger=E7=B1=BB=E5=9E=8B=20=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=20=E4=BB=93=E5=BA=93=E5=BA=93=E5=AD=98=E6=8A=A5?= =?UTF-8?q?=E6=8D=9F=E5=AF=B9=E8=B1=A1=20=E6=89=80=E6=9C=89=E4=B8=8E?= =?UTF-8?q?=E6=95=B0=E9=87=8F=E6=9C=89=E5=85=B3=E7=9A=84=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E9=83=BD=E6=94=B9=E4=B8=BAInteger=E7=B1=BB=E5=9E=8B=20?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=20=E4=BB=93=E5=BA=93=E5=BA=93=E5=AD=98?= =?UTF-8?q?=E6=8A=A5=E6=8D=9F=E5=AD=90=E8=A1=A8=E5=AF=B9=E8=B1=A1=20?= =?UTF-8?q?=E6=89=80=E6=9C=89=E4=B8=8E=E6=95=B0=E9=87=8F=E6=9C=89=E5=85=B3?= =?UTF-8?q?=E7=9A=84=E6=95=B0=E6=8D=AE=E9=83=BD=E6=94=B9=E4=B8=BAInteger?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=20=E4=BF=AE=E6=94=B9=E5=BA=93=E5=AD=98?= =?UTF-8?q?=E6=8A=A5=E6=8D=9F=E7=9A=84=E5=AE=9E=E7=8E=B0=E7=B1=BB=E4=B8=AD?= =?UTF-8?q?=E7=9A=84=E4=B8=9A=E5=8A=A1=E6=96=B9=E6=B3=95,=E6=8A=8A?= =?UTF-8?q?=E6=89=80=E6=9C=89=E6=95=B0=E9=87=8F=E7=9B=B8=E5=85=B3=E7=9A=84?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E7=94=B1BigDecimal=E6=94=B9=E4=B8=BAInteger?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=20=E4=BF=AE=E6=94=B9=20=E4=BB=93=E5=BA=93?= =?UTF-8?q?=E5=87=BA=E5=BA=93=E5=8D=95=E5=92=8C=E4=BB=93=E5=BA=93=E5=85=A5?= =?UTF-8?q?=E5=BA=93=E5=8D=95=E5=AE=9E=E7=8E=B0=E5=B1=82=E6=96=B9=E6=B3=95?= =?UTF-8?q?,=E6=8A=8A=E5=85=A5=E5=BA=93=E6=95=B0=E7=AD=89=E5=BA=93?= =?UTF-8?q?=E5=AD=98=E6=9F=A5=E8=AF=A2=E7=9B=B8=E5=85=B3=E7=9A=84=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E7=94=B1BigDecimal=E6=94=B9=E4=B8=BAInteger=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi/system/domain/SysMakeorderBom.java | 70 ++++++----- .../impl/SysMakeorderBomServiceImpl.java | 2 +- .../domain/WarehouseInventoryInquiry.java | 118 ++++++++++++------ .../WarehouseInventoryReportDamage.java | 28 ++--- .../WarehouseInventoryReportDamageChild.java | 16 +-- ...houseInventoryReportDamageServiceImpl.java | 22 ++-- .../impl/WarehouseOutOrderServiceImpl.java | 10 +- .../WarehouseStorageOrderServiceImpl.java | 18 +-- .../WarehouseInventoryInquiryMapper.xml | 18 ++- 9 files changed, 182 insertions(+), 120 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/domain/SysMakeorderBom.java b/ruoyi-admin/src/main/java/com/ruoyi/system/domain/SysMakeorderBom.java index de8e5941..df1e61b3 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/domain/SysMakeorderBom.java +++ b/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; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysMakeorderBomServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysMakeorderBomServiceImpl.java index eccf8f69..000282e5 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysMakeorderBomServiceImpl.java +++ b/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()); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/domain/WarehouseInventoryInquiry.java b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/domain/WarehouseInventoryInquiry.java index 15b08207..d7b2b02d 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/domain/WarehouseInventoryInquiry.java +++ b/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,61 +212,89 @@ 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 setMaterialUseStatus(String materialUseStatus) + + 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()) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/domain/WarehouseInventoryReportDamage.java b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/domain/WarehouseInventoryReportDamage.java index 9742b786..56af7099 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/domain/WarehouseInventoryReportDamage.java +++ b/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,25 +198,25 @@ 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 setWarehouseCode(String warehouseCode) + + public void setNumTotal(Integer numTotal) { + this.numTotal = numTotal; + } + + public void setWarehouseCode(String warehouseCode) { this.warehouseCode = warehouseCode; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/domain/WarehouseInventoryReportDamageChild.java b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/domain/WarehouseInventoryReportDamageChild.java index 81bea8e1..f579c2e8 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/domain/WarehouseInventoryReportDamageChild.java +++ b/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,16 +189,16 @@ 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 setScrapType(String scrapType) + + public void setActualScrapQuantity(Integer actualScrapQuantity) { + this.actualScrapQuantity = actualScrapQuantity; + } + + public void setScrapType(String scrapType) { this.scrapType = scrapType; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseInventoryReportDamageServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseInventoryReportDamageServiceImpl.java index 92c41a3b..6e8966d1 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseInventoryReportDamageServiceImpl.java +++ b/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){ @@ -242,12 +242,12 @@ public class WarehouseInventoryReportDamageServiceImpl implements IWarehouseInve 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); @@ -264,7 +264,7 @@ public class WarehouseInventoryReportDamageServiceImpl implements IWarehouseInve // inquiryDetail.setMaterialUnit(damageChild.getMaterialUnit()); // inquiryDetail.setMaterialType(damageChild.getMaterialType()); inquiryDetail.setInventoryIncreaseDecrease("0"); - BigDecimal decreaseNum = damageChild.getActualScrapQuantity(); + Integer decreaseNum = damageChild.getActualScrapQuantity(); // inquiryDetail.setAvailableStockNum(decreaseNum); inquiryDetail.setInventoryHistoricalTime(DateUtils.getNowDate()); inquiryDetail.setCreateBy(ShiroUtils.getLoginName()); @@ -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()); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseOutOrderServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseOutOrderServiceImpl.java index c7969ed7..633d0bb2 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseOutOrderServiceImpl.java +++ b/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()); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseStorageOrderServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseStorageOrderServiceImpl.java index 6b1ac73f..440a6a1a 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseStorageOrderServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseStorageOrderServiceImpl.java @@ -736,11 +736,11 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS } //查询该物料报损数,更新库存查询报损数 List 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(scrapSum); + Integer scrapNum = damageChild.getActualScrapQuantity(); + scrapSum += scrapSum; } } // 存在库存查询记录,更新可用库存数 @@ -748,14 +748,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()); @@ -771,7 +771,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); diff --git a/ruoyi-admin/src/main/resources/mapper/warehouse/WarehouseInventoryInquiryMapper.xml b/ruoyi-admin/src/main/resources/mapper/warehouse/WarehouseInventoryInquiryMapper.xml index d2c6b79f..02da5d15 100644 --- a/ruoyi-admin/src/main/resources/mapper/warehouse/WarehouseInventoryInquiryMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/warehouse/WarehouseInventoryInquiryMapper.xml @@ -18,6 +18,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + @@ -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" material_specification, warehouse_dept, 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, @@ -108,6 +116,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{materialSpecification}, #{warehouseDept}, #{historicalTotal}, + #{sharedAvailableStockNum}, + #{lockStockNum}, + #{fixedAvailableStockNum}, + #{stockLossesNum}, #{availableStockNum}, #{attributionAvailableStockNum}, #{noattributionAvailableStockNum}, @@ -137,6 +149,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" material_specification = #{materialSpecification}, warehouse_dept = #{warehouseDept}, historical_total = #{historicalTotal}, + shared_available_stock_num = #{sharedAvailableStockNum}, + lock_stock_num = #{lockStockNum}, + fixed_available_stock_num = #{fixedAvailableStockNum}, + stock_losses_num = #{stockLossesNum}, available_stock_num = #{availableStockNum}, attribution_available_stock_num = #{attributionAvailableStockNum}, noattribution_available_stock_num = #{noattributionAvailableStockNum},