فهرست منبع

导出文件,行数上线修改,判断甲供材信息情况,费用检查情况,添加额外erp物料情况,甲供材读取条件变更,施工费重新计算

[user3] 4 سال پیش
والد
کامیت
2b687d676c
22فایلهای تغییر یافته به همراه1288 افزوده شده و 436 حذف شده
  1. 9 0
      src/main/java/com/jeeplus/modules/sg/financial/erpcredit/entity/ErpAccount.java
  2. 9 0
      src/main/java/com/jeeplus/modules/sg/financial/erpcredit/entity/ErpCreditEquipment.java
  3. 9 0
      src/main/java/com/jeeplus/modules/sg/financial/erpcredit/entity/ErpCreditMaterial.java
  4. 166 9
      src/main/java/com/jeeplus/modules/sg/financial/erpcredit/util/ErpInfo.java
  5. 15 0
      src/main/java/com/jeeplus/modules/sg/financial/settlement/mapper/CostCheckMapper.java
  6. 36 2
      src/main/java/com/jeeplus/modules/sg/financial/settlement/mapper/DonorMaterialMapper.java
  7. 6 0
      src/main/java/com/jeeplus/modules/sg/financial/settlement/mapper/ProjectBudgetMapper.java
  8. 27 1
      src/main/java/com/jeeplus/modules/sg/financial/settlement/mapper/xml/CostCheckMapper.xml
  9. 25 2
      src/main/java/com/jeeplus/modules/sg/financial/settlement/mapper/xml/DataMaintenanceMapper.xml
  10. 64 1
      src/main/java/com/jeeplus/modules/sg/financial/settlement/mapper/xml/DonorMaterialMapper.xml
  11. 7 0
      src/main/java/com/jeeplus/modules/sg/financial/settlement/mapper/xml/ProjectBudgetMapper.xml
  12. 108 0
      src/main/java/com/jeeplus/modules/sg/financial/settlement/service/CostCheckService.java
  13. 71 6
      src/main/java/com/jeeplus/modules/sg/financial/settlement/service/DonorMaterialService.java
  14. 15 1
      src/main/java/com/jeeplus/modules/sg/financial/settlement/service/ProjectBudgetService.java
  15. 3 1
      src/main/java/com/jeeplus/modules/sg/financial/settlement/web/CostCheckController.java
  16. 684 405
      src/main/java/com/jeeplus/modules/sg/financial/settlement/web/ProjectBudgetController.java
  17. 1 1
      src/main/resources/freemarker/costCheck.ftl
  18. 3 1
      src/main/resources/freemarker/finance.ftl
  19. 1 1
      src/main/resources/freemarker/projectBudget.ftl
  20. 1 1
      src/main/resources/freemarker/reserveManagement.ftl
  21. 21 0
      src/main/webapp/webpage/modules/sg/financial/settlement/costCheckList.js
  22. 7 4
      src/main/webapp/webpage/modules/sg/financial/settlement/financeList.js

+ 9 - 0
src/main/java/com/jeeplus/modules/sg/financial/erpcredit/entity/ErpAccount.java

