Forráskód Böngészése

中审报告归档调整

sangwenwei 3 hónapja
szülő
commit
6dea672690

+ 5 - 0
jeeplus-api/jeeplus-system-api/src/main/java/com/jeeplus/sys/factory/DictApiFallbackFactory.java

@@ -40,6 +40,11 @@ public class DictApiFallbackFactory implements FallbackFactory <IDictApi> {
             public String getDictListMapByDict(String dict) {
                 return null;
             }
+
+            @Override
+            public String getDictValueListMapByDict(String dict) {
+                return null;
+            }
         };
     }
 }

+ 10 - 0
jeeplus-api/jeeplus-system-api/src/main/java/com/jeeplus/sys/feign/IDictApi.java

@@ -46,4 +46,14 @@ public interface IDictApi {
      */
     @GetMapping(value = "/feign/sys/dict/getDictListMapByDict")
     String getDictListMapByDict(@RequestParam(value = "dict") String dict);
+
+
+    /**
+     * 获取字典值
+     *
+     * @param dict
+     * @return
+     */
+    @GetMapping(value = "/feign/sys/dict/getDictValueListMapByDict")
+    String getDictValueListMapByDict(@RequestParam(value = "dict") String dict);
 }

+ 13 - 12
jeeplus-modules/jeeplus-centrecareful/src/main/java/com/jeeplus/centrecareful/reportArchieve/controller/ZsReportArchieveController.java

@@ -4,6 +4,7 @@ import cn.hutool.extra.spring.SpringUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.TypeReference;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 
 import com.jeeplus.aop.demo.annotation.DemoMode;
