From 0aea8bd18daaaf91e622fdcfdd81dbb2e1b4860c Mon Sep 17 00:00:00 2001
From: swb <jpy123456>
Date: Mon, 21 Oct 2024 09:01:18 +0800
Subject: [PATCH] fix:立行立改责任主体修改提交

---
 screen-api/src/main/java/com/moral/api/service/impl/AllocationServiceImpl.java |  247 +++++++++++++++++++++++++++++++++++-------------
 1 files changed, 179 insertions(+), 68 deletions(-)

diff --git a/screen-api/src/main/java/com/moral/api/service/impl/AllocationServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/AllocationServiceImpl.java
index 0b9da91..cbfde2a 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/AllocationServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/AllocationServiceImpl.java
@@ -6,19 +6,24 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.moral.api.config.Interceptor.UserHelper;
+import com.moral.api.controller.LogController;
 import com.moral.api.entity.*;
 import com.moral.api.exception.BusinessException;
+import com.moral.api.mapper.AllocationLogMapper;
 import com.moral.api.mapper.AllocationMapper;
 import com.moral.api.mapper.ResponsibilityUnitMapper;
 import com.moral.api.mapper.SysDictDataMapper;
 import com.moral.api.mapper.SysDictTypeMapper;
+import com.moral.api.mapper.UserLogMapper;
 import com.moral.api.mapper.UserMapper;
 import com.moral.api.pojo.bean.BaseInvalidEntity;
 import com.moral.api.pojo.dto.allocation.AllocationUnitViewDto;
 import com.moral.api.pojo.enums.*;
+import com.moral.api.pojo.ext.allocation.AllocationExcelExt;
 import com.moral.api.pojo.ext.allocation.AllocationExt;
 import com.moral.api.pojo.ext.allocation.AllocationListExt;
 import com.moral.api.pojo.ext.allocation.AllocationPageExt;
+import com.moral.api.pojo.ext.responsibility.ResponsibilityUnitExt;
 import com.moral.api.pojo.query.allocation.*;
 import com.moral.api.pojo.query.allocationextension.AllocationExtensionAddCond;
 import com.moral.api.pojo.query.app.AppAllocationFileCond;
@@ -28,9 +33,12 @@
 import com.moral.api.pojo.vo.app.AppAuthority;
 import com.moral.api.pojo.vo.user.QxUser;
 import com.moral.api.service.*;
+import com.moral.api.utils.BeanConverts;
 import com.moral.constant.Constants;
 import com.moral.constant.RedisConstants;
 import com.moral.util.DateUtils;
+import com.moral.util.WebUtils;
+
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.beans.BeanUtils;
@@ -39,9 +47,13 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.ObjectUtils;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
 
 import java.util.*;
 import java.util.stream.Collectors;
+
+import javax.servlet.http.HttpServletRequest;
 
 
 @Service
@@ -73,6 +85,8 @@
     private SysDictTypeService sysDictTypeService;
     @Autowired
     private UserService userService;