@@ -17,6 +17,7 @@ public class ErpAccount implements Serializable {
     private String subjectName;//科目名称
     private Double lineItemAmount;//行项目金额
     private String theNumber;//数量
+    private String materialCode;
     private String materialDetails;//物料描述
     private String unit;//单位
     private Double theInputTax;//进项税额
@@ -74,6 +75,14 @@ public class ErpAccount implements Serializable {
         this.theNumber = theNumber;
     }
 
+    public String getMaterialCode() {
+        return materialCode;
+    }
+
+    public void setMaterialCode(String materialCode) {
+        this.materialCode = materialCode;
+    }
+
     public String getMaterialDetails() {
         return materialDetails;
     }

+ 9 - 0
src/main/java/com/jeeplus/modules/sg/financial/erpcredit/entity/ErpCreditEquipment.java

@@ -11,6 +11,7 @@ public class ErpCreditEquipment extends DataEntity<ErpCreditEquipment> {//设备
     private String eqmTotalCapacity;//设备总容量
     private Double eqmBookedFee1;//设备入账金额
     private String eqmSupplierName;//供应商
+    private String eqmMaterialCode;//设备物料编码
     private ErpCredit erpCredit;//父类
 
     public ErpCreditEquipment(){
@@ -72,6 +73,14 @@ public class ErpCreditEquipment extends DataEntity<ErpCreditEquipment> {//设备
         this.eqmSupplierName = eqmSupplierName;
     }
 
+    public String getEqmMaterialCode() {
+        return eqmMaterialCode;
+    }
+
+    public void setEqmMaterialCode(String eqmMaterialCode) {
+        this.eqmMaterialCode = eqmMaterialCode;
+    }
+
     public ErpCredit getErpCredit() {
         return erpCredit;
     }

+ 9 - 0
src/main/java/com/jeeplus/modules/sg/financial/erpcredit/entity/ErpCreditMaterial.java

@@ -9,6 +9,7 @@ public class ErpCreditMaterial extends DataEntity<ErpCreditMaterial> {//材料
     private String mtlUnit;//设备单位
     private Double mtlNumbers;//设备台数
     private String mtlSupplierName;//供应商
+    private String eqmMaterialCode;//设备物料编码
     private ErpCredit erpCredit;//父类
 
     public ErpCreditMaterial(ErpCredit erpCredit) {
@@ -61,6 +62,14 @@ public class ErpCreditMaterial extends DataEntity<ErpCreditMaterial> {//材料
         this.mtlSupplierName = mtlSupplierName;
     }
 
+    public String getEqmMaterialCode() {
+        return eqmMaterialCode;
+    }
+
+    public void setEqmMaterialCode(String eqmMaterialCode) {
+        this.eqmMaterialCode = eqmMaterialCode;
+    }
+
     public ErpCredit getErpCredit() {
         return erpCredit;
     }

+ 166 - 9
src/main/java/com/jeeplus/modules/sg/financial/erpcredit/util/ErpInfo.java

@@ -4,6 +4,8 @@ import com.jeeplus.modules.sg.financial.erpcredit.entity.ErpAccount;
 import com.jeeplus.modules.sg.financial.erpcredit.entity.ErpCredit;
 import com.jeeplus.modules.sg.financial.erpcredit.entity.ErpCreditEquipment;
 import com.jeeplus.modules.sg.financial.erpcredit.entity.ErpCreditMaterial;
+import com.jeeplus.modules.sys.entity.DictValue;
+import com.jeeplus.modules.sys.utils.DictUtils;
 import groovy.util.IFileNameFinder;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.poi.ss.usermodel.Row;
@@ -103,13 +105,14 @@ public  class ErpInfo {
                 erpAccount.setProjectDefinitionCode(erpCode);
                 erpAccount.setProjectDefinitionDetails((String)importUtil.getCellValue(row,11));
                 erpAccount.setSubjectName((String)importUtil.getCellValue(row,13));
-                erpAccount.setLineItemAmount(Double.parseDouble((String) importUtil.getCellValue(row,15)));
-                erpAccount.setTheNumber((String)importUtil.getCellValue(row,16));
-                erpAccount.setMaterialDetails((String)importUtil.getCellValue(row,19));
-                erpAccount.setUnit((String)importUtil.getCellValue(row,20));
+                erpAccount.setLineItemAmount(Double.parseDouble((String) importUtil.getCellValue(row,19)));
+                erpAccount.setTheNumber((String)importUtil.getCellValue(row,20));
+                erpAccount.setMaterialCode((String)importUtil.getCellValue(row,22));
+                erpAccount.setMaterialDetails((String)importUtil.getCellValue(row,23));
+                erpAccount.setUnit((String)importUtil.getCellValue(row,24));
                 erpAccount.setWbsDetails((String)importUtil.getCellValue(row,9));
-                erpAccount.setTheInputTax(Double.parseDouble((String) importUtil.getCellValue(row,21)));
-                erpAccount.setSupplierName((String)importUtil.getCellValue(row,26));
+                erpAccount.setTheInputTax(Double.parseDouble((String) importUtil.getCellValue(row,25)));
+                erpAccount.setSupplierName((String)importUtil.getCellValue(row,30));
                 list.add(erpAccount);
             }
         }
@@ -125,11 +128,11 @@ public  class ErpInfo {
         Boolean flag = false;
         Row row = importUtil.getRow(0);
         String erpCode = (String) importUtil.getCellValue(row,10);
-        if (!erpCode.contains("编码")){
+        if (!erpCode.contains("项目定义编码")){
             flag = true;
         }
-        String lineItem = (String)importUtil.getCellValue(row,15);
-        if (!lineItem.contains("金额")){
+        String lineItem = (String)importUtil.getCellValue(row,11);
+        if (!lineItem.contains("项目定义描述")){
             flag = true;
         }
         return  flag;
@@ -192,6 +195,7 @@ public  class ErpInfo {
             ErpAccount erpAccount = list.get(i);
             String projectId = erpAccount.getProjectDefinitionCode();//项目定义号
             String materialDetail = erpAccount.getMaterialDetails();//物料描述
+            String materialCode = erpAccount.getMaterialCode();//物料编码
             String subjectName = erpAccount.getSubjectName();//科目名称
             String wbsDetail = erpAccount.getWbsDetails();//wbs描述
             Double lineItemAmount = erpAccount.getLineItemAmount();//行项目金额
@@ -295,6 +299,7 @@ public  class ErpInfo {
                         equipment.setErpCredit(erpCredit);
                         equipment.setEqmMaterialDetails1(materialDetail);//添加物料描述
                         equipment.setEqmUnit(unit);//添加的单位
+                        equipment.setEqmMaterialCode(materialCode);//添加物料编码
                         equipment.setEqmSupplierName(supplierName);//添加供应商
                         //截取总容量kVA前数字
                         if (materialDetail.toLowerCase().contains("kva")){
@@ -319,6 +324,7 @@ public  class ErpInfo {
                         material.setEqmMaterialDetails2(materialDetail);//添加物料描述
                         material.setMtlUnit(unit);//添加设备单位
                         material.setMtlSupplierName(supplierName);//添加供应商
+                        material.setEqmMaterialCode(materialCode);//添加物料编码
                         material.setErpCredit(erpCredit);
                         materialMap.put(materialDetail,material);
                     }
@@ -348,6 +354,157 @@ public  class ErpInfo {
         return creditList;
     }
 
+
+    public static List<ErpCredit> getCostErpList(List<ErpAccount> list){
+        //key为项目定义号
+        Map<String,ErpCredit> map = new HashMap<>();
+        for(int i=0;i<list.size();i++){
+            ErpAccount erpAccount = list.get(i);
+            String projectId = erpAccount.getProjectDefinitionCode();//项目定义号
+            String materialDetail = erpAccount.getMaterialDetails();//物料描述
+            String subjectName = erpAccount.getSubjectName();//科目名称
+            String wbsDetail = erpAccount.getWbsDetails();//wbs描述
+            String materialCode = erpAccount.getMaterialCode();//物料编码
+            Double lineItemAmount = erpAccount.getLineItemAmount();//行项目金额
+            Double inputTax = erpAccount.getTheInputTax();//进项税额
+            Double theNumber = null; //数量
+            if (!erpAccount.getTheNumber().isEmpty()){
+                theNumber= Double.parseDouble(erpAccount.getTheNumber());
+            }
+            String unit = erpAccount.getUnit();
+            String supplierName = erpAccount.getSupplierName();
+
+
+
+            ErpCredit erpCredit = map.get(projectId);
+            if(erpCredit == null){
+                erpCredit = new ErpCredit();
+                map.put(projectId,erpCredit);
+                erpCredit.setItemId(erpAccount.getProjectDefinitionCode());//添加项目定义编号
+                erpCredit.setItemName(erpAccount.getProjectDefinitionDetails());//项目名称
+            }
+
+            //成本项目施工费对应供应商
+            List<DictValue> supCost = DictUtils.getDictList("finance_cost_supervisor");
+            for (DictValue a :
+                    supCost) {
+                String label = a.getLabel();
+                if (supplierName.equals(label)) {
+                    erpCredit.setConsTotalFee(DoubleUtil.add(erpCredit.getConsTotalFee(),erpAccount.getLineItemAmount()));
+                }
+            }
+            //成本项目设计费对应供应商
+            List<DictValue> desCost = DictUtils.getDictList("finance_cost_design");
+            for (DictValue a :
+                    supCost) {
+                String label = a.getLabel();
+                if (supplierName.equals(label)) {
+                    erpCredit.setOtherDesignFee(DoubleUtil.add(erpCredit.getOtherDesignFee(),lineItemAmount));
+                }
+            }
+            //成本项目监理费对应供应商
+            List<DictValue> conCOst = DictUtils.getDictList("finance_cost_construction");
+            for (DictValue a :
+                    supCost) {
+                String label = a.getLabel();
+                if (supplierName.equals(label)) {
+                    erpCredit.setOtherSupervisorFee(DoubleUtil.add(erpCredit.getOtherSupervisorFee(),lineItemAmount));
+                }
+            }
+
+            //处理进项税额
+            erpCredit.setTheInputTax(DoubleUtil.add(erpCredit.getTheInputTax(),inputTax));
+
+            //实际投资、移交生产的资产总值,明细账判断条件:科目名称中包含“工程成本”
+            if (subjectName.contains("工程成本")){
+                erpCredit.setActualInvestment(DoubleUtil.add(erpCredit.getActualInvestment(),lineItemAmount));
+                erpCredit.setTransferAssets(DoubleUtil.add(erpCredit.getTransferAssets(),lineItemAmount));
+            }
+
+
+            if(materialDetail.isEmpty()){
+            }else{ //这里是物料描述不为空的情况
+                //            10Kv线路
+                if (materialDetail.contains(ErpInfo.CON_OICAC10)||materialDetail.contains(ErpInfo.CON_OICAC20)||
+                        materialDetail.contains(ErpInfo.CON_PRCAC10)||materialDetail.contains(ErpInfo.CON_PRCAC20)){
+                    erpCredit.setTenKvModel(materialDetail);
+                    erpCredit.setTenKvUnit(erpAccount.getUnit());//单位
+                    erpCredit.setSupplierName(erpAccount.getSupplierName());//公司
+                    erpCredit.setTenKvLineLength(DoubleUtil.add(erpCredit.getTenKvLength(),theNumber));//10kv长度
+                    erpCredit.setTenKvItsLine(DoubleUtil.add(erpCredit.getTenKvItsLine(),theNumber));//10kv长度 值一样
+                }
+
+                //400v线路
+                if (materialDetail.contains(ErpInfo.CON_OICAC1)||
+                        materialDetail.contains(ErpInfo.CON_PRCAC1)){
+                    erpCredit.setTenKvItesFhvFollow(DoubleUtil.add(erpCredit.getTenKvItesFhvFollow(),theNumber));
+                    //400v也计入 10kv的长度
+                    erpCredit.setTenKvLineLength(DoubleUtil.add(erpCredit.getTenKvLength(),theNumber));
+                    erpCredit.setTenKvItsLine(DoubleUtil.add(erpCredit.getTenKvItsLine(),theNumber));
+                }
+
+                //电缆管
+                if (materialDetail.contains(CON_CABLE)){
+                    erpCredit.setCableTube(materialDetail);
+                }
+
+                //处理设备和材料
+                //筛选物料描述包含(变压器、环网柜(无“”有“无”字样)、箱式变电站、高压开关柜)为设备, 其余为材料
+                if (materialDetail.contains(ErpInfo.CON_TSF)||materialDetail.contains(ErpInfo.CON_RNB)||
+                        materialDetail.contains(ErpInfo.CON_BST)||materialDetail.contains(ErpInfo.CON_HVS)){
+                    Map<String,ErpCreditEquipment> equipmentMap = erpCredit.getEquipmentMap();
+                    ErpCreditEquipment equipment = equipmentMap.get(materialDetail);
+                    if(equipment==null){
+                        equipment = new ErpCreditEquipment();
+                        equipment.setErpCredit(erpCredit);
+                        equipment.setEqmMaterialDetails1(materialDetail);//添加物料描述
+                        equipment.setEqmUnit(unit);//添加的单位
+                        equipment.setEqmMaterialCode(materialCode);//添加物料编码
+                        equipment.setEqmSupplierName(supplierName);//添加供应商
+                        //截取总容量kVA前数字
+                        if (materialDetail.toLowerCase().contains("kva")){
+                            String str[] =  materialDetail.split(",");
+                            for (int k = 0; k < str.length; k++) {
+                                if (str[k].toLowerCase().contains("kva")){
+                                    equipment.setEqmTotalCapacity(str[k].substring(0,str[k].toLowerCase().indexOf("kva")));//添加总容量
+                                    break;
+                                }
+                            }
+                        }
+                        equipmentMap.put(materialDetail,equipment);
+                    }
+                    equipment.setEqmNumbers(DoubleUtil.add(equipment.getEqmNumbers(),theNumber));//添加数量
+                    equipment.setEqmBookedFee1(DoubleUtil.add(equipment.getEqmBookedFee1(),lineItemAmount));//添加入账金额
+
+                }else{
+                    Map<String,ErpCreditMaterial> materialMap = erpCredit.getMaterialMap();
+                    ErpCreditMaterial material = materialMap.get(materialDetail);
+                    if(material==null){
+                        material = new ErpCreditMaterial();
+                        material.setEqmMaterialDetails2(materialDetail);//添加物料描述
+                        material.setMtlUnit(unit);//添加设备单位
+                        material.setMtlSupplierName(supplierName);//添加供应商
+                        material.setEqmMaterialCode(materialCode);//添加物料编码
+                        material.setErpCredit(erpCredit);
+                        materialMap.put(materialDetail,material);
+                    }
+                    material.setMtlNumbers(DoubleUtil.add(material.getMtlNumbers(),theNumber));
+                    material.setMtlBookedFee2(DoubleUtil.add(material.getMtlBookedFee2(),lineItemAmount));
+                }
+            }
+        }
+
+        //获取erpCredit列表 同时区分安装建筑费
+        List<ErpCredit> creditList = new ArrayList<>(map.values());
+        for(ErpCredit credit:creditList){
+            credit.setErpCreditChild1s(new ArrayList<>(credit.getEquipmentMap().values()));
+            credit.setErpCreditChild2s(new ArrayList<>(credit.getMaterialMap().values()));
+        }
+
+        return creditList;
+    }
+
+
     /**
      * 获取单独 唯一 的 数据集合(项目定义编号——其他费用合计)
      * @param list 读取表格获得的列表

+ 15 - 0
src/main/java/com/jeeplus/modules/sg/financial/settlement/mapper/CostCheckMapper.java

@@ -5,9 +5,11 @@ package com.jeeplus.modules.sg.financial.settlement.mapper;
 
 import com.jeeplus.core.persistence.BaseMapper;
 import com.jeeplus.core.persistence.annotation.MyBatisMapper;
+import com.jeeplus.modules.sg.financial.erpcredit.entity.ErpCredit;
 import com.jeeplus.modules.sg.financial.settlement.entity.CostCheck;
 import com.jeeplus.modules.sg.financial.settlement.entity.ProjectBudget;
 import org.apache.ibatis.annotations.Param;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 
@@ -72,4 +74,17 @@ public interface CostCheckMapper extends BaseMapper<CostCheck> {
      * @return 成功修改的行数
      * */
     int updateSup(CostCheck costCheck);
+
+    /**
+     * 修改应付金额
+     * @param erpCredits 导入修改数据
+     * */
+    void updatePaid(@Param("list") List<ErpCredit> erpCredits);
+
+    /**
+     * 通过项目定义号查找对应的费用检查信息
+     * @return 填写过后的费用检查信息
+     * @param projectId 项目定义号
+     * */
+    CostCheck findALlPaid(String projectId);
 }

+ 36 - 2
src/main/java/com/jeeplus/modules/sg/financial/settlement/mapper/DonorMaterialMapper.java

@@ -5,10 +5,9 @@ package com.jeeplus.modules.sg.financial.settlement.mapper;
 
 import com.jeeplus.core.persistence.BaseMapper;
 import com.jeeplus.core.persistence.annotation.MyBatisMapper;
-import com.jeeplus.modules.sg.financial.settlement.entity.CostCheck;
+import com.jeeplus.modules.sg.financial.erpcredit.entity.ErpCreditMaterial;
 import com.jeeplus.modules.sg.financial.settlement.entity.DonorMaterial;
 import com.jeeplus.modules.sg.financial.settlement.entity.ProjectBudget;
-import com.jeeplus.modules.sg.managementcenter.materialproject.entity.MaterialProject;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -67,9 +66,44 @@ public interface DonorMaterialMapper extends BaseMapper<DonorMaterial> {
 
     /**
      * 查找甲供物资超欠供说明
+     * @param donorMaterial 查询参数
      * @return 甲供超欠供说明
      */
     List<DonorMaterial> findALLRemarks(DonorMaterial donorMaterial);
 
+    /**
+     * 通过项目定义号查询项目的甲供材信息
+     * @param projectId 项目定义号
+     * @return 甲供材信息
+     */
+    List<DonorMaterial> findById(String projectId);
+
 
+    /**
+     * 更新项目的erp数量
+     * @param projectId 项目定义号
+     * @param list 物料信息list
+     * */
+    void updateErp(@Param("list")List<ErpCreditMaterial> list,@Param("projectId")String projectId);
+
+    /**
+     * 通过项目定义号和物料描述查询物料信息是否存在
+     * @param projectId  项目定义号
+     * @param describe 物料描述
+     * @return 判断项目是否存在
+     */
+    DonorMaterial findDonor(@Param("projectId") String projectId,@Param("describe") String describe);
+
+    /**
+     * 更新项目的erp数量
+     * @param projectId 项目定义号
+     * @param material 物料信息
+     * */
+    void updateErpOne(@Param("material")ErpCreditMaterial material,@Param("projectId")String projectId);
+
+    /**
+     * 更新项目的erp数量
+     * @param material 物料信息
+     * */
+    void insertErpOne(ErpCreditMaterial material);
 }

+ 6 - 0
src/main/java/com/jeeplus/modules/sg/financial/settlement/mapper/ProjectBudgetMapper.java

@@ -45,4 +45,10 @@ public interface ProjectBudgetMapper extends BaseMapper<ProjectBudget> {
 	 * @return 财务检查数据
 	 */
 	List<ProjectBudget> findFinancialInspection(ProjectBudget projectBudget);
+
+	/**
+	 * 修改项目检查状态
+	 * */
+	void updateCheck(@Param("projectId") String projectId, @Param("check") String check, @Param("number") String number);
+
 }

+ 27 - 1
src/main/java/com/jeeplus/modules/sg/financial/settlement/mapper/xml/CostCheckMapper.xml

@@ -209,7 +209,8 @@
 		where project_id = #{projectId}
 	</update>
 
-	<!-- 根据实体名称和字段名称和字段值获取唯一记录 -->
+
+    <!-- 根据实体名称和字段名称和字段值获取唯一记录 -->
 	<select id="findUniqueByProperty" resultType="TestNote" statementType="STATEMENT">
 		select * FROM finance_project_cost_check  where ${propertyName} = '${value}'
 	</select>
@@ -219,4 +220,29 @@
 		from finance_project_cost_check;
 	</select>
 
+	<update id="updatePaid">
+		<foreach collection="list" item="item" index="index" separator=";">
+			update finance_project_cost_check set
+			construction_amount_paid = #{item.consTotalFee},
+			design_amount_paid = #{item.otherDesignFee},
+			supervisor_amount_paid = #{item.otherSupervisorFee}
+			where project_id = #{item.itemId}
+		</foreach>
+	</update>
+
+	<select id="findALlPaid" resultType="com.jeeplus.modules.sg.financial.settlement.entity.CostCheck">
+		select
+		project_id,
+	   construction_amount_due,
+	   construction_amount_paid,
+	   construction_underpayment,
+	   design_amount_due,
+	   design_amount_paid,
+	   design_underpayment,
+	   supervisor_amount_due,
+	   supervisor_amount_paid,
+	   supervisor_underpayment
+		from finance_project_cost_check
+		where project_id = #{projectId}
+	</select>
 </mapper>

+ 25 - 2
src/main/java/com/jeeplus/modules/sg/financial/settlement/mapper/xml/DataMaintenanceMapper.xml

@@ -251,8 +251,31 @@
 
 	<select id="findListMain" parameterType="java.util.List" resultType="MaintainData">
 		select
-		<include refid="infoColumns"/>
-		FROM js_maintain_data a
+		a.create_by AS "createBy.id",
+		a.create_date AS "createDate",
+		a.update_by AS "updateBy.id",
+		a.update_date AS "updateDate",
+		a.remarks AS "remarks",
+		a.del_flag AS "delFlag",
+		a.project_id AS "projectId",
+		a.design_unit AS "designUnits",
+		a.construction_unit AS "constructionUnits",
+		a.building_address AS "address",
+		a.building_property AS "property",
+		a.total_investment AS "investment",
+		a.start_time AS "startDate",
+		a.stop_time AS "endDate",
+		a.approval_number AS "approvalNumber",
+		a.construction_cost AS "buildingFee",
+		a.installation_cost AS "installFee",
+		a.equipment_cost AS "equipmentFee",
+		a.material_cost AS "materialFee",
+		a.design_cost AS "designFee",
+		a.supervisor_cost AS "supervisionFee",
+		a.preliminary_work_cost AS "preliminaryWorkFee",
+		a.compensation_cost AS "damages",
+		a.administration_cost AS "managementFee"
+		FROM finance_project_budget a
 		WHERE a.del_flag = '0'
 		and a.project_id in
 		<if test="list != null">

+ 64 - 1
src/main/java/com/jeeplus/modules/sg/financial/settlement/mapper/xml/DonorMaterialMapper.xml

@@ -142,7 +142,6 @@
 		</foreach>
 	</insert>
 
-
 	<update id="update">
 		UPDATE finance_project_donor_material SET
 			project_id = #{projectId}
@@ -232,4 +231,68 @@
 			</if>
 		</where>
 	</select>
+
+	<select id="findById" resultType="com.jeeplus.modules.sg.financial.settlement.entity.DonorMaterial">
+		select project_id,
+			   material_code,
+			   material_name,
+			   examined_num,
+			   erp_num,
+		       remarks
+		from finance_project_donor_material
+		where project_id = #{projectId}
+	</select>
+
+	<update id="updateErp">
+		<foreach collection="list" item="item" index="index">
+			update finance_project_donor_material set
+			erp_num = #{item.mtlNumbers}
+			where project_id = #{projectId} and materail_describe = #{item.eqmMaterialDetails2};
+		</foreach>
+	</update>
+
+	<select id="findDonor" resultType="com.jeeplus.modules.sg.financial.settlement.entity.DonorMaterial">
+		select id from finance_project_donor_material
+		where materail_describe = #{describe}
+		and project_id = #{projectId}
+	</select>
+
+	<update id="updateErpOne">
+			update finance_project_donor_material set
+			erp_num = #{material.mtlNumbers}
+			where project_id = #{projectId} and materail_describe = #{material.eqmMaterialDetails2};
+	</update>
+
+	<insert id="insertErpOne">
+		INSERT INTO finance_project_donor_material(
+			id,
+			create_by,
+			create_date,
+			update_by,
+			update_date,
+			remarks,
+			del_flag,
+			project_name,
+			project_id,
+			materail_describe,
+			unit,
+			examined_num,
+			erp_num
+		) VALUES
+		(
+			#{id},
+			#{createBy.id},
+			#{createDate},
+			#{updateBy.id},
+			#{updateDate},
+			#{remarks},
+			#{delFlag},
+			#{erpCredit.itemName},
+			#{erpCredit.itemId},
+			#{eqmMaterialDetails2},
+			#{mtlUnit},
+			#{examinedNum},
+			#{mtlNumbers}
+		)
+	</insert>
 </mapper>

+ 7 - 0
src/main/java/com/jeeplus/modules/sg/financial/settlement/mapper/xml/ProjectBudgetMapper.xml

@@ -314,6 +314,7 @@
 
 	</update>
 
+
 	<!-- 根据实体名称和字段名称和字段值获取唯一记录 -->
 	<select id="findUniqueByProperty" resultType="TestNote" statementType="STATEMENT">
 		select * FROM finance_project_budget  where ${propertyName} = '${value}'
@@ -361,4 +362,10 @@
 			</if>
 		</where>
 	</select>
+
+	<update id="updateCheck">
+		update finance_project_budget
+		set ${check} = #{number}
+		where project_id = #{projectId}
+	</update>
 </mapper>

+ 108 - 0
src/main/java/com/jeeplus/modules/sg/financial/settlement/service/CostCheckService.java

@@ -5,6 +5,7 @@ package com.jeeplus.modules.sg.financial.settlement.service;
 
 import com.jeeplus.core.persistence.Page;
 import com.jeeplus.core.service.CrudService;
+import com.jeeplus.modules.sg.financial.erpcredit.entity.ErpCredit;
 import com.jeeplus.modules.sg.financial.settlement.entity.CostCheck;
 import com.jeeplus.modules.sg.financial.settlement.entity.ProjectBudget;
 import com.jeeplus.modules.sg.financial.settlement.mapper.CostCheckMapper;
@@ -38,6 +39,9 @@ public class CostCheckService extends CrudService<CostCheckMapper, CostCheck> {
 	@Autowired
 	private CostCheckMapper costCheckMapper;
 
+	@Autowired
+	private ProjectBudgetService projectBudgetService;
+
 	public static Map<String, CellStyle> styles;
 
 	@Override
@@ -167,4 +171,108 @@ public class CostCheckService extends CrudService<CostCheckMapper, CostCheck> {
 	public void updateSup(CostCheck costCheck) {
 		costCheckMapper.updateSup(costCheck);
 	}
+
+	@Transactional(readOnly = false)
+	public Map<String, List<String>> verifyProjectsCost(List<ErpCredit> erpCredits) {
+		HashMap hashMap = new HashMap();
+		costCheckMapper.updatePaid(erpCredits);
+		List<String> notExitList = new ArrayList<>();
+		List<String> notPassList = new ArrayList<>();
+		for (ErpCredit e :
+				erpCredits) {
+			//项目定义号
+			String projectId = e.getItemId();
+			CostCheck aLlPaid = costCheckMapper.findALlPaid(projectId);
+			if (null != aLlPaid) {
+				//施工费应付金额
+				Double constructionAmountDue = aLlPaid.getConstructionAmountDue();
+				//设计费应付金额
+				Double designAmountDue = aLlPaid.getDesignAmountDue();
+				//监理费应付金额
+				Double supervisorAmountDue = aLlPaid.getSupervisorAmountDue();
+
+				//施工费实付金额
+				Double constructionAmountPaid = aLlPaid.getConstructionAmountPaid();
+				//设计费实付金额
+				Double designAmountPaid = aLlPaid.getDesignAmountPaid();
+				//监理费实付金额
+				Double supervisorAmountPaid = aLlPaid.getSupervisorAmountPaid();
+				//施工费允许少付
+				String constructionUnderPayment = aLlPaid.getConstructionUnderPayment();
+				//设计费允许少付
+				String designUnderPayment = aLlPaid.getDesignUnderPayment();
+				//监理费允许少付
+				String supervisorUnderPayment = aLlPaid.getSupervisorUnderPayment();
+				//判断是否缺少各项应付金额
+				if (null == constructionAmountDue
+						|| null == designAmountDue
+						|| null == supervisorAmountDue) {
+					notExitList.add(projectId);
+					if (null == constructionAmountDue) {
+						projectBudgetService.updateCheck(projectId,"construction_cost_check","2");
+					}
+					if (null == designAmountDue) {
+						projectBudgetService.updateCheck(projectId,"design_cost_check","2");
+					}
+					if (null == supervisorAmountDue) {
+						projectBudgetService.updateCheck(projectId,"supervisor_cost_check","2");
+					}
+					break;
+				}
+				int con = constructionAmountDue.compareTo(constructionAmountPaid);
+				int des = designAmountDue.compareTo(designAmountPaid);
+				int sup = supervisorAmountDue.compareTo(supervisorAmountPaid);
+				//判断施工费是否相等
+				if (con != 0) {
+					//不相等,判断是否运行少付
+					if ("0".equals(constructionUnderPayment)) {
+						notPassList.add(projectId);
+						projectBudgetService.updateCheck(projectId,"construction_cost_check","2");
+					}else {
+						projectBudgetService.updateCheck(projectId,"construction_cost_check","1");
+					}
+				}else{
+					//验证通过
+					projectBudgetService.updateCheck(projectId,"construction_cost_check","1");
+				}
+
+				//判断设计费是否相等
+				if (des != 0) {
+					//不相等,判断是否运行少付
+					if ("0".equals(designUnderPayment)) {
+						notPassList.add(projectId);
+						projectBudgetService.updateCheck(projectId,"design_cost_check","2");
+					}else {
+						projectBudgetService.updateCheck(projectId,"design_cost_check","1");
+					}
+				}else {
+					//验证通过
+					projectBudgetService.updateCheck(projectId,"design_cost_check","1");
+				}
+
+				//判断监理费是否相等
+				if (sup != 0) {
+					//不相等,判断是否运行少付
+					if ("0".equals(supervisorUnderPayment)) {
+						notPassList.add(projectId);
+						projectBudgetService.updateCheck(projectId,"supervisor_cost_check","2");
+					}else {
+						projectBudgetService.updateCheck(projectId,"supervisor_cost_check","1");
+					}
+				}else{
+					//验证通过
+					projectBudgetService.updateCheck(projectId,"supervisor_cost_check","1");
+				}
+			} else {
+				notExitList.add(projectId);
+				projectBudgetService.updateCheck(projectId,"construction_cost_check","2");
+				projectBudgetService.updateCheck(projectId,"design_cost_check","2");
+				projectBudgetService.updateCheck(projectId,"supervisor_cost_check","2");
+				//验证不通过
+			}
+		}
+		hashMap.put("notExit", notExitList);
+		hashMap.put("notPass", notPassList);
+		return hashMap;
+	}
 }

+ 71 - 6
src/main/java/com/jeeplus/modules/sg/financial/settlement/service/DonorMaterialService.java

@@ -7,6 +7,7 @@ import com.jeeplus.common.utils.StringUtils;
 import com.jeeplus.common.utils.excel.ImportExcel;
 import com.jeeplus.core.persistence.Page;
 import com.jeeplus.core.service.CrudService;
+import com.jeeplus.modules.sg.financial.erpcredit.entity.ErpCreditMaterial;
 import com.jeeplus.modules.sg.financial.settlement.entity.CostCheck;
 import com.jeeplus.modules.sg.financial.settlement.entity.DonorMaterial;
 import com.jeeplus.modules.sg.financial.settlement.entity.ProjectBudget;
@@ -142,20 +143,26 @@ public class DonorMaterialService extends CrudService<DonorMaterialMapper, Donor
             if (null != row) {
                 String cellOne = this.getCellValue(row.getCell(1));
                 String cellTwo = this.getCellValue(row.getCell(2));
-                if (!"".equals(cellOne) && !"".equals(cellTwo)) {
+                if (!"".equals(cellOne) && !"".equals(cellTwo) && !"无".equals(cellTwo)) {
                     if ("0".equals(cellOne)) {
                         cellOne = "";
                     }
+                    if ("0".equals(cellTwo)) {
+                        cellTwo = "";
+                    }
                     donorMaterial.setProjectName(projectName);
                     donorMaterial.setProjectId(projectId);
                     donorMaterial.setMaterialType(cellOne);
                     donorMaterial.setMaterialCode(cellTwo);
                     String cellThree = this.getCellValue(row.getCell(3));
+                    if ("0".equals(cellThree)) {
+                        cellThree = "";
+                    }
                     String cellFour = this.getCellValue(row.getCell(4));
                     String cellFive = this.getCellValue(row.getCell(5));
                     String cellSix = this.getCellValue(row.getCell(13));
-                    if (null == cellSix) {
-                        aDouble = 0.0;
+                    if (null == cellSix || "0".equals(cellSix) || "0.0".equals(cellSix)) {
+                        continue;
                     } else {
                         aDouble = getDouble(cellSix);
                     }
@@ -267,7 +274,65 @@ public class DonorMaterialService extends CrudService<DonorMaterialMapper, Donor
     }
 
     /*
-    * FINANCIAL INSPECTION
-    * financialInspection
-    * */
+     * FINANCIAL INSPECTION
+     * financialInspection
+     * */
+    /**/
+    @Transactional(readOnly = false)
+    public int verifyProjectMaterial(List<ErpCreditMaterial> list, String projectId) {
+        //返回值
+        // 0:无甲供材数据
+        //1:领料完成
+        //2:领料未完成
+        int a = 0;
+        List<DonorMaterial> byId = donorMaterialMapper.findById(projectId);
+//        donorMaterialMapper.updateErp(list, projectId);
+        //通过项目定义号查询该项目是否存在甲供材信息
+        if (null != byId && byId.size() > 0) {
+            //通过项目定义号,物料描述更新项目的erp数量
+            for (ErpCreditMaterial material : list) {
+                String eqmMaterialDetails2 = material.getEqmMaterialDetails2();
+                //通过设备物料描述,项目定义号,查询物料是否存在,存在更新,不存在插入
+                DonorMaterial donor = donorMaterialMapper.findDonor(projectId, eqmMaterialDetails2);
+                if (null == donor) {
+                    //插入
+                    material.preInsert();
+                    donorMaterialMapper.insertErpOne(material);
+                } else {
+                    //更新
+                    donorMaterialMapper.updateErpOne(material, projectId);
+                }
+            }
+            for (DonorMaterial p :
+                    byId) {
+                if (a == 2) {
+                    break;
+                }
+                String remarks = p.getRemarks();
+                Double erpNum1 = p.getErpNum();
+                Double examinedNum = p.getExaminedNum();
+                if (null == erpNum1) {
+                    erpNum1 = 0.0;
+                }
+                if (null == examinedNum) {
+                    examinedNum = 0.0;
+                }
+                BigDecimal erpNum = new BigDecimal(erpNum1);
+                BigDecimal exaNum = new BigDecimal(examinedNum);
+                erpNum.setScale(2, BigDecimal.ROUND_HALF_UP);
+                exaNum.setScale(2, BigDecimal.ROUND_HALF_UP);
+                int i = erpNum.compareTo(exaNum);
+                if (i != 0) {
+                    if (null != remarks && !"".equals(remarks)) {
+                        a = 1;
+                    } else {
+                        a = 2;
+                    }
+                } else {
+                    a = 1;
+                }
+            }
+        }
+        return a;
+    }
 }

+ 15 - 1
src/main/java/com/jeeplus/modules/sg/financial/settlement/service/ProjectBudgetService.java

@@ -6,6 +6,8 @@ package com.jeeplus.modules.sg.financial.settlement.service;
 import com.jeeplus.common.utils.DateUtils;
 import com.jeeplus.core.persistence.Page;
 import com.jeeplus.core.service.CrudService;
+import com.jeeplus.modules.sg.financial.erpcredit.entity.ErpCredit;
+import com.jeeplus.modules.sg.financial.erpcredit.entity.ErpCreditMaterial;
 import com.jeeplus.modules.sg.financial.settlement.entity.MaintainData;
 import com.jeeplus.modules.sg.financial.settlement.entity.ProjectBudget;
 import com.jeeplus.modules.sg.financial.settlement.mapper.DataMaintenanceMapper;
@@ -377,5 +379,17 @@ public class ProjectBudgetService extends CrudService<ProjectBudgetMapper, Proje
 
 		return styles;
 	}
-	
+
+	public List<ProjectBudget> findFinancialInspection(ProjectBudget projectBudget) {
+		return projectBudgetMapper.findFinancialInspection(projectBudget);
+	}
+
+
+	/**
+	 * 修改项目检查状态
+	 */
+	@Transactional(readOnly = false)
+	public void updateCheck(String projectId, String check, String number) {
+		projectBudgetMapper.updateCheck(projectId, check, number);
+	}
 }

+ 3 - 1
src/main/java/com/jeeplus/modules/sg/financial/settlement/web/CostCheckController.java

@@ -241,6 +241,8 @@ public class CostCheckController extends BaseController {
 		int lastRow = importExcel.getLastDataRowNum();
 		List<CostCheck> list = new ArrayList<>();
 		CostCheck costCheck;
+		String construction_fee_rates = DictUtils.getDictLabel("1.09", "construction_fee_rates", "");
+		BigDecimal rates = new BigDecimal(construction_fee_rates);
 		for(int i=2; i<lastRow;i++){
 			costCheck = new CostCheck();
 			Row row = importExcel.getRow(i);
@@ -249,7 +251,7 @@ public class CostCheckController extends BaseController {
 				costCheck.setProjectId(projectId);
 				double aDouble = getDouble(importExcel, row, 34);
 				BigDecimal bigDecimal = new BigDecimal(aDouble);
-				BigDecimal setScale = bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP);
+				BigDecimal setScale = bigDecimal.divide(rates, 2, BigDecimal.ROUND_HALF_UP);
 				costCheck.setConstructionAmountDue(Double.valueOf(setScale.toString()));
 				list.add(costCheck);
 			}

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 684 - 405
src/main/java/com/jeeplus/modules/sg/financial/settlement/web/ProjectBudgetController.java


+ 1 - 1
src/main/resources/freemarker/costCheck.ftl

@@ -96,7 +96,7 @@
   </Style>
  </Styles>
  <Worksheet ss:Name="费用检查">
-  <Table ss:ExpandedColumnCount="14" ss:ExpandedRowCount="3" x:FullColumns="1"
+  <Table ss:ExpandedColumnCount="14"  x:FullColumns="1"
    x:FullRows="1" ss:StyleID="s68" ss:DefaultColumnWidth="54"
    ss:DefaultRowHeight="13.5">
    <Column ss:StyleID="s68" ss:AutoFitWidth="0" ss:Width="52.5"/>

+ 3 - 1
src/main/resources/freemarker/finance.ftl

@@ -105,7 +105,7 @@
   </Style>
  </Styles>
  <Worksheet ss:Name="配网项目竣工后财务检查">
-  <Table ss:ExpandedColumnCount="8" ss:ExpandedRowCount="3" x:FullColumns="1"
+  <Table ss:ExpandedColumnCount="8"  x:FullColumns="1"
    x:FullRows="1" ss:StyleID="s65" ss:DefaultColumnWidth="54"
    ss:DefaultRowHeight="13.5">
    <Column ss:StyleID="s64" ss:AutoFitWidth="0" ss:Width="57"/>
@@ -127,6 +127,7 @@
     <Cell ss:StyleID="s66"><Data ss:Type="String">设计费</Data></Cell>
     <Cell ss:StyleID="s66"><Data ss:Type="String">监理费</Data></Cell>
    </Row>
+   <#list list as item>
    <Row ss:Height="40.5">
     <Cell ss:StyleID="s66"><Data ss:Type="String">${item.projectName!""}</Data></Cell>
     <Cell ss:StyleID="s66"><Data ss:Type="String">${item.projectId!""}</Data></Cell>
@@ -137,6 +138,7 @@
     <Cell ss:StyleID="s70"><Data ss:Type="String">${item.designCostCheck!""}</Data></Cell>
     <Cell ss:StyleID="s70"><Data ss:Type="String">${item.supervisorCostCheck!""}</Data></Cell>
    </Row>
+   </#list>
   </Table>
   <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
    <PageSetup>

+ 1 - 1
src/main/resources/freemarker/projectBudget.ftl

@@ -215,7 +215,7 @@
    <NamedRange ss:Name="_FilterDatabase" ss:RefersTo="=概预算基本信息管理!R3:R4"
     ss:Hidden="1"/>
   </Names>
-  <Table ss:ExpandedColumnCount="29" ss:ExpandedRowCount="28" x:FullColumns="1"
+  <Table ss:ExpandedColumnCount="29" x:FullColumns="1"
    x:FullRows="1" ss:StyleID="s66" ss:DefaultColumnWidth="54"
    ss:DefaultRowHeight="19.875">
    <Column ss:StyleID="s66" ss:AutoFitWidth="0" ss:Width="349.5"/>

+ 1 - 1
src/main/resources/freemarker/reserveManagement.ftl

@@ -1372,7 +1372,7 @@
 		<Names>
 			<NamedRange ss:Name="_FilterDatabase" ss:RefersTo="='2021储备清单'!R4C1:R5C250" ss:Hidden="1"/>
 		</Names>
-		<Table ss:ExpandedColumnCount="72" ss:ExpandedRowCount="5" x:FullColumns="1" x:FullRows="1" ss:StyleID="s79" ss:DefaultColumnWidth="48.6" ss:DefaultRowHeight="28.5">
+		<Table ss:ExpandedColumnCount="72"  x:FullColumns="1" x:FullRows="1" ss:StyleID="s79" ss:DefaultColumnWidth="48.6" ss:DefaultRowHeight="28.5">
 			<Column ss:Index="1" ss:StyleID="s77" ss:AutoFitWidth="0" ss:Width="18.7"/>
 			<Column ss:Index="2" ss:StyleID="s78" ss:AutoFitWidth="0" ss:Width="33.85"/>
 			<Column ss:StyleID="s77" ss:AutoFitWidth="0" ss:Width="35.65"/>

+ 21 - 0
src/main/webapp/webpage/modules/sg/financial/settlement/costCheckList.js

@@ -126,6 +126,9 @@
             },
             onClickRow: function (row, $el) {
             },
+            onLoadSuccess: function () {  //加载成功时执行
+                getTdValue();
+            },
             onShowSearch: function () {
                 $("#search-collapse").slideToggle();
             },
@@ -259,6 +262,24 @@
             $('#dataTable').bootstrapTable("toggleView");
         }
 
+        //加载完成后,对第二次是否完成领退料判断变并变更行样式
+        function getTdValue() {
+            var tableId = document.getElementById("dataTable");
+            if (tableId.rows.length>2){
+                for(var i = 1;i < tableId.rows.length;i++) {
+                    if(tableId.rows[i].cells[4].innerHTML!="-" && tableId.rows[i].cells[4].innerHTML!="0"){
+                        tableId.rows[i].cells[4].setAttribute("style","color: red;");
+                    }
+                    if(tableId.rows[i].cells[8].innerHTML!="-" && tableId.rows[i].cells[8].innerHTML!="0"){
+                        tableId.rows[i].cells[8].setAttribute("style","color: red;");
+                    }
+                    if(tableId.rows[i].cells[12].innerHTML!="-" && tableId.rows[i].cells[12].innerHTML!="0"){
+                        tableId.rows[i].cells[12].setAttribute("style","color: red;");
+                    }
+                }
+            }
+        }
+
         $('#dataTable').on('check.bs.table uncheck.bs.table load-success.bs.table ' +
             'check-all.bs.table uncheck-all.bs.table', function () {
             $('#remove').prop('disabled', !$('#dataTable').bootstrapTable('getSelections').length);

+ 7 - 4
src/main/webapp/webpage/modules/sg/financial/settlement/financeList.js

@@ -161,18 +161,21 @@
                 btn: ['确定', '关闭'],
                 btn1: function (index, layero) {
                     var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
-                    iframeWin.contentWindow.importExcel('${ctx}/finance/budget/import', function (data) {
+                    iframeWin.contentWindow.importExcel('${ctx}/finance/budget/importErp', function (data) {
                         if (data.success) {
-                            jp.success(data.msg);
+                            jp.alert(data.msg);
+                            if (data.errorCode != "9999"){
+                                jp.downloadFile('${ctx}/sg/financial/erpCredit/export')
+                            }
                             refresh();
                         } else {
-                            jp.error(data.msg);
+                            jp.alert(data.msg);
+                            refresh();
                         }
                         jp.close(index);
                     });//调用保存事件
                     return false;
                 },
-
                 btn2: function (index) {
                     jp.close(index);
                 }