Pārlūkot izejas kodu

征拆结算重复key与单个key数据填充

qianxb 1 gadu atpakaļ
vecāks
revīzija
30d872dd11

+ 22 - 0
blade-service-api/blade-land-api/src/main/java/org/springblade/land/vo/ClearingAgreementInfoVO.java

@@ -0,0 +1,22 @@
+package org.springblade.land.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.land.entity.ClearingAgreementInfo;
+import org.springblade.system.user.entity.User;
+
+import java.util.List;
+
+/**
+ * @Param
+ * @Author wangwl
+ * @Date 2023/10/12 16:59
+ **/
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ClearingAgreementInfoVO extends ClearingAgreementInfo {
+
+    @ApiModelProperty(value = "用户集合")
+    private String typeValue;
+}

+ 3 - 2
blade-service/blade-land/src/main/java/org/springblade/land/controller/ClearingAgreementInfoController.java

@@ -12,6 +12,7 @@ import org.springblade.land.entity.ClearingAgreementInfo;
 import org.springblade.land.entity.CompensationInfo;
 import org.springblade.land.service.IClearingAgreementInfoService;
 import org.springblade.land.vo.AreaPictureVO;
+import org.springblade.land.vo.ClearingAgreementInfoVO;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
@@ -65,8 +66,8 @@ public class ClearingAgreementInfoController {
             @ApiImplicitParam(name = "type", value = "协议类型1征地补偿2坟地补偿3专项设施", required = false),
             @ApiImplicitParam(name = "periodId", value = "结算期", required = false)
     })
