Prechádzať zdrojové kódy

Merge branch 'master' of http://47.108.172.52:3000/dayou/item-management-1phase

GouGengquan 1 mesiac pred
rodič
commit
7a30cd3aeb
25 zmenil súbory, kde vykonal 465 pridanie a 17 odobranie
  1. 0 1
      biz-base/src/main/java/com/dayou/controller/PersonalController.java
  2. 31 0
      biz-base/src/main/java/com/dayou/controller/PersonalSceneController.java
  3. 2 2
      biz-base/src/main/resources/application-test.yml
  4. BIN
      biz-base/src/main/resources/docs/personal/gd_simple_pre_asset.docx
  5. BIN
      biz-base/src/main/resources/docs/personal/house_simple_statement.docx
  6. BIN
      biz-base/src/main/resources/docs/personal/immovable_simple_statement.docx
  7. BIN
      biz-base/src/main/resources/docs/personal/land_simple_statement.docx
  8. 41 0
      common/src/main/java/com/dayou/utils/FileUploadUtils.java
  9. 204 1
      common/src/main/java/com/dayou/utils/POIWordUtil.java
  10. 4 1
      dao/src/main/resources/mapper/CommissionDeclareMapper.xml
  11. 1 0
      dao/src/main/resources/mapper/DepartmentMapper.xml
  12. 1 0
      dao/src/main/resources/mapper/MajorMapper.xml
  13. 1 0
      domain/src/main/java/com/dayou/dto/NameUrlDTO.java
  14. 23 0
      domain/src/main/java/com/dayou/dto/PersonalSceneDTO.java
  15. 1 0
      domain/src/main/java/com/dayou/entity/Personal.java
  16. 8 0
      domain/src/main/java/com/dayou/entity/PersonalScene.java
  17. 3 0
      domain/src/main/java/com/dayou/enums/CertificateEnum.java
  18. 5 0
      domain/src/main/java/com/dayou/vo/CommissionDeclareDetailVO.java
  19. 2 0
      domain/src/main/java/com/dayou/vo/PersonalSellingAbilityVO.java
  20. 5 0
      service/src/main/java/com/dayou/service/IPersonalSceneService.java
  21. 1 0
      service/src/main/java/com/dayou/service/IPersonalService.java
  22. 13 0
      service/src/main/java/com/dayou/service/impl/MajorProductionAllotServiceImpl.java
  23. 26 10
      service/src/main/java/com/dayou/service/impl/PersonalProductionServiceImpl.java
  24. 91 2
      service/src/main/java/com/dayou/service/impl/PersonalSceneServiceImpl.java
  25. 2 0
      service/src/main/java/com/dayou/service/impl/PersonalServiceImpl.java

+ 0 - 1
biz-base/src/main/java/com/dayou/controller/PersonalController.java

@@ -232,7 +232,6 @@ public class PersonalController extends BaseController {
         return RestResponse.data(ret);
     }
 
-
 }
 
 

+ 31 - 0
biz-base/src/main/java/com/dayou/controller/PersonalSceneController.java

@@ -1,7 +1,9 @@
 package com.dayou.controller;
 
+import com.dayou.annotation.IgnoreAuth;
 import com.dayou.dto.TaskRecordDTO;
 import com.dayou.entity.Personal;
+import com.dayou.utils.FileUploadUtils;
 import com.dayou.workflow.annotation.FinishTask;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import lombok.extern.slf4j.Slf4j;
@@ -19,13 +21,19 @@ import com.dayou.utils.ConvertUtil;
 import com.dayou.utils.HttpKit;
 import com.dayou.exception.ErrorCode;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import org.springframework.http.MediaType;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.validation.Valid;
 