+    @Autowired
+    private AllocationLogMapper allocationLogMapper;
 
     /**
      * ������������������������������������
@@ -197,9 +211,13 @@
     public Map<String, Object> selectUnitView(Map<String, Object> map) {
         QueryWrapper<Allocation> wrapper = new QueryWrapper<>();
         //������������������
+
         List<Integer> list = this.unitResult();
         if (!ObjectUtils.isEmpty(map.get("unitId"))){
-            wrapper.in("unit_id",map.get("unitId").toString());
+            String unitId = map.get("unitId").toString();
+//            unitId.split(",");
+            List<String> list1 = Arrays.asList(unitId.split(","));
+            wrapper.in("unit_id",list1);
         }else {
             if (!ObjectUtils.isEmpty(list)){
                 Integer integer = list.get(0);
@@ -211,51 +229,30 @@
             }
         }
 
-//        Map<String, Object> userInfo = (Map<String, Object>) TokenUtils.getUserInfo();
-//        Object unitId = userInfo.get("unitId");
-//        Map<String, Object> orgInfo = (Map<String, Object>) userInfo.get("organization");
-//        Integer orgId = (Integer) orgInfo.get("id");
-//        if (!ObjectUtils.isEmpty(map.get("unitId"))){
-//            wrapper.in("unit_id",map.get("unitId").toString());
-//        }else {
-//            if (orgId!=24){
-//                if (ObjectUtils.isEmpty(unitId)){
-//                    return null;
-//                }
-//                ResponsibilityUnit responsibilityUnit1 = responsibilityUnitMapper.selectById(Integer.parseInt(unitId.toString()));
-//                Integer areaCode = responsibilityUnit1.getAreaCode();
-//                List<ResponsibilityUnit> responsibilityUnits = responsibilityUnitService.selectUnit(areaCode);
-//                if (ObjectUtils.isEmpty(responsibilityUnits)){
-//                    List<ResponsibilityUnit> responsibilityUnits1 = responsibilityUnitService.selectAreaUnit(areaCode);
-//                    Map<Integer, List<ResponsibilityUnit>> collect = responsibilityUnits1.stream().collect(Collectors.groupingBy(o -> o.getUnitId()));
-//                    List<Integer> collect1 = collect.keySet().stream().collect(Collectors.toList());
-//                    wrapper.in("unit_id",collect1);
-//                }else {
-//                    Map<Integer, List<ResponsibilityUnit>> collect = responsibilityUnits.stream().collect(Collectors.groupingBy(o -> o.getUnitId()));
-//                    List<Integer> collect1 = collect.keySet().stream().collect(Collectors.toList());
-//                    wrapper.in("unit_id",collect1);
-//                }
-//            }
-//        }
+
 
         HashMap<String, Object> rsMap = new HashMap<>();
         ArrayList<Map<String, Object>> polluteArrayList = new ArrayList<>();
         ArrayList<Map<String, Object>> escalationTypeList = new ArrayList<>();
         ArrayList<AllocationUnitViewDto> allocationUnitViewDtos = new ArrayList<>();
 
-        Object number1 = map.get("number");
+        String number1 = map.get("number").toString();
         String startTime=null;
         String endTime=null;
         if (!ObjectUtils.isEmpty(map.get("startTime")) || !ObjectUtils.isEmpty(map.get("endTime"))){
              startTime = map.get("startTime").toString();
-             endTime = map.get("endTime").toString();
+//             endTime = map.get("endTime").toString();
+             endTime = DateUtils.getDateOfDay(map.get("endTime").toString(), 1, DateUtils.yyyy_MM_dd_EN);
 
         }
-        if (!ObjectUtils.isEmpty(number1)){
+        if (!number1.equals("0")){
             String s = "-"+number1;
             //������������������
-            endTime = DateUtils.getCurDateTime();
-            startTime = DateUtils.getDateStringOfMon(Integer.parseInt(s), DateUtils.yyyy_MM_dd_HH_mm_ss_EN);
+//            endTime = DateUtils.getCurDateTime();
+//            endTime = DateUtils.getCurDate();
+            endTime = DateUtils.getDateOfDay(DateUtils.getCurDate(), 1, DateUtils.yyyy_MM_dd_EN);
+            startTime = DateUtils.getDateStringOfMon(Integer.parseInt(s), DateUtils.yyyy_MM_dd_EN);
+
         }
 
         wrapper.between("escalation_time",startTime,endTime);
@@ -321,15 +318,16 @@
             //������
             int deduction=0;
             int number=0;
+
             for (Allocation allocation : allocations1) {
                 String state = allocation.getState()+"";
                 Integer changeType = allocation.getChangeType();
                 String value = ChangeEnum.DEADLINE.value.toString();
                 if (value.equals(changeType+"")){
-                    Date dateOfDay = DateUtils.getDateOfDay(allocation.getEscalationTime(), allocation.getChangeDay());
+                    Date dateOfDay = DateUtils.getDateOfDay(allocation.getEscalationTime(), allocation.getChangeDay()+1);
                     Date date = new Date();
                     boolean timeBefor = DateUtils.isTimeBefor(date, dateOfDay);
-                    if (timeBefor && !state.equals("40") && !state.equals("50") && !state.equals("9")){
+                    if (timeBefor && !state.equals("40") && !state.equals("50") && !state.equals("9")&&!state.equals("30")){
                         //������������
                         overdue++;
                     }
@@ -383,7 +381,11 @@
         //������������������
         List<Integer> list = this.unitResult();
         if (!ObjectUtils.isEmpty(map.get("unitId"))){
-            wrapper.in("unit_id",map.get("unitId").toString());
+            String unitId = map.get("unitId").toString();
+//            unitId.split(",");
+            List<String> list1 = Arrays.asList(unitId.split(","));
+            wrapper.in("unit_id",list1);
+//            wrapper.in("unit_id",map.get("unitId").toString());
         }else {
             if (!ObjectUtils.isEmpty(list)){
                 Integer integer = list.get(0);
@@ -394,29 +396,7 @@
                 }
             }
         }
-//        Map<String, Object> userInfo = (Map<String, Object>) TokenUtils.getUserInfo();
-//        Object unitId = userInfo.get("unitId");
-//        Map<String, Object> orgInfo = (Map<String, Object>) userInfo.get("organization");
-//        Integer orgId = (Integer) orgInfo.get("id");
-//
-//        if (ObjectUtils.isEmpty(unitId)){
-//            return null;
-//        }
-//        if (orgId!=24){
-//            ResponsibilityUnit responsibilityUnit1 = responsibilityUnitMapper.selectById(Integer.parseInt(unitId.toString()));
-//            Integer areaCode = responsibilityUnit1.getAreaCode();
-//            List<ResponsibilityUnit> responsibilityUnits = responsibilityUnitService.selectUnit(areaCode);
-//            if (ObjectUtils.isEmpty(responsibilityUnits)){
-//                List<ResponsibilityUnit> responsibilityUnits1 = responsibilityUnitService.selectAreaUnit(areaCode);
-//                Map<Integer, List<ResponsibilityUnit>> collect = responsibilityUnits1.stream().collect(Collectors.groupingBy(o -> o.getUnitId()));
-//                List<Integer> collect1 = collect.keySet().stream().collect(Collectors.toList());
-//                wrapper.in("unit_id",collect1);
-//            }else {
-//                Map<Integer, List<ResponsibilityUnit>> collect = responsibilityUnits.stream().collect(Collectors.groupingBy(o -> o.getUnitId()));
-//                List<Integer> collect1 = collect.keySet().stream().collect(Collectors.toList());
-//                wrapper.in("unit_id",collect1);
-//            }
-//        }
+
 
         ArrayList<Map<String, Object>> rsMap = new ArrayList<>();
         Object number1 = map.get("number");
@@ -424,16 +404,16 @@
         String endTime=null;
         if (!ObjectUtils.isEmpty(map.get("startTime")) || !ObjectUtils.isEmpty(map.get("endTime"))){
             startTime = map.get("startTime").toString();
-            endTime = map.get("endTime").toString();
+            endTime = DateUtils.getDateOfDay(map.get("endTime").toString(), 1, DateUtils.yyyy_MM_dd_EN);
 
         }
-        if (!ObjectUtils.isEmpty(number1)){
+        if (Integer.parseInt(number1.toString())>0){
             String s = "-"+number1;
             //������������������
-            endTime = DateUtils.getCurDateTime();
-            startTime = DateUtils.getDateStringOfMon(Integer.parseInt(s), DateUtils.yyyy_MM_dd_HH_mm_ss_EN);
-
+            endTime = DateUtils.getDateOfDay(DateUtils.getCurDate(), 1, DateUtils.yyyy_MM_dd_EN);
+            startTime = DateUtils.getDateStringOfMon(Integer.parseInt(s), DateUtils.yyyy_MM_dd_EN);
         }
+
         wrapper.between("escalation_time",startTime,endTime);
         wrapper.eq("is_del",0);
         wrapper.eq("is_invalid",0);
@@ -441,6 +421,15 @@
         if (ObjectUtils.isEmpty(allocations)){
             return null;
         }
+        int totals=0;
+        int sum1=0;
+        int sum2=0;
+        int sum3=0;
+        int sum4=0;
+        int deductions=0;
+        int score=0;
+        int sum5=0;
+
         //������������������������
         Map<Integer, List<Allocation>> unitMap = allocations.stream().collect(Collectors.groupingBy(o -> o.getUnitId()));
         Set<Integer> unitList = unitMap.keySet();
@@ -456,6 +445,15 @@
             //������
             int deduction=0;
             int number=0;
+            Map<Integer, List<Allocation>> collect = allocations1.stream().collect(Collectors.groupingBy(o -> o.getState()));
+            //������
+            List<Allocation> allocations2 = collect.get(20);
+            //������
+            List<Allocation> allocations3 = collect.get(30);
+            //������
+            List<Allocation> allocations4 = collect.get(40);
+            //������
+            List<Allocation> allocations5 = collect.get(50);
             for (Allocation allocation : allocations1) {
                 String state = allocation.getState()+"";
                 if (state.equals("40")||state.equals("50")){
@@ -470,21 +468,50 @@
             int total = allocations1.size();
             String rate = (number * 100 /total)+"%";
 
+            int i1 = ObjectUtils.isEmpty(allocations2) ? 0 : allocations2.size();
+            int i2 = ObjectUtils.isEmpty(allocations3) ? 0 : allocations3.size();
+            int i3 = ObjectUtils.isEmpty(allocations4) ? 0 : allocations4.size();
+            int i4 = ObjectUtils.isEmpty(allocations5) ? 0 : allocations5.size();
             map1.put("������������",areaByCode.getAreaName());
             map1.put("���������",total);
-            map1.put("���������",number);
-            map1.put("������������",total-number);
+            map1.put("������",i1);
+            map1.put("������",i2);
+            map1.put("������",i3);
+            map1.put("������",i4);
+//            map1.put("���������",number);
+//            map1.put("������������",total-number);
             map1.put("���������",rate);
             map1.put("������",deduction);
             map1.put("������",marks);
             map1.put("���������",marks+deduction);
             rsMap.add(map1);
+            //������
+            totals = totals + total;
+            sum1 = sum1 + i1;
+            sum2 = sum2 + i2;
+            sum3 = sum3 + i3;
+            sum4 = sum4 + i4;
+            deductions = deductions + deduction;
+            score = score + marks;
+            sum5 = sum5 + marks+deduction;
         }
+        HashMap<String, Object> map1 = new HashMap<>();
+        map1.put("������������","������");
+        map1.put("���������",totals);
+        map1.put("������",sum1);
+        map1.put("������",sum2);
+        map1.put("������",sum3);
+        map1.put("������",sum4);
+        map1.put("������",deductions);
+        map1.put("������",score);
+        map1.put("���������",sum5);
+        rsMap.add(map1);
         return rsMap;
     }
 
     @Override
     public Page<AllocationPageExt> extPage(AllocationPageCond allocationPageCond) {
+        List<Integer> unitAuthority = this.getUnitAuthority(SysDictTypeEnum.SYS_AMEND.value);
         List<Integer> unitList = unitResult();
         Integer codeId =  unitAreaCode();
         allocationPageCond.setUnitList(unitList);
@@ -496,6 +523,7 @@
                 }else {
                     it.setIsApprove(0);
                 }
+                it.setIsCode(ObjectUtils.isEmpty(unitAuthority)?"2":"1");
             });
         }
         return page;
@@ -913,6 +941,74 @@
         return appAuthority;
     }
 
+    /**
+     * ������������������
+     *
+     * @param id
+     * @param unitId
+     */
+    @Override
+    @Transactional
+    public void updataUnit(Integer id, Integer unitId,Integer polluteType) {
+        AllocationLog allocationLog = new AllocationLog();
+        //������������������
+        QxUser user = UserHelper.getCurrentUser();
+        Allocation allocation = allocationMapper.selectById(id);
+        if (!ObjectUtils.isEmpty(unitId)){
+            ResponsibilityUnit unitName1 = getUnitName(allocation.getUnitId());
+            ResponsibilityUnit unitName2 = getUnitName(unitId);
+            allocation.setUnitId(unitId);
+            allocationLog.setContent(unitName1.getUnitName()+"----���������----"+unitName2.getUnitName());
+
+        }
+        if (!ObjectUtils.isEmpty(polluteType)){
+            SysDictData sysDictData1 = sysDictTypeService.listOne(Constants.WU_RAN_LEI_XING,allocation.getPolluteType().toString());
+            SysDictData sysDictData2 = sysDictTypeService.listOne(Constants.WU_RAN_LEI_XING, polluteType.toString());
+            allocation.setPolluteType(polluteType);
+            allocationLog.setPolluteType(sysDictData1.getDataValue()+"----���������----"+sysDictData2.getDataValue());
+        }
+
+        allocationMapper.updateById(allocation);
+        //������
+        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
+        allocationLog.setAllocationNum(allocation.getAllocationNum());
+        allocationLog.setIp(WebUtils.getIpAddr(request));
+        allocationLog.setAccountId(user.getUserId());
+        allocationLog.setAccount(user.getAccount());
+        allocationLog.setUserName(user.getUserName());
+        allocationLog.setCreateTime(new Date());
+        allocationLogMapper.insert(allocationLog);
+
+    }
+
+    /**
+     * ������������������
+     *
+     * @param allocationNum
+     * @return
+     */
+    @Override
+    public List<AllocationLog> getLog(String allocationNum) {
+        LambdaQueryWrapper<AllocationLog> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(AllocationLog::getAllocationNum,allocationNum);
+        wrapper.orderByAsc(AllocationLog::getCreateTime);
+        List<AllocationLog> allocationLogs = allocationLogMapper.selectList(wrapper);
+        return allocationLogs;
+    }
+
+    /**
+     * ������������������������������
+     *
+     * @param code
+     * @return
+     */
+    @Override
+    public List<Integer> getUnitAuthority(String code) {
+        QxUser user = UserHelper.getCurrentUser();
+        List<Integer> userList = responsibilityUnitMapper.selectCodeList(code,user.getUserId());
+        return userList;
+    }
+
     @Override
     public List<Integer>  unitResult() {
         QxUser user = UserHelper.getCurrentUser();
@@ -930,16 +1026,19 @@
 
     @Override
     public Integer unitAreaCode() {
+        // 1 ��������� 0������ 2 ������������
         QxUser user = UserHelper.getCurrentUser();
         List<Integer> userList = responsibilityUnitMapper.selectCodeList(SysDictTypeEnum.SYS_JBD.getValue(),user.getUserId());
         if(CollectionUtils.isNotEmpty(userList)){
             return 1;
         }
         if(Objects.nonNull(user.getUnitId())&&user.getUnitId()!=0) {
-            String code = responsibilityUnitMapper.selectAreaCode(user.getUnitId());
-            if (code.length() > 6) {
+            List<ResponsibilityUnitExt> codeList = responsibilityUnitMapper.selectResponsibilityUnitList(user.getUnitId());
+            if ( codeList.get(0).getAreaCode().length() > 6) {
                 return 0;
-            } else {
+            } else if(codeList.get(0).getAreaCode().length() == 6 && codeList.get(0).getParentCode().equals("320900")) {
+                return 0;
+            }else {
                 return 2;
             }
         }
@@ -960,4 +1059,16 @@
           return   responsibilityUnit;
     }
 
+    @Override
+    public List<AllocationExcelExt> listExcel(List<Integer> id) {
+        List<AllocationExcelExt> list = new ArrayList<>();
+        for(Integer i : id){
+            AllocationExt allocationExt = oneAllocation(i);
+            AllocationExcelExt allocationExcelExt = BeanConverts.convert(allocationExt,AllocationExcelExt.class);
+            allocationExcelExt.setFileBaseList(fileTableService.list(i,FileTableEnum.ALLOCATION_FOUNDATION.value,FileType.PICTURE.getValue()));
+            allocationExcelExt.setFileChangeList(fileTableService.list(i,FileTableEnum.ALLOCATION_RECTIFICATION.value,FileType.PICTURE.getValue()));
+            list.add(allocationExcelExt);
+        }
+        return list;
+    }
 }

--
Gitblit v1.8.0