chenyuesheng hace 3 años
padre
commit
a7b01d44fd

+ 28 - 96
src/main/java/com/jeeplus/modules/sg/balancedlibrary/onPassageMaterials/service/OnPassageMaterialsService.java

@@ -9,15 +9,13 @@ import com.jeeplus.modules.sg.balancedlibrary.onPassageMaterials.entity.OnPassag
 import com.jeeplus.modules.sg.balancedlibrary.onPassageMaterials.mapper.OnPassageMaterialsMapper;
 import com.jeeplus.modules.sg.balancedlibrary.reportPerson.entity.ReportPerson;
 import com.jeeplus.modules.sg.balancedlibrary.reportPerson.mapper.ReportPersonMapper;
+import org.apache.shiro.crypto.hash.Hash;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.concurrent.atomic.AtomicReference;
 
 
@@ -34,126 +32,64 @@ public class OnPassageMaterialsService extends CrudService<OnPassageMaterialsMap
     private ReportPersonMapper reportPersonMapper;
 
     public void comparativeData(List<OnPassageMaterials> onPassageMaterialsList, List<MaterialInformation> materialInformationList){
-        List<String> goHeavy = new ArrayList<>();
-        //物料编码 计划编制人相同
-        List<OnPassageMaterials> sameList = new ArrayList<>();
+
         //计划编制人为空
         List<OnPassageMaterials> isEmptyList = new ArrayList<>();
         //统计物料编码 部门
-        Map<String, String> materialCountMap = new HashMap<>();
+        Map<String, BigDecimal> materialCountMap = new HashMap<>();
         //统计物料编码 计划编制人相同合同数量
         Map<String, BigDecimal> sameMap = new HashMap<>();
         //统计计划编制人为空合同数量
         Map<String, BigDecimal> isEmptyMap = new HashMap<>();
-        //在途物资表J列
-        Map<String, BigDecimal> JMap = new HashMap<>();
-        //项目物资需求表H列
-        Map<String, BigDecimal> HMap = new HashMap<>();
+        //两表比较
+        List<String> compareList = new ArrayList<>();
+        /**************************************************************************/
+
 
         //从数据库中索取所有部门及提报人
         Map<String, List<ReportPerson>> reportPersonMap = getReportPerson();
-        /**************************************************************************/
+
         //循环比较找出 计划编制人为空添加isEmptyMap 根据计划编制人找出所在部门 物料编码-部门为去重条件
         onPassageMaterialsList.forEach(opm -> {
-            String key = "";
-            if (!opm.getPlanner().isEmpty()) {
-                //计划编制人不为空存放
-                String temp = opm.getMaterialCode() + "-" + opm.getPlanner();
-                //去重 物料编码-计划编制人
-                if(!goHeavy.contains(temp)){
-                    goHeavy.add(temp);
-                    sameList.add(opm);
-                }
-                String reportPersonOfDepartment = getReportPersonOfDepartment(reportPersonMap, opm.getPlanner());
-                if (reportPersonOfDepartment!=null) {
-                    key = opm.getMaterialCode() + "-" + reportPersonOfDepartment;
-                } else {
-                    key = opm.getMaterialCode()/* + "-"*/;
-                }
-
-                dataCount(sameMap, sameList, key);
+            //找到对应部门
+            String reportPersonOfDepartment = getReportPersonOfDepartment(reportPersonMap,opm.getPlanner());
+            //如果没有部门 表示空部门
+            String key = opm.getMaterialCode() + "-" + reportPersonOfDepartment;
+            if (sameMap.containsKey(key)) {
+                sameMap.put(key, new BigDecimal(opm.getContractCount()).add(sameMap.get(key)));
             } else {
-                //提报人为空
-                /*key = opm.getMaterialCode();
-                isEmptyList.add(opm);
-                dataCount(isEmptyMap, isEmptyList, key);*/
+                sameMap.put(key, new BigDecimal(opm.getContractCount()));
             }
         });
 
 
         materialInformationList.forEach(m -> {
-            String key = "";
-            if(!m.getReportingDepartment().isEmpty()){
-                key = m.getMaterialCode() + "-" + m.getReportingDepartment();
-            }else{
-                key = m.getMaterialCode();
-            }
-            //如果有相同的去重不加
+            String key = m.getMaterialCode() + "-" + m.getReportingDepartment();
             if (materialCountMap.containsKey(key)) {
-					/*BigDecimal temp = new BigDecimal(String.valueOf(materialCountMap.get(key)));
-					temp = new BigDecimal(m.getTotal()).add(temp);
-					materialCountMap.put(key, temp);*/
+					materialCountMap.put(key, new BigDecimal(m.getTotal()).add(materialCountMap.get(key)));
             } else {
-                materialCountMap.put(key, m.getTotal());
-            }
-        });
+                if(!m.getMaterialCode().isEmpty()&&!m.getTotal().isEmpty()){
 
-        materialCountMap.forEach((k, v) -> {
-            String[] split = k.split("-");
-            //如果有该部门则增加
-            if(split.length==2){
-                if (HMap.containsKey(split[1])) {
-                    BigDecimal temp = new BigDecimal(v).add(HMap.get(split[1]));
-                    HMap.put(split[1], temp);
-                } else {
-                    HMap.put(split[1], new BigDecimal(v));
+                    materialCountMap.put(key, new BigDecimal(m.getTotal()));
                 }
             }
-
         });
 
-        sameMap.forEach((k, v) -> {
-            String[] split = k.split("-");
-            //如果有该部门则增加
-            if(split.length==2){
-                if (JMap.containsKey(split[1])) {
-                    BigDecimal temp = v.add(JMap.get(split[1]));
-                    JMap.put(split[1], temp);
-                } else {
-                    JMap.put(split[1], v);
+        materialCountMap.forEach((k,v)->{
+            if(sameMap.containsKey(k)){
+                if(sameMap.get(k).compareTo(v)>=0){
+                    compareList.add(k);
                 }
             }
         });
 
-
-
-        /******************两表比较*******************/
-
-        HMap.forEach((k, v) -> {
-            if (JMap.containsKey(k)) {
-                if (JMap.get(k).compareTo(v) >= 0) {
-                    materialInformationList.forEach(m -> {
-                        if (m.getReportingDepartment().equals(k)) {
-                            m.setRemarkText("在途已有" + JMap.get(k) + "单位,请核实本次需求");
-                        }
-                    });
-                }
+        materialInformationList.forEach(l->{
+            String key = l.getMaterialCode() + "-" + l.getReportingDepartment();
+            if(compareList.contains(key)){
+                l.setRemarkText("在途已有" + sameMap.get(key)+"单位,请核实本次需求");
             }
         });
-    }
-
-    private void dataCount(Map<String, BigDecimal> map, List<OnPassageMaterials> list, String key) {
-        list.forEach(l -> {
-            //如果有相同就不加去重
-            if (map.containsKey(key)) {
-                BigDecimal temp = new BigDecimal(String.valueOf(map.get(key)));
-                temp = new BigDecimal(l.getContractCount()).add(temp);
-                map.put(key, temp);
 
-            } else {
-                map.put(key, new BigDecimal(l.getContractCount()));
-            }
-        });
     }
 
     /**
@@ -162,10 +98,6 @@ public class OnPassageMaterialsService extends CrudService<OnPassageMaterialsMap
      */
     private Map<String,List<ReportPerson>> getReportPerson(){
         Map<String,List<ReportPerson>> map = new HashMap<>();
-        /*List<String> department = reportPersonMapper.findDepartment();
-        department.forEach(l->{
-            map.put(l,reportPersonMapper.findDepartmentOfPerson(l));
-        });*/
         List<ReportPerson> departmentGroupByPerson = reportPersonMapper.findDepartmentGroupByPerson();
         departmentGroupByPerson.forEach(l->{
             if(map.containsKey(l.getReportDepartment())){

+ 0 - 1
src/main/java/com/jeeplus/modules/sg/balancedlibrary/onPassageMaterials/web/OnPassageMaterialsController.java

@@ -86,7 +86,6 @@ public class OnPassageMaterialsController extends BaseController {
 
             service.comparativeData(onPassageMaterialsList,materialInformationList);
 
-
             /***********************************************/
             String fileName = "项目物资需求表" + DateUtils.getDate("yyyyMMddHHmmss") + ".xlsx";
             new ExportExcel("", MaterialInformation.class).setDataList(materialInformationList).write(response, fileName).dispose();

+ 1 - 0
src/main/java/com/jeeplus/modules/sg/balancedlibrary/reportPerson/mapper/ReportPersonMapper.java

@@ -11,6 +11,7 @@ import com.jeeplus.modules.sg.balancedlibrary.reportPerson.entity.ReportPerson;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Set;
 
 /**
  * 提报人MAPPER接口

+ 4 - 1
src/main/java/com/jeeplus/modules/sg/balancedlibrary/reportPerson/mapper/xml/ReportPersonMapper.xml

@@ -72,7 +72,10 @@
     </select>
     <select id="findDepartmentGroupByPerson"
             resultType="com.jeeplus.modules.sg.balancedlibrary.reportPerson.entity.ReportPerson">
-		SELECT `report_department` reportDepartment ,`report_person` reportPerson FROM `bla_report_person` group by `report_department` , report_person
+		SELECT
+		`report_department` reportDepartment ,`report_person` reportPerson
+		FROM `bla_report_person`
+		group by `report_department` , report_person
 	</select>
 
     <insert id="insert">