+import static com.dayou.exception.ErrorCode.DEFAULTERROR;
+import static com.dayou.utils.MimeTypeUtils.IMAGE_EXTENSION;
+
 /**
  * 个贷实勘表
  *
@@ -94,5 +102,28 @@ public class PersonalSceneController extends BaseController {
         return RestResponse.data(ret);
     }
 
+    @IgnoreAuth
+    @PostMapping("/upload/{type}")
+    public RestResponse upload(@PathVariable("type")Long type, MultipartFile file) {
+        try {
+            // 上传文件路径
+            String filePath = dfsConfig.getPath();
+            // 上传并返回新文件名称
+            String fileName = null;
+            fileName = FileUploadUtils.uploadImage(filePath, file,IMAGE_EXTENSION,null);
+            String url = dfsConfig.getDomain() + fileName;
+            Map map = new HashMap();
+            map.put("fileName", fileName);
+            map.put("url", url);
+            map.put("type", type);
+            return RestResponse.data(map);
+        } catch (Exception e) {
+            log.error("upload error", e);
+            ErrorCode.throwBusinessException(DEFAULTERROR);
+        }
+
+        return RestResponse.error();
+    }
+
 }
 

+ 2 - 2
biz-base/src/main/resources/application-test.yml

@@ -38,8 +38,8 @@ spring:
 
 
 dfs:
-  path: /opt/test
-  domain: /test
+  path: /opt/dfs
+  domain: /dfs
   domainName: https://kps.scdayou.com/dfs
   code: /code
   domainRoot: http://kps.scdayou.com/admin

BIN
biz-base/src/main/resources/docs/personal/gd_simple_pre_asset.docx


BIN
biz-base/src/main/resources/docs/personal/house_simple_statement.docx


BIN
biz-base/src/main/resources/docs/personal/immovable_simple_statement.docx


BIN
biz-base/src/main/resources/docs/personal/land_simple_statement.docx


+ 41 - 0
common/src/main/java/com/dayou/utils/FileUploadUtils.java

@@ -375,4 +375,45 @@ public class FileUploadUtils {
         return item;
     }
 
+    /**
+     * 文件图片并裁剪
+     *
+     * @param baseDir 相对应用的基目录
+     * @param file    上传的文件
+     * @return 返回上传成功的文件名
+     * @throws FileSizeLimitExceededException       如果超出最大大小
+     * @throws FileNameLengthLimitExceededException 文件名太长
+     * @throws IOException                          比如读写文件出错时
+     * @throws InvalidExtensionException            文件校验异常
+     */
+    public static final String uploadImage(String baseDir, MultipartFile file, String[] allowedExtension, String assignName)
+            throws FileSizeLimitExceededException, IOException, FileNameLengthLimitExceededException,
+            InvalidExtensionException {
+        int fileNamelength = file.getOriginalFilename().length();
+        if (fileNamelength > FileUploadUtils.DEFAULT_FILE_NAME_LENGTH) {
+            throw new FileNameLengthLimitExceededException(FileUploadUtils.DEFAULT_FILE_NAME_LENGTH);
+        }
+        assertAllowed(file, allowedExtension);
+        String fileName = extractFilename(file, assignName);
+        fileName = createDateIndexFileName(fileName);
+        File desc = getAbsoluteFile(baseDir, fileName);
+        try {
+            BufferedImage bufferedImage = ImageIO.read(file.getInputStream()); // 通过MultipartFile得到InputStream
+            //从而得到BufferedImage
+            if (bufferedImage != null) {
+                //不能使用bufferedImage 否则会出现翻转
+                Thumbnails.of(file.getInputStream())
+                        .scale(0.5d)
+                        .toFile(desc.getAbsolutePath());
+            }
+            // 省略逻辑判断
+        } catch (Exception e) {
+            // 省略异常操作
+            log.error("图片压缩失败", e);
+        }
+        String pathFileName = fileName;
+        return pathFileName;
+
+    }
+
 }

+ 204 - 1
common/src/main/java/com/dayou/utils/POIWordUtil.java

@@ -1,9 +1,11 @@
 package com.dayou.utils;
 
+import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.StrUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
 import org.apache.poi.util.Units;
+import org.apache.poi.xwpf.model.XWPFHeaderFooterPolicy;
 import org.apache.poi.xwpf.usermodel.*;
 
 import java.io.FileInputStream;
@@ -73,7 +75,175 @@ public class POIWordUtil {
                                 } catch (Exception e) {
                                     log.error("validateCode insert error!!!");
                                 }
