From 1cad14bca191807e18705c3a5526eda8151be439 Mon Sep 17 00:00:00 2001
From: zhanghua <314079846@qq.com>
Date: 星期一, 14 四月 2025 23:10:22 +0800
Subject: [PATCH] 批量审核和图片保存bug

---
 ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/DisposeRecordServiceImpl.java |  298 +++++++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 278 insertions(+), 20 deletions(-)

diff --git a/ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/DisposeRecordServiceImpl.java b/ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/DisposeRecordServiceImpl.java
index 1777567..f2f4c28 100644
--- a/ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/DisposeRecordServiceImpl.java
+++ b/ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/DisposeRecordServiceImpl.java
@@ -1,19 +1,41 @@
 package com.ycl.service.caseHandler.impl;
 
+import cn.hutool.core.util.PageUtil;
+import com.alibaba.druid.sql.PagerUtils;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ycl.entity.caseHandler.BaseCase;
-import com.ycl.entity.caseHandler.DisposeRecord;
+import com.ycl.api.CommonResult;
+import com.ycl.bo.AdminUserDetails;
+import com.ycl.common.constant.BaseCaseStatus;
+import com.ycl.common.constant.StepName;
+import com.ycl.dto.dispatch.UploadDisposingResultParam;
+import com.ycl.entity.caseHandler.*;
+import com.ycl.entity.resources.ImageResources;
+import com.ycl.exception.ApiException;
 import com.ycl.mapper.caseHandler.BaseCaseMapper;
 import com.ycl.mapper.caseHandler.DisposeRecordMapper;
-import com.ycl.service.caseHandler.IDisposeRecordService;
+import com.ycl.mapper.caseHandler.WorkflowConfigStepMapper;
+import com.ycl.service.caseHandler.*;
+import com.ycl.service.resources.IImageResourcesService;
 import com.ycl.vo.MyBacklogVO;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.core.context.SecurityContextHolder;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
 import java.util.List;
-import java.util.stream.Collectors;
+import java.util.Objects;
 
 /**
  * <p>
@@ -24,29 +46,265 @@
  * @since 2022-09-24
  */
 @Service