-    public R<IPage<ClearingAgreementInfo>> page(Query query, ClearingAgreementInfo info)  {
-        IPage<ClearingAgreementInfo> page = infoService.page(query, info);
+    public R<IPage<ClearingAgreementInfoVO>> page(Query query, ClearingAgreementInfo info)  {
+        IPage<ClearingAgreementInfoVO> page = infoService.page(query, info);
         return R.data(page);
     }
 

+ 2 - 1
blade-service/blade-land/src/main/java/org/springblade/land/mapper/ClearingAgreementInfoMapper.java

@@ -24,6 +24,7 @@ import org.springblade.land.entity.AgreementLinkTable;
 import org.springblade.land.entity.ClearingAgreementInfo;
 import org.springblade.land.entity.CompensationInfo;
 import org.springblade.land.entity.SettlementInterval;
+import org.springblade.land.vo.ClearingAgreementInfoVO;
 import org.springblade.manager.entity.WbsFormElement;
 
 import java.util.List;
@@ -38,7 +39,7 @@ import java.util.List;
 public interface ClearingAgreementInfoMapper extends BaseMapper<ClearingAgreementInfo> {
 
 
-    IPage<ClearingAgreementInfo> page(IPage<ClearingAgreementInfo> iPage,@Param("info") ClearingAgreementInfo info);
+    IPage<ClearingAgreementInfoVO> page(IPage<ClearingAgreementInfo> iPage, @Param("info") ClearingAgreementInfo info);
 
     List<WbsFormElement> getTableElement(@Param("tableId") Long tableId);
 

+ 14 - 11
blade-service/blade-land/src/main/java/org/springblade/land/mapper/ClearingAgreementInfoMapper.xml

@@ -2,17 +2,7 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.springblade.land.mapper.ClearingAgreementInfoMapper">
 
-    <select id="page" resultType="org.springblade.land.entity.ClearingAgreementInfo">
-        select * from l_clearing_agreement_info
-        where project_id = #{info.projectId} and is_deleted = 0
-        <if test="info.type != null and info.type != ''">
-            and `type` = #{info.type}
-        </if>
-        and area_id in (select id from l_region_tree_info where is_deleted = 0 and (id = #{info.areaId} or ancestors like CONCAT(CONCAT('%', #{info.areaId}), '%')))
-        <if test="info.name != null and info.name != ''">
-            and name like CONCAT(CONCAT('%', #{info.name}), '%')
-        </if>
-    </select>
+
     <select id="getTableElement" resultType="org.springblade.manager.entity.WbsFormElement">
         select * from m_wbs_form_element
         where is_deleted = 0 and f_id = #{tableId} and dynamic_dict > 0
@@ -24,4 +14,17 @@
         </foreach>
         and table_name like CONCAT(CONCAT('%', #{tableName}), '%')
     </select>
+    <select id="page" resultType="org.springblade.land.vo.ClearingAgreementInfoVO">
+        select *,
+               (SELECT dict_value  from blade_dict WHERE code = 'land_agreement_type' and dict_key = lcai.type) as typeValue
+        from l_clearing_agreement_info lcai
+        where project_id = #{info.projectId} and is_deleted = 0
+        <if test="info.type != null and info.type != ''">
+            and `type` = #{info.type}
+        </if>
+        and area_id in (select id from l_region_tree_info where is_deleted = 0 and (id = #{info.areaId} or ancestors like CONCAT(CONCAT('%', #{info.areaId}), '%')))
+        <if test="info.name != null and info.name != ''">
+            and name like CONCAT(CONCAT('%', #{info.name}), '%')
+        </if>
+    </select>
 </mapper>

+ 2 - 1
blade-service/blade-land/src/main/java/org/springblade/land/service/IClearingAgreementInfoService.java

@@ -26,6 +26,7 @@ import org.springblade.land.entity.AgreementLinkTable;
 import org.springblade.land.entity.ClearingAgreementInfo;
 import org.springblade.land.entity.SettlementInterval;
 import org.springblade.land.vo.AreaPictureVO;
+import org.springblade.land.vo.ClearingAgreementInfoVO;
 
 import java.util.List;
 
@@ -41,7 +42,7 @@ public interface IClearingAgreementInfoService extends BaseService<ClearingAgree
 
     void add(ClearingAgreementInfo info) throws Exception;
 
-    IPage<ClearingAgreementInfo> page(Query query, ClearingAgreementInfo info);
+    IPage<ClearingAgreementInfoVO> page(Query query, ClearingAgreementInfo info);
 
     List<AgreementLinkTable> getFileList(Long id);
 

+ 45 - 40
blade-service/blade-land/src/main/java/org/springblade/land/service/impl/ClearingAgreementInfoServiceImpl.java

@@ -26,6 +26,7 @@ import org.springblade.land.mapper.SettlementIntervalMapper;
 import org.springblade.land.service.*;
 import org.springblade.land.utils.FileUtils;
 import org.springblade.land.vo.AreaPictureVO;
+import org.springblade.land.vo.ClearingAgreementInfoVO;
 import org.springblade.land.vo.TableDataVO;
 import org.springblade.manager.entity.WbsFormElement;
 import org.springblade.manager.entity.WbsTreePrivate;
@@ -92,7 +93,6 @@ public class ClearingAgreementInfoServiceImpl extends BaseServiceImpl<ClearingAg
         } else {
             //存在则直接获取所有结算表单
             linkTables = linkTableService.getByAgreementId(info.getId());
-            //删除已经生成的单个pdf(待定)
             //修改则先还原之前补偿协议的状态
             ClearingAgreementInfo agreementInfo = this.getById(info.getId());
             compensationInfoService.batchUpdateStatus(Func.toLongList(agreementInfo.getAgreementIds()), 0);
@@ -194,47 +194,52 @@ public class ClearingAgreementInfoServiceImpl extends BaseServiceImpl<ClearingAg
                 }
                 allKey.stream().forEach(l->l.setDictValue(overMap.get(l.getDictKey())));
                 Map<Integer, List<TableDataVO>> listMap2 = allKey.stream().collect(Collectors.groupingBy(TableDataVO::getDictValue));
+                //重复key的字典
+                List<Integer> batchKey = Arrays.asList(4, 5, 10, 11);
+                //统计补偿总和
+                BigDecimal big = new BigDecimal(0);
                 for (Integer dict : elementMap.keySet()) {
-//                    switch (dict){
-//                        case 99:
-//                            //当天日期
-//                            break;
-//                        case 4:
-                            //户主姓名
-                            //取出数据集合
-                            List<TableDataVO> voList = listMap.get(dict);
-                            //重置数据顺序,先按表单分组,再按照行顺序重新装入集合
-                            Map<Long, List<TableDataVO>> map = voList.stream().collect(Collectors.groupingBy(TableDataVO::getPKeyId));
-                            List<Long> collect = map.keySet().stream().sorted().collect(Collectors.toList());
-                            List<Object> data = new ArrayList<>();
-                            for (Long aLong : collect) {
-                                List<TableDataVO> vos = map.get(aLong);
-                                data.addAll(vos.stream().sorted(Comparator.comparing(TableDataVO::getDictRow)).map(l->l.getTabVal()).collect(Collectors.toList()));
+                    if (batchKey.contains(dict)) {
+                        //取出数据集合
+                        List<TableDataVO> voList = listMap.get(dict);
+                        //重置数据顺序,先按表单分组,再按照行顺序重新装入集合
+                        Map<Long, List<TableDataVO>> map = voList.stream().collect(Collectors.groupingBy(TableDataVO::getPKeyId));
+                        List<Long> collect = map.keySet().stream().sorted().collect(Collectors.toList());
+                        List<Object> data = new ArrayList<>();
+                        for (Long aLong : collect) {
+                            List<TableDataVO> vos = map.get(aLong);
+                            data.addAll(vos.stream().sorted(Comparator.comparing(TableDataVO::getDictRow)).map(l -> l.getTabVal()).collect(Collectors.toList()));
+                        }
+                        //取出位置集合
+                        List<TableDataVO> voList2 = listMap2.get(dict);
+                        List<String> keys = new ArrayList<>();
+                        keys.addAll(voList2.stream().sorted(Comparator.comparing(TableDataVO::getDictRow)).map(l -> l.getTabKey()).collect(Collectors.toList()));
+                        //重置key位置,按照行从小到大
+                        //!!暂时没判断多页,到时候要分隔集合
+                        for (int i = 0; i < data.size(); i++) {
+                            DataInfo.put(keys.get(i), data.get(i));
+                            if (dict == 5) {
+                                big = big.add(new BigDecimal(data.get(i) + ""));
                             }
-                            //取出位置集合
-                            List<TableDataVO> voList2 = listMap2.get(dict);
-                            List<String> keys = new ArrayList<>();
-                            keys.addAll(voList2.stream().sorted(Comparator.comparing(TableDataVO::getDictRow)).map(l->l.getTabKey()).collect(Collectors.toList()));
-                            //重置key位置,按照行从小到大
-                            //!!暂时没判断多页,到时候要分隔集合
-                            for (int i = 0; i < data.size(); i++) {
-                                DataInfo.put(keys.get(i),data.get(i));
-                            }
-//                            break;
-//                        case 10:
-//                            //身份证号
-//
-//                            break;
-//                        case 11:
-//                            //银行卡号
-//
-//                            break;
-//                        case 5:
-//                            //补偿总计
-//
-//                            break;
-//                    }
+                        }
+                    }
+                }
+                for (Integer dict : elementMap.keySet()) {
+                    if (!batchKey.contains(dict)) {
+                        TableDataVO vo = listMap2.get(dict).get(0);
+                        switch (dict) {
+                            case 20:
+                                //合计补偿总计
+                                DataInfo.put(vo.getTabKey(), big);
+                                break;
+                            case 300:
+                                //统计员
+                                DataInfo.put(vo.getTabKey(), "王文");
+                                break;
+                        }
+                    }
                 }
+
             }
             compensationInfoService.getBussPdfInfo(linkTable.getId(), DataInfo);
         } catch (Exception e) {
@@ -362,7 +367,7 @@ public class ClearingAgreementInfoServiceImpl extends BaseServiceImpl<ClearingAg
      * @return
      */
     @Override
-    public IPage<ClearingAgreementInfo> page(Query query, ClearingAgreementInfo info) {
+    public IPage<ClearingAgreementInfoVO> page(Query query, ClearingAgreementInfo info) {
         IPage<ClearingAgreementInfo> iPage = new Page<>(query.getCurrent(), query.getSize());
         return baseMapper.page(iPage, info);
     }

+ 5 - 5
blade-service/blade-land/src/main/java/org/springblade/land/service/impl/CompensationInfoServiceImpl.java

@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.google.common.base.Joiner;
 import lombok.AllArgsConstructor;
 import org.apache.commons.lang.StringUtils;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
@@ -258,7 +259,7 @@ public class CompensationInfoServiceImpl extends BaseServiceImpl<CompensationInf
         //总面积
         BigDecimal a4 = new BigDecimal(0);
         //户主姓名(协议名称)
-        StringBuilder str = new StringBuilder("");
+        Set<String> str = new HashSet<>();
         CompensationInfo info = new CompensationInfo();
         info.setId(id);
         //查看当前表单是否配置统计值
@@ -347,7 +348,7 @@ public class CompensationInfoServiceImpl extends BaseServiceImpl<CompensationInf
                                 } else if (dict.equals(3)) {
                                     b3 = b3.add(vos.stream().map(l -> new BigDecimal(l.getTabVal())).reduce(BigDecimal.valueOf(0), BigDecimal::add));
                                 } else if (dict.equals(4)) {
-                                    str.append(StringUtils.join(vos.stream().map(l -> l.getTabVal()).collect(Collectors.toList()), "、") + "、");
+                                    str.add(StringUtils.join(vos.stream().map(l -> l.getTabVal()).collect(Collectors.toList()), "、") + "、");
                                 } else if (dict.equals(5)) {
                                     b4 = b4.add(vos.stream().map(l -> new BigDecimal(l.getTabVal())).reduce(BigDecimal.valueOf(0), BigDecimal::add));
                                 }
@@ -358,9 +359,8 @@ public class CompensationInfoServiceImpl extends BaseServiceImpl<CompensationInf
                     }
                 }
                 //设置名称
-                String names = str.toString();
-                if (StringUtils.isNotBlank(names)){
-                    info.setName(names.substring(0, names.length() - 1));
+                if (str.size() > 0){
+                    info.setName(Joiner.on(",").join(str));
                 }else {
                     info.setName("未找到用户名称");
                 }