-                            }else{
+
+                            }
+                            else if("${mapLocation}".equals(run.toString())){
+                                String path = (String) textMap.get("mapLocation");
+                                try {
+                                    run.setText("",0);
+                                    XWPFPicture picture = run.addPicture(new FileInputStream("/opt" + path), XWPFDocument.PICTURE_TYPE_PNG, "", Units.toEMU(400), Units.toEMU(500));
+                                    picture.getCTPicture().getSpPr().getXfrm().getOff().setY(Units.toEMU(120));
+                                    paragraph.setAlignment(ParagraphAlignment.HIGH_KASHIDA);
+                                } catch (Exception e) {
+                                    log.error("validateCode insert error!!!");
+                                }
+                            }
+                            else if("${sceneImage1}".equals(run.toString())){
+                                String path = (String) textMap.get("sceneImage1");
+                                try {
+                                    run.setText("",0);
+                                    XWPFPicture picture = run.addPicture(new FileInputStream("/opt" + path), XWPFDocument.PICTURE_TYPE_PNG, "", Units.toEMU(205), Units.toEMU(320));
+                                    picture.getCTPicture().getSpPr().getXfrm().getOff().setY(Units.toEMU(120));
+                                    paragraph.setAlignment(ParagraphAlignment.HIGH_KASHIDA);
+                                } catch (Exception e) {
+                                    log.error("validateCode insert error!!!");
+                                }
+                            }
+                            else if("${sceneImage2}".equals(run.toString())){
+                                String path = (String) textMap.get("sceneImage2");
+                                try {
+                                    run.setText("",0);
+                                    XWPFPicture picture = run.addPicture(new FileInputStream("/opt" + path), XWPFDocument.PICTURE_TYPE_PNG, "", Units.toEMU(106), Units.toEMU(80));
+                                    picture.getCTPicture().getSpPr().getXfrm().getOff().setY(Units.toEMU(120));
+                                    paragraph.setAlignment(ParagraphAlignment.HIGH_KASHIDA);
+                                } catch (Exception e) {
+                                    log.error("validateCode insert error!!!");
+                                }
+                            }
+                            else if("${sceneImage3}".equals(run.toString())){
+                                String path = (String) textMap.get("sceneImage3");
+                                try {
+                                    run.setText("",0);
+                                    XWPFPicture picture = run.addPicture(new FileInputStream("/opt" + path), XWPFDocument.PICTURE_TYPE_PNG, "", Units.toEMU(106), Units.toEMU(80));
+                                    picture.getCTPicture().getSpPr().getXfrm().getOff().setY(Units.toEMU(120));
+                                    paragraph.setAlignment(ParagraphAlignment.HIGH_KASHIDA);
+                                } catch (Exception e) {
+                                    log.error("validateCode insert error!!!");
+                                }
+                            }
+                            else if("${sceneImage4}".equals(run.toString())){
+                                String path = (String) textMap.get("sceneImage4");
+                                try {
+                                    run.setText("",0);
+                                    XWPFPicture picture = run.addPicture(new FileInputStream("/opt" + path), XWPFDocument.PICTURE_TYPE_PNG, "", Units.toEMU(106), Units.toEMU(80));
+                                    picture.getCTPicture().getSpPr().getXfrm().getOff().setY(Units.toEMU(120));
+                                    paragraph.setAlignment(ParagraphAlignment.HIGH_KASHIDA);
+                                } catch (Exception e) {
+                                    log.error("validateCode insert error!!!");
+                                }
+                            }
+                            else if("${sceneImage5}".equals(run.toString())){
+                                String path = (String) textMap.get("sceneImage5");
+                                try {
+                                    run.setText("",0);
+                                    XWPFPicture picture = run.addPicture(new FileInputStream("/opt" + path), XWPFDocument.PICTURE_TYPE_PNG, "", Units.toEMU(106), Units.toEMU(80));
+                                    picture.getCTPicture().getSpPr().getXfrm().getOff().setY(Units.toEMU(120));
+                                    paragraph.setAlignment(ParagraphAlignment.HIGH_KASHIDA);
+                                } catch (Exception e) {
+                                    log.error("validateCode insert error!!!");
+                                }
+                            }
+                            else if("${sceneImage6}".equals(run.toString())){
+                                String path = (String) textMap.get("sceneImage6");
+                                try {
+                                    run.setText("",0);
+                                    XWPFPicture picture = run.addPicture(new FileInputStream("/opt" + path), XWPFDocument.PICTURE_TYPE_PNG, "", Units.toEMU(106), Units.toEMU(80));
+                                    picture.getCTPicture().getSpPr().getXfrm().getOff().setY(Units.toEMU(120));
+                                    paragraph.setAlignment(ParagraphAlignment.HIGH_KASHIDA);
+                                } catch (Exception e) {
+                                    log.error("validateCode insert error!!!");
+                                }
+                            }
+                            else if("${sceneImage7}".equals(run.toString())){
+                                String path = (String) textMap.get("sceneImage7");
+                                try {
+                                    run.setText("",0);
+                                    XWPFPicture picture = run.addPicture(new FileInputStream("/opt" + path), XWPFDocument.PICTURE_TYPE_PNG, "", Units.toEMU(106), Units.toEMU(80));
+                                    picture.getCTPicture().getSpPr().getXfrm().getOff().setY(Units.toEMU(120));
+                                    paragraph.setAlignment(ParagraphAlignment.HIGH_KASHIDA);
+                                } catch (Exception e) {
+                                    log.error("validateCode insert error!!!");
+                                }
+                            }
+                            else if("${sceneImage7}".equals(run.toString())){
+                                String path = (String) textMap.get("sceneImage7");
+                                try {
+                                    run.setText("",0);
+                                    XWPFPicture picture = run.addPicture(new FileInputStream("/opt" + path), XWPFDocument.PICTURE_TYPE_PNG, "", Units.toEMU(106), Units.toEMU(80));
+                                    picture.getCTPicture().getSpPr().getXfrm().getOff().setY(Units.toEMU(120));
+                                    paragraph.setAlignment(ParagraphAlignment.HIGH_KASHIDA);
+                                } catch (Exception e) {
+                                    log.error("validateCode insert error!!!");
+                                }
+                            }
+                            else if("${sceneImage8}".equals(run.toString())){
+                                String path = (String) textMap.get("sceneImage8");
+                                try {
+                                    run.setText("",0);
+                                    XWPFPicture picture = run.addPicture(new FileInputStream("/opt" + path), XWPFDocument.PICTURE_TYPE_PNG, "", Units.toEMU(142), Units.toEMU(80));
+                                    picture.getCTPicture().getSpPr().getXfrm().getOff().setY(Units.toEMU(120));
+                                    paragraph.setAlignment(ParagraphAlignment.HIGH_KASHIDA);
+                                } catch (Exception e) {
+                                    log.error("validateCode insert error!!!");
+                                }
+                            }
+                            else if("${sceneImage9}".equals(run.toString())){
+                                String path = (String) textMap.get("sceneImage9");
+                                try {
+                                    run.setText("",0);
+                                    XWPFPicture picture = run.addPicture(new FileInputStream("/opt" + path), XWPFDocument.PICTURE_TYPE_PNG, "", Units.toEMU(142), Units.toEMU(80));
+                                    picture.getCTPicture().getSpPr().getXfrm().getOff().setY(Units.toEMU(120));
+                                    paragraph.setAlignment(ParagraphAlignment.HIGH_KASHIDA);
+                                } catch (Exception e) {
+                                    log.error("validateCode insert error!!!");
+                                }
+                            }
+                            else if("${sceneImage10}".equals(run.toString())){
+                                String path = (String) textMap.get("sceneImage10");
+                                try {
+                                    run.setText("",0);
+                                    XWPFPicture picture = run.addPicture(new FileInputStream("/opt" + path), XWPFDocument.PICTURE_TYPE_PNG, "", Units.toEMU(142), Units.toEMU(80));
+                                    picture.getCTPicture().getSpPr().getXfrm().getOff().setY(Units.toEMU(120));
+                                    paragraph.setAlignment(ParagraphAlignment.HIGH_KASHIDA);
+                                } catch (Exception e) {
+                                    log.error("validateCode insert error!!!");
+                                }
+                            }
+                            else if("${sceneImage11}".equals(run.toString())){
+                                String path = (String) textMap.get("sceneImage11");
+                                try {
+                                    run.setText("",0);
+                                    XWPFPicture picture = run.addPicture(new FileInputStream("/opt" + path), XWPFDocument.PICTURE_TYPE_PNG, "", Units.toEMU(142), Units.toEMU(80));
+                                    picture.getCTPicture().getSpPr().getXfrm().getOff().setY(Units.toEMU(120));
+                                    paragraph.setAlignment(ParagraphAlignment.HIGH_KASHIDA);
+                                } catch (Exception e) {
+                                    log.error("validateCode insert error!!!");
+                                }
+                            }
+                            else if("${sceneImage12}".equals(run.toString())){
+                                String path = (String) textMap.get("sceneImage12");
+                                try {
+                                    run.setText("",0);
+                                    XWPFPicture picture = run.addPicture(new FileInputStream("/opt" + path), XWPFDocument.PICTURE_TYPE_PNG, "", Units.toEMU(142), Units.toEMU(80));
+                                    picture.getCTPicture().getSpPr().getXfrm().getOff().setY(Units.toEMU(120));
+                                    paragraph.setAlignment(ParagraphAlignment.HIGH_KASHIDA);
+                                } catch (Exception e) {
+                                    log.error("validateCode insert error!!!");
+                                }
+                            }
+                            else if("${sceneImage13}".equals(run.toString())){
+                                String path = (String) textMap.get("sceneImage13");
+                                try {
+                                    run.setText("",0);
+                                    XWPFPicture picture = run.addPicture(new FileInputStream("/opt" + path), XWPFDocument.PICTURE_TYPE_PNG, "", Units.toEMU(142), Units.toEMU(80));
+                                    picture.getCTPicture().getSpPr().getXfrm().getOff().setY(Units.toEMU(120));
+                                    paragraph.setAlignment(ParagraphAlignment.HIGH_KASHIDA);
+                                } catch (Exception e) {
+                                    log.error("validateCode insert error!!!");
+                                }
+                            }
+
+                            else{
                                 run.setText(changeValue(run.toString(),textMap),0);
                             }
                         }