@@ -110,9 +111,14 @@ public class ZsReportArchieveController {
 
         List<ZsReportArchieveExport> listA = new ArrayList<>();
         //获取sheet
-        listA = EasyPoiUtil.importExcel(file, 0, 2, ZsReportArchieveExport.class);
+        listA = EasyPoiUtil.importExcel(file, 1, 1, ZsReportArchieveExport.class);
         //去除excel中的空行
         listA = getExcelList(listA);
+        //将示例行去除掉
+        listA.removeIf(item -> {
+            String number = (item).getNumber();
+            return number != null && number.contains("例");
+        });
         //导入前检测数据
         String resultA = reportArchieveService.importDecide(listA, arrayList);
         if(StringUtils.isNotBlank(resultA)){
@@ -150,7 +156,7 @@ public class ZsReportArchieveController {
             Class clazz = (Class) object.getClass(); // 得到类对象
             Field fields[] = clazz.getDeclaredFields(); // 得到所有属性
             for (Field field : fields) {
-                if("serialVersionUID".equals(field.getName()) || "number".equalsIgnoreCase(field.getName())){
+                if("serialVersionUID".equals(field.getName()) || "BIZ_CODE".equalsIgnoreCase(field.getName())){
                     continue;
                 }
                 field.setAccessible(true);
@@ -283,8 +289,8 @@ public class ZsReportArchieveController {
             String businessTypeDatas = SpringUtil.getBean ( IDictApi.class ).getDictListMapByDict ("business_type");
             Map<String,Object> businessTypeValueDTOs = JSON.parseObject(businessTypeDatas, new TypeReference<Map<String,Object>>() {});
 
-            String storagePlaceDatas = SpringUtil.getBean ( IDictApi.class ).getDictListMapByDict ("storage_place");
-            Map<String,Object> storagePlaceValueDTOs = JSON.parseObject(storagePlaceDatas, new TypeReference<Map<String,Object>>() {});
+//            String storagePlaceDatas = SpringUtil.getBean ( IDictApi.class ).getDictListMapByDict ("storage_place");
+//            Map<String,Object> storagePlaceValueDTOs = JSON.parseObject(storagePlaceDatas, new TypeReference<Map<String,Object>>() {});
 
             for (ZsReportArchieveExport info : result) {
 
@@ -297,14 +303,9 @@ public class ZsReportArchieveController {
                     }
                 }
                 if(com.jeeplus.utils.StringUtils.isNotBlank(info.getStoragePlace())){
-                    for (String key : storagePlaceValueDTOs.keySet()) {
-                        if(info.getStoragePlace().equals(key)){
-                            String value = String.valueOf(storagePlaceValueDTOs.get(key));
-                            String place = "江苏分所 "+value+"区";
-                            info.setStoragePlace(place);
-                            break;
-                        }
-                    }
+                    String replace = info.getStoragePlace().replace(",", "区");
+                    String place = "江苏分所 "+replace+"区";
+                    info.setStoragePlace(place);
                 }
                 count+=1;
                 info.setNumber(count+"");

+ 3 - 0
jeeplus-modules/jeeplus-centrecareful/src/main/java/com/jeeplus/centrecareful/reportArchieve/domain/ZsReportArchieve.java

@@ -8,6 +8,7 @@ import lombok.Data;
 import org.springframework.format.annotation.DateTimeFormat;
 
 import java.util.Date;
+import java.util.List;
 
 @Data
 @TableName("zs_report_archieve")
@@ -60,4 +61,6 @@ public class ZsReportArchieve extends BaseEntity {
     private String archieveReseverName; //归档接收人
     @TableField(exist = false)
     private String updateName;
+    @TableField(exist = false)
+    private List<String> storagePlaces;
 }

+ 5 - 0
jeeplus-modules/jeeplus-centrecareful/src/main/java/com/jeeplus/centrecareful/reportArchieve/mapper/ZsReportArchieveMapper.java

@@ -31,4 +31,9 @@ public interface ZsReportArchieveMapper extends BaseMapper<ZsReportArchieve> {
     @InterceptorIgnore(tenantLine = "true")
     List<ZsReportArchieve> findByFileBoxNumber(@Param("fileBoxNumber")String fileBoxNumber, @Param("reportNoType")String reportNoType);
 
+    /**
+     * 批量新增
+     * @param batchList
+     */
+    void insertBatch(@Param("batchList") List<ZsReportArchieve> batchList);
 }

+ 79 - 1
jeeplus-modules/jeeplus-centrecareful/src/main/java/com/jeeplus/centrecareful/reportArchieve/mapper/xml/ZsReportArchieveMapper.xml

@@ -80,7 +80,11 @@
         su.name as updateName
         from zs_report_archieve a
         left join sys_user su on a.update_by_id = su.id and su.del_flag = '0'
-        where a.report_no_type = #{reportNoType} and a.del_flag = '0' order by a.file_box_number DESC limit 1
+        where a.report_no_type = #{reportNoType} and a.del_flag = '0'
+        order by
+            CAST(SUBSTRING_INDEX(a.file_box_number, '-', 1) AS UNSIGNED) DESC,
+            CAST(SUBSTRING_INDEX(a.file_box_number, '-', -1) AS UNSIGNED) DESC
+        limit 1
     </select>
 
     <select id="findByReportNo" resultType="com.jeeplus.centrecareful.reportArchieve.domain.ZsReportArchieve">
@@ -100,4 +104,78 @@
         left join sys_user su on a.update_by_id = su.id and su.del_flag = '0'
         where a.report_no_type = #{reportNoType} and a.file_box_number = #{fileBoxNumber} and a.del_flag = '0'
     </select>
+
+    <insert id="insertBatch">
+        INSERT INTO zs_report_archieve (
+        id,
+        create_by_id,
+        create_time,
+        update_by_id,
+        update_time,
+        archieve_no,
+        office_name,
+        business_name,
+        business_type,
+        project,
+        report_no,
+        report_no_type,
+        reporting_period,
+        filling_manager,
+        project_leader,
+        project_master,
+        signature_cpa,
+        signature_parter,
+        project_level,
+        report_date,
+        stamp_date,
+        archieve_date,
+        file_box_number,
+        box_number,
+        book_numbers,
+        remarks,
+        original_contract,
+        total_assets,
+        archieve_resever,
+        storage_place,
+        status,
+        tenant_id,
+        del_flag
+        )
+        VALUES
+        <foreach collection="batchList" item="item" separator=",">
+            (#{item.id},
+            #{item.createById},
+            #{item.createTime},
+            #{item.updateById},
+            #{item.updateTime},
+            #{item.archieveNo},
+            #{item.officeName},
+            #{item.businessName},
+            #{item.businessType},
+            #{item.project},
+            #{item.reportNo},
+            #{item.reportNoType},
+            #{item.reportingPeriod},
+            #{item.fillingManager},
+            #{item.projectLeader},
+            #{item.projectMaster},
+            #{item.signatureCpa},
+            #{item.signatureParter},
+            #{item.projectLevel},
+            #{item.reportDate},
+            #{item.stampDate},
+            #{item.archieveDate},
+            #{item.fileBoxNumber},
+            #{item.boxNumber},
+            #{item.bookNumbers},
+            #{item.remarks},
+            #{item.originalContract},
+            #{item.totalAssets},
+            #{item.archieveResever},
+            #{item.storagePlace},
+            #{item.status},
+            #{item.tenantId},
+            #{item.delFlag})
+        </foreach>
+    </insert>
 </mapper>

+ 175 - 39
jeeplus-modules/jeeplus-centrecareful/src/main/java/com/jeeplus/centrecareful/reportArchieve/service/ZsReportArchieveService.java

@@ -4,6 +4,8 @@ import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.extra.spring.SpringUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.TypeReference;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
@@ -25,10 +27,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.UUID;
+import java.util.*;
 
 @Service
 @Transactional
@@ -92,14 +91,35 @@ public class ZsReportArchieveService {
         }
         //存放地点
         if (StringUtils.isNotBlank(zsReportArchieve.getStoragePlace())){
-            queryWrapper.eq("a.storage_place",zsReportArchieve.getStoragePlace());
+            queryWrapper.like("a.storage_place",zsReportArchieve.getStoragePlace());
         }
         //状态
         if (StringUtils.isNotBlank(zsReportArchieve.getStatus())){
             queryWrapper.eq("a.status",zsReportArchieve.getStatus());
         }
         IPage<ZsReportArchieve> list = reportArchieveMapper.findList(page,queryWrapper);
+        for (ZsReportArchieve record : list.getRecords()) {
+            if (StringUtils.isNotBlank(record.getStoragePlace())){
+                if (record.getStoragePlace().contains(",")){
+                    String[] split = record.getStoragePlace().split(",");
+                    StringBuilder vaBuilder = new StringBuilder();
+                    for (String s : split) {
+                        String placeValue = SpringUtil.getBean(IDictApi.class).getDictLabel(s, "storage_place", "");
+                        if (StringUtils.isNotBlank(placeValue)) {
+                            if (vaBuilder.length() > 0) {
+                                vaBuilder.append(",");  // 用逗号分隔每个拼接的值
+                            }
+                            vaBuilder.append(placeValue);  // 拼接 value
+                        }
+                    }
+                    record.setStoragePlace(vaBuilder.toString());
+                }else {
+                    String placeValue = SpringUtil.getBean(IDictApi.class).getDictLabel(record.getStoragePlace(), "storage_place", "");
+                    record.setStoragePlace(placeValue);
+                }
 
+            }
+        }
 
         return list;
     }
@@ -168,6 +188,28 @@ public class ZsReportArchieveService {
         }
         IPage<ZsReportArchieveExport> list = reportArchieveMapper.exportList(page,queryWrapper);
 
+        for (ZsReportArchieveExport record : list.getRecords()) {
+            if (StringUtils.isNotBlank(record.getStoragePlace())){
+                if (record.getStoragePlace().contains(",")){
+                    String[] split = record.getStoragePlace().split(",");
+                    StringBuilder vaBuilder = new StringBuilder();
+                    for (String s : split) {
+                        String placeValue = SpringUtil.getBean(IDictApi.class).getDictLabel(s, "storage_place", "");
+                        if (StringUtils.isNotBlank(placeValue)) {
+                            if (vaBuilder.length() > 0) {
+                                vaBuilder.append(",");  // 用逗号分隔每个拼接的值
+                            }
+                            vaBuilder.append(placeValue);  // 拼接 label
+                        }
+                    }
+                    record.setStoragePlace(vaBuilder.toString());
+                }else {
+                    String placeValue = SpringUtil.getBean(IDictApi.class).getDictLabel(record.getStoragePlace(), "storage_place", "");
+                    record.setStoragePlace(placeValue);
+                }
+
+            }
+        }
 
         return list;
 
@@ -207,49 +249,128 @@ public class ZsReportArchieveService {
         }
         //将数据进行保存
         if (CollectionUtils.isNotEmpty(arrayList)){
-            for (ZsReportArchieveExport reportArchieveDTO : arrayList) {
-                add(reportArchieveDTO);
+            List<ZsReportArchieve> zsReportArchieves = createZsReportArchieve(arrayList);
+
+            if (CollectionUtils.isNotEmpty(zsReportArchieves)){
+                // 每次最多插入 100 条数据
+                int batchSize = 100;
+                int totalSize = zsReportArchieves.size();
+
+                // 按批次处理插入
+                for (int i = 0; i < totalSize; i += batchSize) {
+                    // 计算当前批次的结束位置
+                    int endIndex = Math.min(i + batchSize, totalSize);
+                    // 获取当前批次的子列表
+                    List<ZsReportArchieve> batchList = zsReportArchieves.subList(i, endIndex);
+
+                    // 执行批量插入
+                    reportArchieveMapper.insertBatch(batchList);
+                }
             }
         }
         return null;
     }
 
-    public void add(ZsReportArchieveExport reportArchieveDTO) throws Exception {
-        ZsReportArchieve zsReportArchieve = new ZsReportArchieve();
-        BeanUtils.copyProperties(reportArchieveDTO,zsReportArchieve);
-        //业务类型
-        if (StringUtils.isNotBlank(reportArchieveDTO.getBusinessType())){
-            String dictValue = SpringUtil.getBean(IDictApi.class).getDictValue(reportArchieveDTO.getBusinessType(), "business_type", "");
-            if (StringUtils.isNotBlank(dictValue)){
-                zsReportArchieve.setBusinessType(dictValue);
-            }
-        }
-        //报告文号类型
-        String reportNo = reportArchieveDTO.getReportNo();
-        String type = reportNo.substring(2, reportNo.lastIndexOf("("));
-        String noType = SpringUtil.getBean(IDictApi.class).getDictValue(type, "report_no_type", "");
-        if (StringUtils.isNotBlank(noType)){
-            zsReportArchieve.setReportNoType(noType);
-        }
-        //流水号生成
-        String currentToken = TokenProvider.getCurrentToken();
-        OfficeDTO officeDTO = reportArchieveMapper.getOfficeDTOByName("中审江苏分所");
-        String documentNo = SpringUtil.getBean ( IWorkAttachmentApi.class ).genSerialNum(officeDTO.getId(), ZsReportArchieve.BIZ_CODE,currentToken);
-        zsReportArchieve.setArchieveNo(documentNo);
-        //存放地点
-        String place = reportArchieveDTO.getStoragePlace().replace(" ", "");
-        String substring = place.substring(place.lastIndexOf("所") + 1, place.lastIndexOf("区"));
-        String placeValue = SpringUtil.getBean(IDictApi.class).getDictValue(substring, "storage_place", "");
-        zsReportArchieve.setStoragePlace(placeValue);
-        //归档接收人
-        zsReportArchieve.setArchieveResever("");
+    public List<ZsReportArchieve> createZsReportArchieve(ArrayList<ZsReportArchieveExport> reportArchieveExport) throws Exception {
+        List<ZsReportArchieve> zsReportArchieves = new ArrayList<>();
+        String businessTypeDatas = SpringUtil.getBean ( IDictApi.class ).getDictValueListMapByDict ("business_type");
+        Map<String,Object> businessTypeValueDTOs = JSON.parseObject(businessTypeDatas, new TypeReference<Map<String,Object>>() {});
+
+        String storagePlaceDatas = SpringUtil.getBean ( IDictApi.class ).getDictValueListMapByDict ("storage_place");
+        Map<String,Object> storagePlaceValueDTOs = JSON.parseObject(storagePlaceDatas, new TypeReference<Map<String,Object>>() {});
+
+        String reportNoTypeDatas = SpringUtil.getBean ( IDictApi.class ).getDictValueListMapByDict ("report_no_type");
+        Map<String,Object> reportNoTypeDTOs = JSON.parseObject(reportNoTypeDatas, new TypeReference<Map<String,Object>>() {});
 
-        String id = UUID.randomUUID().toString().replace("-", "");
-        zsReportArchieve.setId(id);
 
-        reportArchieveMapper.insert(zsReportArchieve);
+        for (ZsReportArchieveExport reportArchieveDTO : reportArchieveExport) {
+            ZsReportArchieve zsReportArchieve = new ZsReportArchieve();
+            BeanUtils.copyProperties(reportArchieveDTO,zsReportArchieve);
+            //业务类型
+            if (StringUtils.isNotBlank(reportArchieveDTO.getBusinessType())){
+                for (String key : businessTypeValueDTOs.keySet()) {
+                    if(reportArchieveDTO.getBusinessType().equals(key)){
+                        zsReportArchieve.setBusinessType(String.valueOf(businessTypeValueDTOs.get(key)));
+                        break;
+                    }
+                }
+            }
+            //报告文号类型
+            String reportNo = reportArchieveDTO.getReportNo();
+            String type = reportNo.substring(2, reportNo.lastIndexOf("("));
+            if (StringUtils.isNotBlank(type)){
+                for (String key : reportNoTypeDTOs.keySet()) {
+                    if(type.equals(key)){
+                        zsReportArchieve.setReportNoType(String.valueOf(reportNoTypeDTOs.get(key)));
+                        break;
+                    }
+                }
+            }
+            //流水号生成
+            String currentToken = TokenProvider.getCurrentToken();
+            OfficeDTO officeDTO = reportArchieveMapper.getOfficeDTOByName("中审江苏分所");
+            String documentNo = SpringUtil.getBean ( IWorkAttachmentApi.class ).genSerialNum(officeDTO.getId(), ZsReportArchieve.BIZ_CODE,currentToken);
+            zsReportArchieve.setArchieveNo(documentNo);
+            //存放地点
+            String place = reportArchieveDTO.getStoragePlace().replace(" ", "");
+            if (place.contains("江苏分所") && place.contains("区")){
+                String substring = place.substring(place.lastIndexOf("所") + 1, place.lastIndexOf("区"));
+                String placeValue = "";
+                //可能会存在多个区
+                if (substring.contains("区")){
+                    String[] split = substring.split("区");
+                    StringBuilder vaBuilder = new StringBuilder();
+                    for (String s : split) {
+                        String value = "";
+                        if (StringUtils.isNotBlank(s)){
+                            for (String key : storagePlaceValueDTOs.keySet()) {
+                                if(s.equals(key)){
+                                    value = String.valueOf(storagePlaceValueDTOs.get(key));
+                                    break;
+                                }
+                            }
+                        }
+                        if (StringUtils.isNotBlank(value)) {
+                            if (vaBuilder.length() > 0) {
+                                vaBuilder.append(",");  // 用逗号分隔每个拼接的值
+                            }
+                            vaBuilder.append(value);  // 拼接 value
+                        }
+                    }
+                    placeValue = vaBuilder.toString();
+                }else {
+                    if (StringUtils.isNotBlank(substring)){
+                        for (String key : storagePlaceValueDTOs.keySet()) {
+                            if(substring.equals(key)){
+                                placeValue = String.valueOf(storagePlaceValueDTOs.get(key));
+                                break;
+                            }
+                        }
+                    }
+                }
+                zsReportArchieve.setStoragePlace(placeValue);
+            }else {
+                zsReportArchieve.setStoragePlace("");
+            }
+
+            //归档接收人
+            zsReportArchieve.setArchieveResever("");
 
+            String id = UUID.randomUUID().toString().replace("-", "");
+            zsReportArchieve.setId(id);
+            zsReportArchieve.setCreateTime(new Date());
+            zsReportArchieve.setUpdateTime(new Date());
+            UserDTO userDTO = SpringUtil.getBean(IUserApi.class).getByToken(TokenProvider.getCurrentToken());
+            zsReportArchieve.setCreateById(userDTO.getId());
+            zsReportArchieve.setUpdateById(userDTO.getId());
+            zsReportArchieve.setStatus("0");
+            zsReportArchieve.setTenantId(userDTO.getTenantDTO().getId());
+            zsReportArchieve.setDelFlag(0);
+            zsReportArchieves.add(zsReportArchieve);
+        }
 
+//        reportArchieveMapper.insert(zsReportArchieve);
+        return zsReportArchieves;
     }
 
 
@@ -260,6 +381,18 @@ public class ZsReportArchieveService {
      */
     public ZsReportArchieve findById(String id) {
         ZsReportArchieve zsReportArchieve = reportArchieveMapper.findById(id);
+        ArrayList<String> strings = new ArrayList<>();
+        if (ObjectUtil.isNotEmpty(zsReportArchieve)){
+            if (StringUtils.isNotBlank(zsReportArchieve.getStoragePlace())){
+                if (zsReportArchieve.getStoragePlace().contains(",")){
+                    String[] split = zsReportArchieve.getStoragePlace().split(",");
+                    for (String s : split) {
+                        strings.add(s);
+                    }
+                }
+            }
+        }
+        zsReportArchieve.setStoragePlaces(strings);
         return zsReportArchieve;
     }
 
@@ -349,6 +482,9 @@ public class ZsReportArchieveService {
         UserDTO userDTO = SpringUtil.getBean(IUserApi.class).getByToken(TokenProvider.getCurrentToken());
         zsReportArchieve.setArchieveResever(userDTO.getId());
         zsReportArchieve.setStatus("1");
+        //将存放区域转化
+        String result = String.join(",", reportArchieve.getStoragePlaces());
+        zsReportArchieve.setStoragePlace(result);
         reportArchieveMapper.updateById(zsReportArchieve);
         return "操作成功";
     }

BIN
jeeplus-modules/jeeplus-centrecareful/src/main/resources/dot/报告归档导入模板.xls


+ 12 - 0
jeeplus-modules/jeeplus-system/src/main/java/com/jeeplus/sys/feign/DictApiImpl.java

@@ -41,4 +41,16 @@ public class DictApiImpl implements IDictApi {
         }
         return JSON.toJSONString(resultMap);
     }
+
+    @Override
+    public String getDictValueListMapByDict(String dict) {
+        List<DictValueDTO> dictValueDTOS = DictUtils.getDictMap().get(dict);
+        Map<String,Object> resultMap = new HashMap<>();
+        for (DictValueDTO dictValueDTO : dictValueDTOS) {
+            if(StringUtils.isNotBlank(dictValueDTO.getLabel()) && StringUtils.isNotBlank(dictValueDTO.getValue())){
+                resultMap.put(dictValueDTO.getLabel(),dictValueDTO.getValue());
+            }
+        }
+        return JSON.toJSONString(resultMap);
+    }
 }