+@Slf4j
 public class DisposeRecordServiceImpl extends ServiceImpl<DisposeRecordMapper, DisposeRecord> implements IDisposeRecordService {
 
     @Resource
     BaseCaseMapper baseCaseMapper;
-
     @Resource
     DisposeRecordMapper disposeRecordMapper;
+    @Resource
+    WorkflowConfigStepMapper workflowConfigStepMapper;
+    @Autowired
+    IInvestigationService iInvestigationService;
+    @Autowired
+    IArrivalSituationService iArrivalSituationService;
+    @Autowired
+    IPartyInfoService iPartyInfoService;
+    @Autowired
+    IWritService iWritService;
+    @Autowired
+    IBaseCaseService baseCaseService;
+    @Autowired
+    IDisposeRecordService iDisposeRecordService;
+    @Autowired
+    IImageResourcesService iImageResourcesService;
+    public final static Short LAST_WEEK = 0;
+    public final static Short LAST_MONTH = 1;
+    public final static Short LAST_THREEMONTH = 2;
 
     @Override
-    public List<MyBacklogVO> listMyTask(Integer caseId, Long userId) {
-        return disposeRecordMapper.selectList(
-                        new LambdaQueryWrapper<DisposeRecord>()
-                                .eq(DisposeRecord::getHandlerId, userId.intValue())
-                                .isNull(DisposeRecord::getEndTime))
-                .stream()
-                .map(item -> {
-                    MyBacklogVO myBacklogVO = new MyBacklogVO();
-                    BeanUtils.copyProperties(item, myBacklogVO);
-                    BaseCase baseCase = baseCaseMapper.selectById(caseId);
-                    myBacklogVO.setCategory(baseCase.getCategory());
-                    myBacklogVO.setEventSource(baseCase.getEventSource());
-                    myBacklogVO.setCode(baseCase.getCode());
-                    return myBacklogVO;
-                }).collect(Collectors.toList());
+    public Page<MyBacklogVO> listMyTask(String num, Long userId, Short type, Short source, Short time, Integer current, Integer pageSize) {
+        LocalDateTime alarmTimeStart = null;
+        LocalDateTime alarmTimeEnd = null;
+        if (Objects.equals(time, LAST_WEEK)) {
+            alarmTimeStart = LocalDateTime.now().minusDays(7);
+            alarmTimeEnd = LocalDateTime.now();
+        } else if (Objects.equals(time, LAST_MONTH)) {
+            alarmTimeStart = LocalDateTime.now().minusMonths(1);
+            alarmTimeEnd = LocalDateTime.now();
+        } else if (Objects.equals(time, LAST_THREEMONTH)) {
+            alarmTimeStart = LocalDateTime.now().minusMonths(3);
+            alarmTimeEnd = LocalDateTime.now();
+        }
+        Integer pageIndex = PageUtil.getStart(current - 1, pageSize);
+        List<MyBacklogVO> list = disposeRecordMapper.selectMyBackList(userId, num, alarmTimeStart, alarmTimeEnd, source, type, pageIndex, pageSize);
+        Long total = disposeRecordMapper.selectMyBackListTotal(userId, num, alarmTimeStart, alarmTimeEnd, source, type);
+
+        list.forEach(o -> {
+            if (o.getPictureList() != null && o.getPictureList().size() > 0) {
+                o.setPicture(o.getPictureList().get(0).getUrl());
+            }
+        });
+        Page<MyBacklogVO> page = new Page<>();
+        page.setRecords(list);
+        page.setTotal(total);
+        return page;
+    }
+
+    @Override
+    public Long listMyTaskCount(String num, Long userId, Short type, Short source, Short time) {
+        LocalDateTime alarmTimeStart = null;
+        LocalDateTime alarmTimeEnd = null;
+        if (Objects.equals(time, LAST_WEEK)) {
+            alarmTimeStart = LocalDateTime.now().minusDays(7);
+            alarmTimeEnd = LocalDateTime.now();
+        } else if (Objects.equals(time, LAST_MONTH)) {
+            alarmTimeStart = LocalDateTime.now().minusMonths(1);
+            alarmTimeEnd = LocalDateTime.now();
+        } else if (Objects.equals(time, LAST_THREEMONTH)) {
+            alarmTimeStart = LocalDateTime.now().minusMonths(3);
+            alarmTimeEnd = LocalDateTime.now();
+        }
+        return disposeRecordMapper.selectMyBackListTotal(userId, num, alarmTimeStart, alarmTimeEnd, source, type);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public CommonResult saveOrUpdateUpload(UploadDisposingResultParam uploadDisposingResultParam) {
+        log.info("鍙傛暟------------------>{}", uploadDisposingResultParam);
+        if (uploadDisposingResultParam.getArrivalTime() != null) {
+            uploadDisposingResultParam.setArrivalTime(uploadDisposingResultParam.getArrivalTime().replace("/", "-"));
+        }
+        if (uploadDisposingResultParam.getInvestigationTime() != null) {
+            uploadDisposingResultParam.setInvestigationTime(uploadDisposingResultParam.getInvestigationTime().replace("/", "-"));
+        }
+
+        List<String> pics = new ArrayList<>();
+        uploadDisposingResultParam.getPic().forEach(o -> {
+            pics.add(o.replace("/sccg/API/img?fileUrl=", ""));
+        });
+        uploadDisposingResultParam.setPic(pics);
+
+        List<String> situationPics = new ArrayList<>();
+        uploadDisposingResultParam.getSituationPic().forEach(o -> {
+            situationPics.add(o.replace("/sccg/API/img?fileUrl=", ""));
+        });
+        uploadDisposingResultParam.setSituationPic(situationPics);
+
+        AdminUserDetails user = (AdminUserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
+        List<ArrivalSituation> list = iArrivalSituationService.list(new LambdaQueryWrapper<ArrivalSituation>().eq(ArrivalSituation::getBaseCaseId, uploadDisposingResultParam.getCaseId()));
+        if (!list.isEmpty()) {
+            //TODO:杩濊娌℃湁褰撲簨浜篒D,杩濆缓鎵嶆湁
+            if (uploadDisposingResultParam.getPartyInfoId() != null) {
+                //褰撲簨浜�
+                PartyInfo partyInfo = new PartyInfo();
+                BeanUtils.copyProperties(uploadDisposingResultParam, partyInfo);
+                //TODO:鍓嶇鍥炴樉鍙湁褰撲簨浜哄鍚嶉渶瑕佸湪璇︽儏杩斿洖
+                //TODO:鍚庡彴涓婃姤褰撲簨浜轰俊鎭~涓嶈繘鍘�
+                partyInfo.setId(uploadDisposingResultParam.getPartyInfoId());
+                iPartyInfoService.updateById(partyInfo);
+                //璋冩煡鍙栬瘉
+                Investigation investigation = new Investigation();
+                BeanUtils.copyProperties(uploadDisposingResultParam, investigation);
+                investigation.setBaseCaseId(uploadDisposingResultParam.getCaseId());
+                investigation.setPartyId(partyInfo.getId());
+                //TODO:鏀逛负闆嗗悎鐨勫瓧绗︿覆褰㈠紡
+                investigation.setPic(String.join(",", uploadDisposingResultParam.getPic()));
+                //TODO:灏忕▼搴忓墠绔〉闈㈡病鏈夎皟鏌ユ椂闂达紝鏆傛椂涓嶅~
+                //investigation.setInvestigationTime(LocalDateTime.parse(uploadDisposingResultParam.getInvestigationTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+                investigation.setId(uploadDisposingResultParam.getInvestigationId());
+                iInvestigationService.updateById(investigation);
+            }
+            //鍒拌揪
+            ArrivalSituation arrivalSituation = new ArrivalSituation();
+            BeanUtils.copyProperties(uploadDisposingResultParam, arrivalSituation);
+            arrivalSituation.setBaseCaseId(uploadDisposingResultParam.getCaseId());
+            arrivalSituation.setArrivalTime(LocalDateTime.parse(uploadDisposingResultParam.getArrivalTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+            arrivalSituation.setId(uploadDisposingResultParam.getArrivalSituationId());
+            //TODO:鏀逛负闆嗗悎鐨勫瓧绗︿覆褰㈠紡
+            arrivalSituation.setSituationPic(String.join(",", uploadDisposingResultParam.getSituationPic()));
+            iArrivalSituationService.updateById(arrivalSituation);
+            //鏂囦功
+            String handType = "02";
+            iImageResourcesService.deleteByCaseId(uploadDisposingResultParam.getCaseId(), handType);
+            ImageResources imageResources = new ImageResources();
+            imageResources.setType(handType);
+            imageResources.setBelongToId(uploadDisposingResultParam.getCaseId());
+            imageResources.setUrl(StringUtils.joinWith(",",
+                    String.join(",", uploadDisposingResultParam.getPic()),
+                    String.join(",", uploadDisposingResultParam.getSituationPic())));
+            iImageResourcesService.save(imageResources);
+            if (uploadDisposingResultParam.getWritCode() != null && uploadDisposingResultParam.getWritType() != null) {
+                Writ writ = new Writ();
+                BeanUtils.copyProperties(uploadDisposingResultParam, writ);
+                writ.setBaseCaseId(uploadDisposingResultParam.getCaseId());
+                writ.setIllegalBuildingId(uploadDisposingResultParam.getCaseId());
+                writ.setLimitTime(LocalDateTime.parse(uploadDisposingResultParam.getLimitTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+                writ.setRectifyTime(LocalDateTime.parse(uploadDisposingResultParam.getRectifyTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+                writ.setSendTime(LocalDateTime.parse(uploadDisposingResultParam.getSendTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+                iWritService.updateById(writ);
+                imageResources.setUrl(StringUtils
+                        .joinWith(",", uploadDisposingResultParam.getPic()
+                                , uploadDisposingResultParam.getSituationPic()
+                                , uploadDisposingResultParam.getOriginalPic()
+                                , uploadDisposingResultParam.getOtherPic()
+                                , uploadDisposingResultParam.getRectifiedPic()
+                                , uploadDisposingResultParam.getWritPic()));
+                iImageResourcesService.updateById(imageResources);
+            }
+            baseCaseService.update(new LambdaUpdateWrapper<BaseCase>().eq(BaseCase::getId, uploadDisposingResultParam.getCaseId()).set(BaseCase::getState, BaseCaseStatus.DISPOSE));
+        } else {
+            //褰撲簨浜�
+            PartyInfo partyInfo = new PartyInfo();
+            BeanUtils.copyProperties(uploadDisposingResultParam, partyInfo);
+            partyInfo.setCreateUser(user.getUserId().intValue());
+            partyInfo.setCreateTime(LocalDateTime.now());
+            iPartyInfoService.save(partyInfo);
+            //璋冩煡鍙栬瘉
+            Investigation investigation = new Investigation();
+            BeanUtils.copyProperties(uploadDisposingResultParam, investigation);
+            investigation.setBaseCaseId(uploadDisposingResultParam.getCaseId());
+            investigation.setCreateTime(LocalDateTime.now());
+            //TODO:鏀逛负闆嗗悎鐨勫瓧绗︿覆褰㈠紡
+            investigation.setPic(String.join(",", uploadDisposingResultParam.getPic()));
+            investigation.setCreateUser(user.getUserId());
+            investigation.setPartyId(partyInfo.getId());
+
+            //TODO:鍓嶇椤甸潰娌℃湁璋冩煡鏃堕棿锛屾殏鏃朵笉濉�
+//            investigation.setInvestigationTime(LocalDateTime.parse(uploadDisposingResultParam.getInvestigationTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+            iInvestigationService.save(investigation);
+            //鍒拌揪
+            ArrivalSituation arrivalSituation = new ArrivalSituation();
+            BeanUtils.copyProperties(uploadDisposingResultParam, arrivalSituation);
+            arrivalSituation.setBaseCaseId(uploadDisposingResultParam.getCaseId());
+            arrivalSituation.setCreateTime(LocalDateTime.now());
+            arrivalSituation.setCreateUser(user.getUserId());
+            //TODO:鏀逛负闆嗗悎鐨勫瓧绗︿覆褰㈠紡
+            arrivalSituation.setSituationPic(String.join(",", uploadDisposingResultParam.getSituationPic()));
+            arrivalSituation.setArrivalTime(LocalDateTime.parse(uploadDisposingResultParam.getArrivalTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+            iArrivalSituationService.save(arrivalSituation);
+            //鏂囦功
+            String handType = "02";
+            ImageResources imageResources = new ImageResources();
+            imageResources.setType(handType);
+            imageResources.setBelongToId(uploadDisposingResultParam.getCaseId());
+            imageResources.setCreateTime(LocalDateTime.now());
+            imageResources.setCreateUser(user.getUserId());
+            imageResources.setUrl(StringUtils.joinWith(",",
+                    String.join(",", uploadDisposingResultParam.getPic()),
+                    String.join(",", uploadDisposingResultParam.getSituationPic())));
+            iImageResourcesService.save(imageResources);
+            if (uploadDisposingResultParam.getWritCode() != null && uploadDisposingResultParam.getWritType() != null) {
+                Writ writ = new Writ();
+                BeanUtils.copyProperties(uploadDisposingResultParam, writ);
+                writ.setBaseCaseId(uploadDisposingResultParam.getCaseId());
+                writ.setIllegalBuildingId(uploadDisposingResultParam.getCaseId());
+                writ.setCreateTime(LocalDateTime.now());
+                writ.setCreateUser(user.getUserId());
+                writ.setLimitTime(LocalDateTime.parse(uploadDisposingResultParam.getLimitTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+                writ.setRectifyTime(LocalDateTime.parse(uploadDisposingResultParam.getRectifyTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+                writ.setSendTime(LocalDateTime.parse(uploadDisposingResultParam.getSendTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+                iWritService.save(writ);
+                imageResources.setUrl(StringUtils
+                        .joinWith(","
+                                , String.join(",", uploadDisposingResultParam.getPic())
+                                , String.join(",", uploadDisposingResultParam.getSituationPic())
+                                , uploadDisposingResultParam.getOriginalPic()
+                                , uploadDisposingResultParam.getOtherPic()
+                                , uploadDisposingResultParam.getRectifiedPic()
+                                , uploadDisposingResultParam.getWritPic()));
+                iImageResourcesService.updateById(imageResources);
+            }
+
+            baseCaseService.update(new LambdaUpdateWrapper<BaseCase>().eq(BaseCase::getId, uploadDisposingResultParam.getCaseId()).set(BaseCase::getState, BaseCaseStatus.DISPOSE));
+        }
+        String stepName = StepName.CHECK.getName();
+        DisposeRecord disposeRecord = new DisposeRecord();
+        disposeRecord.setBaseCaseId(uploadDisposingResultParam.getCaseId());
+        disposeRecord.setState(0);
+        disposeRecord.setCreateTime(LocalDateTime.now());
+        disposeRecord.setCreateUser(user.getUserId());
+        disposeRecord.setStepName(stepName);
+        disposeRecord.setStartTime(LocalDateTime.now());
+        //缁撴潫涓婁紶澶勭疆娴佺▼
+        QueryWrapper<WorkflowConfigStep> qureyDispatch = new QueryWrapper<>();
+        qureyDispatch.eq("name", StepName.DISPOSE.getName());
+        WorkflowConfigStep dispatchStep = workflowConfigStepMapper.selectOne(qureyDispatch);
+
+        UpdateWrapper<DisposeRecord> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.eq("base_case_id", disposeRecord.getBaseCaseId()).eq("workflow_config_step_id", dispatchStep.getId());
+
+        DisposeRecord updateRecord = new DisposeRecord();
+        updateRecord.setState(1);
+        updateRecord.setEndTime(LocalDateTime.now());
+        updateRecord.setHandlerId(disposeRecord.getCreateUser());
+        updateRecord.setResult(uploadDisposingResultParam.getDescription());
+        baseMapper.update(updateRecord, updateWrapper);
+
+        QueryWrapper<WorkflowConfigStep> stepQurey = new QueryWrapper<>();
+        stepQurey.eq("name", disposeRecord.getStepName());
+        WorkflowConfigStep workflowConfigStep = workflowConfigStepMapper.selectOne(stepQurey);
+        if (workflowConfigStep == null) {
+            throw new ApiException("鏈煡璇㈠埌璇ユ祦绋嬬幆鑺�");
+        }
+        //璁剧疆娴佺▼鐜妭鏁版嵁
+        disposeRecord.setWorkflowConfigStepId(workflowConfigStep.getId());
+        disposeRecord.setHandlerRoleId(workflowConfigStep.getRoleId());
+        boolean result = baseMapper.insert(disposeRecord) == 1 ? true : false;
+        if (!result) {
+            CommonResult.failed("宸叉彁浜�,璇峰嬁閲嶅鎻愪氦");
+        }
+        return CommonResult.success("add success");
     }
 }

--
Gitblit v1.8.0