@@ -103,6 +273,39 @@ public class POIWordUtil {
                 }
             }
         }
+        //获取文档页眉
+        List<XWPFHeader> headers = document.getHeaderList();
+        if (CollectionUtil.isNotEmpty(headers)){
+            for (XWPFHeader header : headers) {
+                for (XWPFParagraph paragraph : header.getParagraphs()) {
+                    String text = paragraph.getText();
+                    if (StrUtil.isNotBlank(text) && text.contains("${")){
+                        List<XWPFRun> runs = paragraph.getRuns();
+                        for (XWPFRun run : runs){
+                            String textValue =  changeValue(run.toString(),textMap);
+                            run.setText(textValue,0);
+                        }
+                    }
+                }
+            }
+        }
+
+        //获取文档页脚
+        List<XWPFFooter> footers = document.getFooterList();
+        if (CollectionUtil.isNotEmpty(footers)){
+            for (XWPFFooter footer : footers) {
+                for (XWPFParagraph paragraph : footer.getParagraphs()) {
+                    String text = paragraph.getText();
+                    if (StrUtil.isNotBlank(text) && text.contains("${")){
+                        List<XWPFRun> runs = paragraph.getRuns();
+                        for (XWPFRun run : runs){
+                            String textValue =  changeValue(run.toString(),textMap);
+                            run.setText(textValue,0);
+                        }
+                    }
+                }
+            }
+        }
     }
 
     /**

+ 4 - 1
dao/src/main/resources/mapper/CommissionDeclareMapper.xml

@@ -431,7 +431,9 @@
             cd.defined_low_limit_amount,
             cd.business_type AS declareBusinessType,
             cc1.name as clientName,
-            cc2.name as clientSubName
+            cc2.name as clientSubName,
+            m.bailor,
+            u1.name as clientManager
         FROM
             commission_declare cd
                 LEFT JOIN business_commission_rate bcr ON bcr.id = cd.commission_rate_id
@@ -440,6 +442,7 @@
                 left join major m on m.id = cd.business_id
                 left join customer_company cc1 on cc1.id = m.clientele_id
                 left join customer_company cc2 on cc2.id = m.clientele_sub_id
+                left join user u1 on u1.id = m.client_manager_id
             where cd.deleted = 0 and bcr.deleted = 0 and cd.id =#{id}
     </select>
 

+ 1 - 0
dao/src/main/resources/mapper/DepartmentMapper.xml

@@ -132,6 +132,7 @@
                           AND node_id IN ( 55, 56, 57, 58, 59 ))
                   AND deleted = 0
                   AND allot_type = '轮单'
+                and created &lt; DATE_SUB(NOW(), INTERVAL 7 DAY)
                 GROUP BY
                     department_id
             ) o ON d.id = o.department_id

+ 1 - 0
dao/src/main/resources/mapper/MajorMapper.xml

@@ -782,6 +782,7 @@
                   AND node_id IN ( 55, 56, 57, 58, 59 ))
           AND deleted = 0
           AND allot_type = '轮单'
+            and created &lt;=DATE_SUB(NOW(), INTERVAL 7 DAY)
           AND department_id = #{departmentId}
     </select>
 </mapper>

+ 1 - 0
domain/src/main/java/com/dayou/dto/NameUrlDTO.java

@@ -13,4 +13,5 @@ import lombok.Data;
 public class NameUrlDTO {
     private String name;
     private String url;
+    private String uid;
 }

+ 23 - 0
domain/src/main/java/com/dayou/dto/PersonalSceneDTO.java

@@ -0,0 +1,23 @@
+package com.dayou.dto;
+
+import lombok.Data;
+
+@Data
+public class PersonalSceneDTO {
+
+    private String customerFullName;
+    private NameUrlDTO mapLocationImage;
+    private NameUrlDTO sceneImage1;
+    private NameUrlDTO sceneImage2;
+    private NameUrlDTO sceneImage3;
+    private NameUrlDTO sceneImage4;
+    private NameUrlDTO sceneImage5;
+    private NameUrlDTO sceneImage6;
+    private NameUrlDTO sceneImage7;
+    private NameUrlDTO sceneImage8;
+    private NameUrlDTO sceneImage9;
+    private NameUrlDTO sceneImage10;
+    private NameUrlDTO sceneImage11;
+    private NameUrlDTO sceneImage12;
+    private NameUrlDTO sceneImage13;
+}

+ 1 - 0
domain/src/main/java/com/dayou/entity/Personal.java

@@ -238,4 +238,5 @@ public class Personal extends BaseEntity {
     @ExportCell(columnName = "归档日期")
     private Date saveFileDate;
 
+
 }

+ 8 - 0
domain/src/main/java/com/dayou/entity/PersonalScene.java

@@ -1,5 +1,7 @@
 package com.dayou.entity;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.dayou.common.BaseEntity;
+import com.dayou.dto.PersonalSceneDTO;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import com.dayou.annotation.ExcelSheet;
@@ -72,5 +74,11 @@ public class PersonalScene extends BaseEntity {
      */
     private Long userId;
 
