Explorar el Código

项目管理模板下载及导出功能

lizhenhao hace 2 años
padre
commit
34ea16750f

+ 182 - 40
jeeplus-platform/jeeplus-admin/src/main/java/com/jeeplus/sys/controller/UserProjectController.java

@@ -2,49 +2,44 @@ package com.jeeplus.sys.controller;
 
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
-import com.aliyun.oss.ServiceException;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.google.common.collect.Lists;
 import com.jeeplus.aop.demo.annotation.DemoMode;
 import com.jeeplus.aop.logging.annotation.ApiLog;
-import com.jeeplus.common.beanvalidator.BeanValidators;
+import com.jeeplus.core.excel.ExcelOptions;
+import com.jeeplus.core.excel.ExportMode;
 import com.jeeplus.core.excel.utils.EasyPoiUtil;
-import com.jeeplus.core.query.QueryWrapperGenerator;
-import com.jeeplus.security.util.SecurityUtils;
 import com.jeeplus.sys.constant.enums.ProjectStatusEnum;
 import com.jeeplus.sys.constant.enums.ProjectTypeEnum;
 import com.jeeplus.sys.constant.enums.YesOrNoEnum;
-import com.jeeplus.sys.domain.User;
 import com.jeeplus.sys.domain.UserProject;
 import com.jeeplus.sys.service.UserProjectService;
 import com.jeeplus.sys.service.UserService;
-import com.jeeplus.sys.service.dto.UserDTO;
 import com.jeeplus.sys.service.dto.UserProjectDTO;
 import com.jeeplus.sys.service.mapstruct.UserProjectWrapper;
-import com.jeeplus.sys.service.mapstruct.UserWrapper;
-import com.jeeplus.sys.utils.UserUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.time.DateUtils;
-import org.dozer.inject.DozerBeanContainer;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import javax.validation.ConstraintViolationException;
 import javax.validation.Valid;
-import java.text.ParseException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URLEncoder;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
-import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
+import java.util.stream.Collectors;
 
 
 /**
@@ -70,10 +65,7 @@ public class UserProjectController {
     @PreAuthorize("hasAuthority('sys:project:list')")
     @GetMapping("list")
     public ResponseEntity<IPage<UserProject>> data(UserProject userProject, Page<UserProject> page) throws Exception {
-        QueryWrapper<UserProject> queryWrapper = QueryWrapperGenerator.buildQueryCondition (userProject, UserProject.class);
-        queryWrapper.lambda().eq(StrUtil.isNotEmpty(userProject.getItemType()),UserProject::getItemType,userProject.getItemType());
-        IPage<UserProject> result = userProjectService.selectPage (userProject);
-
+        IPage<UserProject> result = userProjectService.selectPage (page,userProject);
         return ResponseEntity.ok (result);
     }
 
@@ -86,7 +78,7 @@ public class UserProjectController {
     @PreAuthorize ("hasAnyAuthority('sys:project:view','sys:project:add','sys:project:edit')")
     @GetMapping("queryById")
     public ResponseEntity queryById(@RequestParam("id") String id) {
-        UserProject userProject = userProjectService.getById ( id );
+        UserProject userProject = userProjectService.selectByProjectId ( id );
         return ResponseEntity.ok (userProject);
     }
 
@@ -109,7 +101,7 @@ public class UserProjectController {
             if(StrUtil.isNotEmpty(userId)){
                 pro.setProjectHead(userId);
             }else{
-                pro.setProjectHead("");
+                return ResponseEntity.badRequest().body("项目负责人不存在,请重新输入");
             }
 
         }
@@ -119,7 +111,7 @@ public class UserProjectController {
             if(StrUtil.isNotEmpty(userId)){
                 pro.setEvaluationPersonOne(userId);
             }else{
-                pro.setEvaluationPersonOne("");
+                return ResponseEntity.badRequest().body("签字评估师1不存在,请重新输入");
             }
         }
 
@@ -128,7 +120,7 @@ public class UserProjectController {
             if(StrUtil.isNotEmpty(userId)){
                 pro.setEvaluationPersonTwo(userId);
             }else{
-                pro.setEvaluationPersonTwo("");
+                return ResponseEntity.badRequest().body("签字评估师2不存在,请重新输入");
             }
         }
 
@@ -275,7 +267,7 @@ public class UserProjectController {
                 if(StrUtil.isNotEmpty(id)){
                     project.setProjectHead(id);
                 }else{
-                    project.setProjectHead("");
+                    return "文件中有项目负责人无法找到,请修改为在档人员,或者不填写";
                 }
             }
 
@@ -284,7 +276,7 @@ public class UserProjectController {
                 if(ObjectUtil.isNotEmpty(id)){
                     project.setEvaluationPersonOne(id);
                 }else{
-                    project.setEvaluationPersonOne("");
+                    return "文件中有签字评估师无法找到,请修改为在档人员,或者不填写";
                 }
             }
 
@@ -293,7 +285,7 @@ public class UserProjectController {
                 if(ObjectUtil.isNotEmpty(id)){
                     project.setEvaluationPersonTwo(id);
                 }else{
-                    project.setEvaluationPersonTwo("");
+                    return "文件中有签字评估师无法找到,请修改为在档人员,或者不填写";
                 }
             }
 
@@ -303,6 +295,8 @@ public class UserProjectController {
                 if(ObjectUtil.isNotEmpty(userProject)){
                     return "文件中存在已在档的文号";
                 }
+            }else{
+                return "文件中存在空的文号,文号不允许为空";
             }
 
             //是否开票
@@ -361,34 +355,182 @@ public class UserProjectController {
 
 
     /**
-     * 下载导入项目数据模板
+     * 下载项目导入模板
      *
      * @param response
      * @return
      */