+    /**
+     * 实物照片对象
+     */
+    @TableField(exist = false)
+    private PersonalSceneDTO personalSceneImage;
+
 
 }

+ 3 - 0
domain/src/main/java/com/dayou/enums/CertificateEnum.java

@@ -16,16 +16,19 @@ public enum CertificateEnum {
         put(1,"classpath:docs/personal/house_statement.docx");
         put(2,"classpath:docs/personal/house_technic_report.docx");
         put(3,"classpath:docs/personal/house_final_report.docx");
+        put(4,"classpath:docs/personal/house_simple_statement.docx");
     }}),
     LAND_CERTIFICATE("LAND_CERTIFICATE","国土证",new HashMap<Integer,String>(){{
         put(1,"classpath:docs/personal/land_statement.docx");
         put(2,"classpath:docs/personal/land_technic_report.docx");
         put(3,"classpath:docs/personal/land_final_report.docx");
+        put(4,"classpath:docs/personal/land_simple_statement.docx");
     }}),
     IMMOVABLE_CERTIFICATE("IMMOVABLE_CERTIFICATE","不动产权证",new HashMap<Integer,String>(){{
         put(1,"classpath:docs/personal/immovable_statement.docx");
         put(2,"classpath:docs/personal/immovable_technic_report.docx");
         put(3,"classpath:docs/personal/immovable_final_report.docx");
+        put(4,"classpath:docs/personal/immovable_simple_statement.docx");
     }}),
     LEASE_CONTRACT("LEASE_CONTRACT","租赁合同",new HashMap<>()),
     IDENTITY_CARD("IDENTITY_CARD","身份证",new HashMap<>()),

+ 5 - 0
domain/src/main/java/com/dayou/vo/CommissionDeclareDetailVO.java

@@ -54,4 +54,9 @@ public class CommissionDeclareDetailVO {
     private String clientName;
 
     private String clientSubName;
+
+    private String clientManager;
+
+    private String bailor;
+
 }

+ 2 - 0
domain/src/main/java/com/dayou/vo/PersonalSellingAbilityVO.java

@@ -51,6 +51,8 @@ public class PersonalSellingAbilityVO {
 
     private String outStaffTelNo;
 
+    private String outStaffName;
+
     private String sceneDate;
 
     private String createDate;

+ 5 - 0
service/src/main/java/com/dayou/service/IPersonalSceneService.java

@@ -7,6 +7,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.web.multipart.MultipartFile;
+
+import java.util.Map;
+
 /**
  * <p>
  * 个贷实勘表 服务类
@@ -28,4 +31,6 @@ public interface IPersonalSceneService extends IService<PersonalScene> {
         Boolean delete(Long id);
 
     Boolean saveSceneInfo(TaskRecordDTO<PersonalScene> taskRecordDTO);
+
+        void getSceneImagesForDoc(Long personalId, Map<String, Object> textMap);
 }

+ 1 - 0
service/src/main/java/com/dayou/service/IPersonalService.java

@@ -82,4 +82,5 @@ public interface IPersonalService extends IService<Personal> {
     Page<PersonalVO> getAllOrder(PersonalVO personal, Page page, String keyword);
 
     Long getAllOrderCount(PersonalVO personal, Page page, String keyword);
+
 }

+ 13 - 0
service/src/main/java/com/dayou/service/impl/MajorProductionAllotServiceImpl.java

@@ -3,6 +3,7 @@ package com.dayou.service.impl;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.dayou.common.BaseEntity;
 import com.dayou.dto.UserShareRate;
 import com.dayou.entity.Major;
 import com.dayou.entity.MajorProductionAllot;
@@ -10,6 +11,7 @@ import com.dayou.exception.ErrorCode;
 import com.dayou.mapper.MajorProductionAllotMapper;
 import com.dayou.service.IMajorProductionAllotService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.dayou.service.IMajorService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -30,6 +32,8 @@ import org.springframework.web.multipart.MultipartFile;
 import java.util.Collections;
 import java.util.List;
 import java.util.ArrayList;
+import java.util.stream.Collectors;
+
 import org.springframework.transaction.annotation.Transactional;
 import com.dayou.enums.BatchTaskTypeEnum;
 
@@ -48,6 +52,9 @@ public class MajorProductionAllotServiceImpl extends ServiceImpl<MajorProduction
     @Autowired
     private MajorProductionAllotMapper majorProductionAllotMapper;
 
+    @Autowired
+    private IMajorService majorService;
+
     @Override
     @SuppressWarnings("unchecked")
     public List<MajorProductionAllot> getList(Long productionId){
@@ -75,7 +82,13 @@ public class MajorProductionAllotServiceImpl extends ServiceImpl<MajorProduction
     public Boolean saveAllot(List<MajorProductionAllot> list) {
         if (CollectionUtils.isNotEmpty(list)){
             Long majorProductionId = list.get(0).getMajorProductionId();
+            Long majorId = list.get(0).getMajorId();
             majorProductionAllotMapper.deleteByMajorProductionId(majorProductionId);
+            //更新项目成员
+            Major major = majorService.getOne(new LambdaQueryWrapper<Major>().eq(Major::getId, majorId).select(Major::getPrincipalId, Major::getMembers));
+            List<Long> members = list.stream().map(MajorProductionAllot::getUserId).filter(x -> !x.equals(major.getPrincipalId())).collect(Collectors.toList());
+            majorService.update(new LambdaUpdateWrapper<Major>().set(Major::getMembers,JSON.toJSONString(members)).eq(BaseEntity::getId,majorId));
+            //分配绩效
             return this.saveBatch(list);
         }
         return Boolean.FALSE;

+ 26 - 10
service/src/main/java/com/dayou/service/impl/PersonalProductionServiceImpl.java

@@ -85,6 +85,9 @@ public class PersonalProductionServiceImpl extends ServiceImpl<PersonalProductio
     @Autowired
     private PersonalProductionMapper personalProductionMapper;
 
+    @Autowired
+    private IPersonalSceneService personalSceneService;
+
 
 
     @Override
@@ -126,6 +129,7 @@ public class PersonalProductionServiceImpl extends ServiceImpl<PersonalProductio
         Personal personal = personalService.getOne(new LambdaQueryWrapper<Personal>().select(Personal::getCredentials).eq(BaseEntity::getId, personalId).eq(BaseEntity::getDeleted, Boolean.FALSE));
         String orderId = personalService.getOne(new LambdaQueryWrapper<Personal>().eq(BaseEntity::getId, personalId).select(Personal::getOrderId).eq(BaseEntity::getDeleted, Boolean.FALSE)).getOrderId();
         PersonalTarget target = personalTargetService.getOne(new LambdaQueryWrapper<PersonalTarget>().eq(PersonalTarget::getPersonalId, personalId).eq(BaseEntity::getDeleted, Boolean.FALSE));
+
         List<CertificateEnum> certificates = JSON.parseArray(personal.getCredentials(), CertificateEnum.class);
         CertificateEnum certificateEnum = determineCertificate(certificates);
         Map<String,Object> textMap = new HashMap();
@@ -133,6 +137,7 @@ public class PersonalProductionServiceImpl extends ServiceImpl<PersonalProductio
         PersonalSellingAbilityVO sell = JSON.parseObject(target.getSellingAbility(), PersonalSellingAbilityVO.class);
         PersonalBackgroundInfo bg = JSON.parseObject(target.getBackgroundInfo(), PersonalBackgroundInfo.class);
         PersonalEntityInfoVO en = JSON.parseObject(target.getEntityInfo(), PersonalEntityInfoVO.class);
+        personalSceneService.getSceneImagesForDoc(personalId,textMap);
         Field[] sellFields = sell.getClass().getDeclaredFields();
         Field[] bgFields = bg.getClass().getDeclaredFields();
         Field[] enFields = en.getClass().getDeclaredFields();
@@ -154,8 +159,8 @@ public class PersonalProductionServiceImpl extends ServiceImpl<PersonalProductio
         addEnvironment(bg,textMap);
         PersonalCalculate calculate = personalCalculateMapper.getByTargetId(target.getId());
         textMap.put("rightsType",calculate.getRightsType());
-        if (tag == 1){
-            NameUrlDTO statementPath = genStatement(orderId,target,textMap,certificateEnum);
+        if (tag == 1 || tag == 4){
+            NameUrlDTO statementPath = genStatement(orderId,target,textMap,certificateEnum,tag);
             return createPro(target.getId(),statementPath,tag,true);
         }
         if (tag == 2){
@@ -166,7 +171,6 @@ public class PersonalProductionServiceImpl extends ServiceImpl<PersonalProductio
             NameUrlDTO finalPath = genFinal(orderId,target,textMap,certificateEnum);
             return createPro(target.getId(),finalPath,tag,true);
         }
-
         return Boolean.FALSE;
     }
 
@@ -210,7 +214,7 @@ public class PersonalProductionServiceImpl extends ServiceImpl<PersonalProductio
             PersonalCalculate calculate = personalCalculateMapper.getByTargetId(target.getId());
             textMap.put("rightsType",calculate.getRightsType());
 
-            NameUrlDTO statementPath = genStatement(orderId,target,textMap,certificateEnum);
+            NameUrlDTO statementPath = genStatement(orderId,target,textMap,certificateEnum,1);
             createPro(target.getId(),statementPath,1,true);
             NameUrlDTO technicPath = genTechnic(orderId,target,textMap,calculate,certificateEnum);
             createPro(target.getId(),technicPath,2,true);
@@ -278,12 +282,27 @@ public class PersonalProductionServiceImpl extends ServiceImpl<PersonalProductio
      * @param target
      * @return
      */
-    private NameUrlDTO genStatement(String orderId, PersonalTarget target,Map<String,Object> textMap,CertificateEnum certificateEnum){
+    private NameUrlDTO genStatement(String orderId, PersonalTarget target,Map<String,Object> textMap,CertificateEnum certificateEnum,Integer tag){
         addCertificateValue(certificateEnum,textMap,target);
         immRemark(textMap);
         addDebiInfo(textMap);
         addExamples(target.getId(),textMap);
-        return doCreateFile(certificateEnum.getTemplatePath().get(1),textMap,orderId,ProductionEnum.STATEMENT);
+        addSimpleAbout6(textMap,tag);
+        return doCreateFile(certificateEnum.getTemplatePath().get(tag),textMap,orderId,ProductionEnum.STATEMENT);
+    }
+
+    /**
+     * 简单预评版的相关情况第六点
+     * @param textMap
+     * @param tag
+     */
+    private void addSimpleAbout6(Map<String, Object> textMap, Integer tag) {
+        if (tag == 4){
+            String aboutInfo6 = "较强".equals((String)textMap.get("toCashAble"))?
+                    "估价对象系住宅,通用性较强,独立使用性强,不可分割,其所在区域房地产市场状况较好,变现能力较强"
+                    :"估价对象系住宅,独立使用性强,不可分割,其所在区域房地产市场状况较好,其面积较大,总价较高,通用性一般,变现能力一般";
+            textMap.put("aboutInfo6",aboutInfo6);
+        }
     }
 
 
@@ -585,7 +604,7 @@ public class PersonalProductionServiceImpl extends ServiceImpl<PersonalProductio
         String productionType = null;
         String productionTypeName = null;
         PersonalTarget target = personalTargetService.getOne(new LambdaQueryWrapper<PersonalTarget>().eq(PersonalTarget::getId,targetId).select(PersonalTarget::getProductions,BaseEntity::getId));
-        if (tag ==1){
+        if (tag ==1 || tag == 4){
             productionType = ProductionEnum.STATEMENT.name();
             productionTypeName = ProductionEnum.STATEMENT.getMsg();
         }
@@ -596,9 +615,6 @@ public class PersonalProductionServiceImpl extends ServiceImpl<PersonalProductio
         else if (tag ==3){
             productionType = ProductionEnum.FINAL.name();
             productionTypeName = ProductionEnum.FINAL.getMsg();
-        }else if (tag ==4){
-            productionType = ProductionEnum.LETTER.name();
-            productionTypeName = ProductionEnum.LETTER.getMsg();
         }
         else {
             return Boolean.FALSE;

+ 91 - 2
service/src/main/java/com/dayou/service/impl/PersonalSceneServiceImpl.java

@@ -1,6 +1,10 @@
 package com.dayou.service.impl;
 
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSON;
 import com.dayou.common.BaseEntity;
+import com.dayou.dto.NameUrlDTO;
+import com.dayou.dto.PersonalSceneDTO;
 import com.dayou.dto.TaskRecordDTO;
 import com.dayou.entity.Personal;
 import com.dayou.entity.PersonalScene;
@@ -25,6 +29,8 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.web.multipart.MultipartFile;
 import java.util.List;
 import java.util.ArrayList;
+import java.util.Map;
+
 import org.springframework.transaction.annotation.Transactional;
 import com.dayou.enums.BatchTaskTypeEnum;
 
@@ -49,8 +55,24 @@ public class PersonalSceneServiceImpl extends ServiceImpl<PersonalSceneMapper, P
 
     @Override
     public PersonalScene detail(Long personalId){
-        return this.getOne(new LambdaQueryWrapper<PersonalScene>().eq(PersonalScene::getPersonalId,personalId)
-                .eq(BaseEntity::getDeleted,Boolean.FALSE));
+        PersonalScene ps = this.getOne(new LambdaQueryWrapper<PersonalScene>().eq(PersonalScene::getPersonalId, personalId)
+                .eq(BaseEntity::getDeleted, Boolean.FALSE));
+        PersonalSceneDTO personalSceneDTO = new PersonalSceneDTO();
+        if (ps == null){
+            PersonalScene p = new PersonalScene();
+            p.setPersonalId(personalId);
+            p.setPersonalSceneImage(personalSceneDTO);
+            this.save(p);
+            return p;
+        }
+
+        PersonalSceneDTO personalSceneDTO1 = JSON.parseObject(ps.getImages(), PersonalSceneDTO.class);
+        if (personalSceneDTO1 !=null) {
+            personalSceneDTO = personalSceneDTO1;
+        }
+        ps.setPersonalSceneImage(personalSceneDTO);
+        ps.setImages(null);
+        return ps;
     }
 
     @Override
@@ -61,6 +83,7 @@ public class PersonalSceneServiceImpl extends ServiceImpl<PersonalSceneMapper, P
 
     @Override
     public Boolean update(PersonalScene personalScene){
+        personalScene.setImages(JSON.toJSONString(personalScene.getPersonalSceneImage()));
         return  this.updateById(personalScene);
     }
 
@@ -76,4 +99,70 @@ public class PersonalSceneServiceImpl extends ServiceImpl<PersonalSceneMapper, P
         taskData.setUserId(LoginContext.getCurrentUserId());
         return this.saveOrUpdate(taskData);
     }
+
+    @Override
+    public void getSceneImagesForDoc(Long personalId, Map<String, Object> textMap) {
+        PersonalScene per = this.getOne(new LambdaQueryWrapper<PersonalScene>().eq(PersonalScene::getPersonalId, personalId).eq(BaseEntity::getDeleted, false));
+        if (per != null && StrUtil.isNotBlank(per.getImages())) {
+            PersonalSceneDTO personalSceneDTO = JSON.parseObject(per.getImages(), PersonalSceneDTO.class);
+            textMap.put("customerFullName", personalSceneDTO.getCustomerFullName());
+            NameUrlDTO mapLocationImage = personalSceneDTO.getMapLocationImage();
+            if (mapLocationImage != null && StrUtil.isNotBlank(mapLocationImage.getUrl())) {
+                textMap.put("mapLocation", mapLocationImage.getUrl());
+            }
+            NameUrlDTO sceneImage1 = personalSceneDTO.getSceneImage1();
+            if (sceneImage1 != null && StrUtil.isNotBlank(sceneImage1.getUrl())) {
+                textMap.put("sceneImage1", sceneImage1.getUrl());
+            }
+            NameUrlDTO sceneImage2 = personalSceneDTO.getSceneImage2();
+            if (sceneImage2 != null && StrUtil.isNotBlank(sceneImage2.getUrl())) {
+                textMap.put("sceneImage2", sceneImage2.getUrl());
+            }
+            NameUrlDTO sceneImage3 = personalSceneDTO.getSceneImage3();
+            if (sceneImage3 != null && StrUtil.isNotBlank(sceneImage3.getUrl())) {
+                textMap.put("sceneImage3", sceneImage3.getUrl());
+            }
+            NameUrlDTO sceneImage4 = personalSceneDTO.getSceneImage4();
+            if (sceneImage4 != null && StrUtil.isNotBlank(sceneImage4.getUrl())) {
+                textMap.put("sceneImage4", sceneImage4.getUrl());
+            }
+            NameUrlDTO sceneImage5 = personalSceneDTO.getSceneImage5();
+            if (sceneImage5 != null && StrUtil.isNotBlank(sceneImage5.getUrl())) {
+                textMap.put("sceneImage5", sceneImage5.getUrl());
+            }
+            NameUrlDTO sceneImage6 = personalSceneDTO.getSceneImage6();
+            if (sceneImage6 != null && StrUtil.isNotBlank(sceneImage6.getUrl())) {
+                textMap.put("sceneImage6", sceneImage6.getUrl());
+            }
+            NameUrlDTO sceneImage7 = personalSceneDTO.getSceneImage7();
+            if (sceneImage7 != null && StrUtil.isNotBlank(sceneImage7.getUrl())) {
+                textMap.put("sceneImage7", sceneImage7.getUrl());
+            }
+            NameUrlDTO sceneImage8 = personalSceneDTO.getSceneImage8();
+            if (sceneImage8 != null && StrUtil.isNotBlank(sceneImage8.getUrl())) {
+                textMap.put("sceneImage8", sceneImage8.getUrl());
+            }
+            NameUrlDTO sceneImage9 = personalSceneDTO.getSceneImage9();
+            if (sceneImage9 != null && StrUtil.isNotBlank(sceneImage9.getUrl())) {
+                textMap.put("sceneImage9", sceneImage9.getUrl());
+            }
+            NameUrlDTO sceneImage10 = personalSceneDTO.getSceneImage10();
+            if (sceneImage10 != null && StrUtil.isNotBlank(sceneImage10.getUrl())) {
+                textMap.put("sceneImage10", sceneImage10.getUrl());
+            }
+            NameUrlDTO sceneImage11 = personalSceneDTO.getSceneImage11();
+            if (sceneImage11 != null && StrUtil.isNotBlank(sceneImage11.getUrl())) {
+                textMap.put("sceneImage11", sceneImage11.getUrl());
+            }
+            NameUrlDTO sceneImage12 = personalSceneDTO.getSceneImage12();
+            if (sceneImage12 != null && StrUtil.isNotBlank(sceneImage12.getUrl())) {
+                textMap.put("sceneImage12", sceneImage12.getUrl());
+            }
+            NameUrlDTO sceneImage13 = personalSceneDTO.getSceneImage13();
+            if (sceneImage13 != null && StrUtil.isNotBlank(sceneImage13.getUrl())) {
+                textMap.put("sceneImage13", sceneImage13.getUrl());
+            }
+
+        }
+    }
 }

+ 2 - 0
service/src/main/java/com/dayou/service/impl/PersonalServiceImpl.java

@@ -351,6 +351,8 @@ public class PersonalServiceImpl extends ServiceImpl<PersonalMapper, Personal> i
         return personalMapper.getAllOrderCount(personal,keyword);
     }
 
+
+
     /**
      * 由外业人员确定定价内业
      * @return