-    @PreAuthorize ("hasAnyAuthority('sys:project:import')")
-    @GetMapping("import/template/assess")
+    @GetMapping("import/template")
+    @PreAuthorize("hasAnyAuthority('sys:project:export')")
     @ApiOperation(value = "下载模板")
-    public void importFileTemplateAssess(HttpServletResponse response) {
-        String fileName = "项目数据导入模板.xlsx";
-        List<UserProjectDTO> list = Lists.newArrayList();
-        EasyPoiUtil.exportExcel ( list, "2021年资产评估项目备查登记表",  "项目明细表", UserProjectDTO.class, fileName, response );
+    public void importFileTemplate(HttpServletResponse response, HttpServletRequest request) {
+        try {
+            InputStream inputStream = this.getClass().getResourceAsStream("/dot/项目导入模板.xlsx");
+            //强制下载不打开
+            response.setContentType("application/force-download");
+            OutputStream out = response.getOutputStream();
+            //使用URLEncoder来防止文件名乱码或者读取错误
+            response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode("project_template.xlsx", "UTF-8"));
+            int b = 0;
+            byte[] buffer = new byte[1000000];
+            while (b != -1) {
+                b = inputStream.read(buffer);
+                if (b != -1) out.write(buffer, 0, b);
+            }
+            inputStream.close();
+            out.close();
+            out.flush();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
     }
 
 
     /**
-     * 下载导入项目数据模板
+     * 导出用户数据
      *
+     * @param userProjectDTO
+     * @param page
      * @param response
-     * @return
+     * @throws Exception
      */
-    @PreAuthorize ("hasAnyAuthority('sys:project:import')")
-    @GetMapping("import/template/consultation")
-    @ApiOperation(value = "下载模板")
-    public void importFileTemplateConsultation(HttpServletResponse response) {
-        String fileName = "项目数据导入模板.xlsx";
-        List<UserProjectDTO> list = Lists.newArrayList();
-        EasyPoiUtil.exportExcel ( list, "2021年资产评估项目备查登记表",  "咨询报告", UserProjectDTO.class, fileName, response );
+    @ApiLog("导出项目数据")
+    @PreAuthorize("hasAnyAuthority('sys:project:export')")
+    @GetMapping("export")
+    @ApiOperation(value = "导出项目excel")
+    public void exportFile(UserProjectDTO userProjectDTO, Page <UserProjectDTO> page, ExcelOptions options, HttpServletResponse response) throws Exception {
+        String fileName = options.getFilename ( );
+        UserProject project = UserProjectWrapper.INSTANCE.toEntity (userProjectDTO);
+        Page <UserProject> userProjectPage = pageAToPageB(page);
+        List <UserProject> result = new ArrayList<>();
+        List <UserProjectDTO> userProjectDTOList = new ArrayList<>();
+        if ( ExportMode.current.equals ( options.getMode ( ) ) ) {
+            result = userProjectService.selectPage ( userProjectPage, project ).getRecords ( );
+        } else {
+            userProjectPage.setSize ( -1 );
+            userProjectPage.setCurrent ( 0 );
+            result = userProjectService.selectPage ( userProjectPage, project ).getRecords ( );
+        }
+        result.stream().forEach(item->{
+            UserProjectDTO projectDTO = UserProjectWrapper.INSTANCE.toDTO(item);
+            userProjectDTOList.add(projectDTO);
+        });
+
+        SimpleDateFormat formatter=new SimpleDateFormat("yyyy/MM/dd");
+        List <UserProjectDTO> collect = userProjectDTOList.stream().map(item -> {
+            return isChange(item,formatter);
+        }).collect(Collectors.toList());
+        if(ProjectTypeEnum.ASSESS.getValue().equals(userProjectDTO.getItemType()))
+            EasyPoiUtil.exportExcel ( collect, "2021年资产评估项目备查登记表",  "项目明细表", UserProjectDTO.class, fileName, response );
+        if(ProjectTypeEnum.CONSULTATION.getValue().equals(userProjectDTO.getItemType()))
+            EasyPoiUtil.exportExcel ( collect, "2021年资产评估项目备查登记表",  "咨询报告", UserProjectDTO.class, fileName, response );
+    }
+
+    public Page<UserProject> pageAToPageB(Page<UserProjectDTO> page){
+
+        Page<UserProject> pageB = new Page<>();
+        pageB.setCurrent(page.getCurrent());
+        pageB.setSize(page.getSize());
+        pageB.setOrders(page.getOrders());
+
+        return pageB;
+    }
+
+    public UserProjectDTO isChange(UserProjectDTO userProjectDTO,SimpleDateFormat formatter){
+
+        if(StrUtil.isNotEmpty(userProjectDTO.getIsInvoice())){
+            //是否开票
+            if(YesOrNoEnum.YES.getValue().equals(userProjectDTO.getIsInvoice())){
+                userProjectDTO.setIsInvoice(YesOrNoEnum.YES.getLabel());
+            }else if(YesOrNoEnum.NO.getValue().equals(userProjectDTO.getIsInvoice())){
+                userProjectDTO.setIsInvoice(YesOrNoEnum.NO.getLabel());
+            }
+        }
+
+
+        if(StrUtil.isNotEmpty(userProjectDTO.getIsContractArchive())) {
+            //合同是否存档
+            if (YesOrNoEnum.YES.getValue().equals(userProjectDTO.getIsContractArchive())) {
+                userProjectDTO.setIsContractArchive(YesOrNoEnum.YES.getLabel());
+            } else if (YesOrNoEnum.NO.getValue().equals(userProjectDTO.getIsContractArchive())) {
+                userProjectDTO.setIsContractArchive(YesOrNoEnum.NO.getLabel());
+            }
+        }
+
+        if(StrUtil.isNotEmpty(userProjectDTO.getIsPapersIntact())) {
+            //底稿是否完好
+            if (YesOrNoEnum.YES.getValue().equals(userProjectDTO.getIsPapersIntact())) {
+                userProjectDTO.setIsPapersIntact(YesOrNoEnum.YES.getLabel());
+            } else if (YesOrNoEnum.NO.getValue().equals(userProjectDTO.getIsPapersIntact())) {
+                userProjectDTO.setIsPapersIntact(YesOrNoEnum.NO.getLabel());
+            }
+        }
+
+        if(StrUtil.isNotEmpty(userProjectDTO.getIsPapersArchive())) {
+            //底稿是否归档
+            if (YesOrNoEnum.YES.getValue().equals(userProjectDTO.getIsPapersArchive())) {
+                userProjectDTO.setIsPapersArchive(YesOrNoEnum.YES.getLabel());
+            } else if (YesOrNoEnum.NO.getValue().equals(userProjectDTO.getIsPapersArchive())) {
+                userProjectDTO.setIsPapersArchive(YesOrNoEnum.NO.getLabel());
+            }
+        }
+
+        if(StrUtil.isNotEmpty(userProjectDTO.getIsOpsReimbursement())) {
+            //外勤是否已经报销
+            if (YesOrNoEnum.YES.getValue().equals(userProjectDTO.getIsOpsReimbursement())) {
+                userProjectDTO.setIsOpsReimbursement(YesOrNoEnum.YES.getLabel());
+            } else if (YesOrNoEnum.NO.getValue().equals(userProjectDTO.getIsOpsReimbursement())) {
+                userProjectDTO.setIsOpsReimbursement(YesOrNoEnum.NO.getLabel());
+            }
+        }
+
+        if(StrUtil.isNotEmpty(userProjectDTO.getIsCommissionReimbursement())) {
+            //是否已经报销提成
+            if (YesOrNoEnum.YES.getValue().equals(userProjectDTO.getIsCommissionReimbursement())) {
+                userProjectDTO.setIsCommissionReimbursement(YesOrNoEnum.YES.getLabel());
+            } else if (YesOrNoEnum.NO.getValue().equals(userProjectDTO.getIsCommissionReimbursement())) {
+                userProjectDTO.setIsCommissionReimbursement(YesOrNoEnum.NO.getLabel());
+            }
+        }
+
+
+        //评估报告日
+        if(ObjectUtil.isNotEmpty(userProjectDTO.getEvaluationReportDate())){
+            String time=formatter.format(userProjectDTO.getEvaluationReportDate());
+            userProjectDTO.setEvaluationReportDateUi(time);
+        }else{
+            if(StrUtil.isNotEmpty(userProjectDTO.getAssessReportMessage())){
+                userProjectDTO.setEvaluationReportDateUi(userProjectDTO.getAssessReportMessage());
+            }
+        }
+        //评估基准日
+        if(ObjectUtil.isNotEmpty(userProjectDTO.getEvaluationBaseDate())){
+            String time=formatter.format(userProjectDTO.getEvaluationBaseDate());
+            userProjectDTO.setEvaluationBaseDateUi(time);
+        }else{
+            if(StrUtil.isNotEmpty(userProjectDTO.getAssessBaseMessage())){
+                userProjectDTO.setEvaluationBaseDateUi(userProjectDTO.getAssessBaseMessage());
+            }
+        }
+        //开票日期
+        if(ObjectUtil.isNotEmpty(userProjectDTO.getInvoiceDate())){
+            String time=formatter.format(userProjectDTO.getInvoiceDate());
+            userProjectDTO.setInvoiceDateUi(time);
+        }else{
+            if(StrUtil.isNotEmpty(userProjectDTO.getInvoiceMessage())){
+                userProjectDTO.setInvoiceDateUi(userProjectDTO.getInvoiceMessage());
+            }
+        }
+        //报销日期
+        if(ObjectUtil.isNotEmpty(userProjectDTO.getReimbursementDate())){
+            String time=formatter.format(userProjectDTO.getReimbursementDate());
+            userProjectDTO.setReimbursementDateUi(time);
+        }
+
+
+
+        return userProjectDTO;
     }
 
+
 }

+ 1 - 38
jeeplus-platform/jeeplus-admin/src/main/java/com/jeeplus/sys/domain/UserProject.java

@@ -1,6 +1,6 @@
 package com.jeeplus.sys.domain;
 
-import com.baomidou.mybatisplus.annotation.*;
+import com.baomidou.mybatisplus.annotation.TableName;
 import com.jeeplus.core.domain.BaseEntity;
 import com.jeeplus.core.query.Query;
 import lombok.Data;
@@ -18,43 +18,6 @@ import java.util.Date;
 public class UserProject extends BaseEntity {
 
     /**
-     * 实体主键
-     */
-    @TableId
-    private String id;
-
-    /**
-     * 创建日期
-     */
-    @TableField(fill = FieldFill.INSERT)
-    private Date createDate;
-
-    /**
-     * 创建人
-     */
-    @TableField(fill = FieldFill.INSERT)
-    private String createBy;
-
-    /**
-     * 更新日期
-     */
-    @TableField(fill = FieldFill.INSERT_UPDATE)
-    private Date updateDate;
-
-    /**
-     * 更新人
-     */
-    @TableField(fill = FieldFill.INSERT_UPDATE)
-    private String updateBy;
-
-    /**
-     * 逻辑删除标记
-     */
-    @TableLogic
-    @TableField(fill = FieldFill.INSERT)
-    private Integer delFlag;
-
-    /**
      * 备注信息
      */
     private String remarks;

+ 4 - 3
jeeplus-platform/jeeplus-admin/src/main/java/com/jeeplus/sys/mapper/UserProjectMapper.java

@@ -3,16 +3,17 @@ package com.jeeplus.sys.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.jeeplus.sys.domain.UserProject;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
-import java.util.ArrayList;
-
 @Mapper
 public interface UserProjectMapper extends BaseMapper<UserProject> {
 
     public UserProject selectByDocumentNum(@Param("documentNum") String documentNum);
 
-    public IPage<UserProject> selectPage(UserProject userProject);
+    public UserProject selectByProjectId(@Param("projectId") String projectId);
+
+    public IPage<UserProject> selectPage(Page<UserProject> page, @Param("userProject") UserProject userProject);
 }

+ 41 - 7
jeeplus-platform/jeeplus-admin/src/main/java/com/jeeplus/sys/mapper/xml/UserProjectMapper.xml

@@ -58,29 +58,63 @@
     item_type
   </sql>
 
+  <sql id="to_list">
+    sup.id, sup.create_by, sup.create_date, sup.update_by, sup.update_date, sup.remarks, sup.del_flag, sup.customer_name,
+    sup.project_name, sup.evaluation_objective, sup.project_type, sup.evaluation_base_date, sup.evaluation_report_date,
+    sup.protocol_num, sup.document_num, sup.wayst_evaluation, sup.fixed_assets_evaluation,
+    sup.net_assets_evaluation, sup.rent_evaluation, sup.forensics, sup.report_charges, sup.current_dispose_person,
+    sup.is_invoice, sup.invoice_date, sup.actual_charges, sup.is_contract_archive, sup.is_papers_intact,
+    sup.is_papers_archive, sup.ops_amount, sup.is_ops_reimbursement, sup.reimbursement_amount, sup.unreimbursed_amount,
+    sup.reimbursement_num, sup.reimbursement_date,
+    sup.`status`, sup.assess_report_message, sup.assess_base_message, sup.invoice_message, sup.is_commission_reimbursement,
+    sup.item_type
+  </sql>
+
 
   <select id="selectByDocumentNum" resultType="com.jeeplus.sys.domain.UserProject">
     select
     <include refid="Base_Column_List"></include>
     from
     sys_user_project
-    where document_num = #{documentNum}
+    where del_flag = '0' and document_num = #{documentNum}
+  </select>
+
+  <select id="selectByProjectId" resultType="com.jeeplus.sys.domain.UserProject">
+    select
+    <include refid="to_list"></include>,
+    su1.login_name as projectHead,
+    su2.login_name as evaluationPersonOne,
+    su3.login_name as evaluationPersonTwo
+    from sys_user_project sup
+    left join sys_user su1 on sup.project_head = su1.id
+    left join sys_user su2 on sup.evaluation_person_one = su2.id
+    left join sys_user su3 on sup.evaluation_person_two = su3.id
+    where sup.del_flag = '0' and sup.id = #{projectId}
   </select>
 
   <select id="selectPage" resultType="com.jeeplus.sys.domain.UserProject">
     select
-    <include refid="Base_Column_List"></include>
-    from
-    sys_user_project
+    <include refid="to_list"></include>,
+    su1.login_name as projectHead,
+    su2.login_name as evaluationPersonOne,
+    su3.login_name as evaluationPersonTwo
+    from sys_user_project sup
+    left join sys_user su1 on sup.project_head = su1.id
+    left join sys_user su2 on sup.evaluation_person_one = su2.id
+    left join sys_user su3 on sup.evaluation_person_two = su3.id
     <where >
+      sup.del_flag = '0'
       <if test="userProject.customerName != null and userProject.customerName != ''">
-        customer_name like concat('%',#{userProject.customerName},'%')
+        and sup.customer_name like concat('%',#{userProject.customerName},'%')
       </if>
       <if test="userProject.projectName != null and userProject.projectName != ''">
-        project_name like concat('%',#{userProject.projectName},'%')
+        and sup.project_name like concat('%',#{userProject.projectName},'%')
+      </if>
+      <if test="userProject.itemType != null and userProject.itemType != ''">
+        and sup.item_type = #{userProject.itemType}
       </if>
     </where>
-
+    order by sup.create_date desc
   </select>
 
 </mapper>

+ 7 - 2
jeeplus-platform/jeeplus-admin/src/main/java/com/jeeplus/sys/service/UserProjectService.java

@@ -3,6 +3,7 @@ package com.jeeplus.sys.service;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.jeeplus.sys.domain.UserProject;
 import com.jeeplus.sys.mapper.UserProjectMapper;
@@ -23,8 +24,12 @@ public class UserProjectService extends ServiceImpl<UserProjectMapper, UserProje
     @Autowired
     private UserProjectMapper userProjectMapper;
 
-    public IPage<UserProject> selectPage(UserProject userProject){
-        return userProjectMapper.selectPage(userProject);
+    public IPage<UserProject> selectPage(Page<UserProject> page, UserProject userProject){
+        return userProjectMapper.selectPage(page, userProject);
+    }
+
+    public UserProject selectByProjectId(String projectId){
+        return userProjectMapper.selectByProjectId(projectId);
     }
 
     public UserProject projectDtoToDate(UserProject project, UserProjectDTO projectDTO){

+ 0 - 2
jeeplus-platform/jeeplus-admin/src/main/java/com/jeeplus/sys/service/dto/UserProjectDTO.java

@@ -1,12 +1,10 @@
 package com.jeeplus.sys.service.dto;
 
 import cn.afterturn.easypoi.excel.annotation.Excel;
-import cn.afterturn.easypoi.excel.annotation.ExcelIgnore;
 import com.jeeplus.core.service.dto.BaseDTO;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
-import javax.validation.constraints.NotEmpty;
 import java.util.Date;
 
 @Data

BIN
jeeplus-web/src/main/resources/dot/项目导入模板.xlsx