Browse Source

代码提交

user5 1 year ago
parent
commit
dbdfe69645
13 changed files with 734 additions and 6 deletions
  1. 66 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReport/controller/CwProjectReportNumberReviewApplyController.java
  2. 1 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReport/controller/CwProjectReportSignatureCallBackController.java
  3. 16 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReport/domain/CwProjectReportData.java
  4. 26 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReport/domain/CwProjectReportNumberReviewApply.java
  5. 31 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReport/mapper/CwProjectReportNumberReviewApplyMapper.java
  6. 17 2
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReport/mapper/xml/CwProjectReportMapper.xml
  7. 37 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReport/mapper/xml/CwProjectReportNumberReviewApplyMapper.xml
  8. 294 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReport/service/CwProjectReportNumberReviewApplyService.java
  9. 15 1
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReport/service/CwProjectReportService.java
  10. 2 2
      jeeplus-modules/jeeplus-finance/src/main/resources/application-finance.yml
  11. 115 0
      jeeplus-modules/jeeplus-flowable/src/main/java/com/jeeplus/flowable/utils/SnowFlake.java
  12. 108 0
      jeeplus-modules/jeeplus-human/src/main/java/com/jeeplus/human/enrollment/enrollmentRegistration/utils/SnowFlake.java
  13. 6 1
      jeeplus-modules/jeeplus-public-modules/src/main/java/com/jeeplus/pubmodules/oss/controller/OssFileController.java

+ 66 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReport/controller/CwProjectReportNumberReviewApplyController.java

@@ -0,0 +1,66 @@
+package com.jeeplus.finance.projectReport.controller;
+
+import com.jeeplus.common.utils.ResponseUtil;
+import com.jeeplus.finance.projectReport.domain.CwProjectReportData;
+import com.jeeplus.finance.projectReport.service.CwProjectReportNumberApplyService;
+import com.jeeplus.finance.projectReport.service.CwProjectReportNumberReviewApplyService;
+import com.jeeplus.logging.annotation.ApiLog;
+import com.jeeplus.logging.constant.enums.LogTypeEnum;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import java.lang.reflect.InvocationTargetException;
+
+/**
+ * @author: 徐滕
+ * @create: 2022-12-14 14:23
+ **/
+@RestController
+@Api(tags ="报告审核校对")
+@RequestMapping(value = "/projectReport/numberReviewApply")
+public class CwProjectReportNumberReviewApplyController {
+
+    @Resource
+    private CwProjectReportNumberReviewApplyService service;
+
+    /**
+     * 财务报告号复核-流程
+     * @param reportData
+     * @return
+     */
+    @ApiLog(value = "财务报告号复核-流程", type = LogTypeEnum.SAVE)
+    @PostMapping("saveForm")
+    public ResponseEntity saveForm(@Valid @RequestBody CwProjectReportData reportData) throws Exception {
+        String id = service.reviewSaveForm(reportData);
+        return ResponseUtil.newInstance().add("businessTable", "cw_project_report_number_review_apply").add("businessId", id).ok ("操作成功");
+    }
+
+    /**
+     * 根据id修改状态值status
+     * @param data
+     * @return
+     */
+    @ApiOperation(value = "根据id修改状态值status")
+    @PostMapping(value = "/updateReviewStatysByReportId")
+    public ResponseEntity<String> updateReviewStatysByReportId(@RequestBody CwProjectReportData data) {
+        String s = service.updateReviewStatysByReportId(data);
+        return ResponseEntity.ok(s);
+    }
+
+    /**
+     * 查询客户信息数据
+     * @param id
+     * @return
+     */
+    @ApiLog("查询财务报告数据")
+    @GetMapping("queryByReportId")
+    public ResponseEntity queryByReportId(@RequestParam("id") String id) throws IllegalAccessException, NoSuchMethodException, InvocationTargetException {
+        CwProjectReportData projectReportData = service.queryByReportId(id);
+        return ResponseEntity.ok (projectReportData);
+    }
+
+}

+ 1 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReport/controller/CwProjectReportSignatureCallBackController.java

@@ -321,6 +321,7 @@ public class CwProjectReportSignatureCallBackController {
 
                     //将签章完成的附件进行保存到附件表中
                     WorkAttachmentInfo workattachment = new WorkAttachmentInfo();
+                    workattachment.setDelFlag(0);
                     workattachment.setUrl(filepath);
                     workattachment.setType(substring);
                     workattachment.setAttachmentName(newFileName);

+ 16 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReport/domain/CwProjectReportData.java

@@ -32,6 +32,22 @@ public class CwProjectReportData extends BaseDTO {
     @TableField(exist = false)
     private String improperTakeCause;
 
+
+    //报告号申请流程的  流程id,及流程状态  及 取号类型  及  非正常取号原因
+    @TableField(exist = false)
+    private String applyReviewProcId;
+    @TableField(exist = false)
+    private String applyReviewProcDefId;
+    @TableField(exist = false)
+    private String applyReviewStatus;
+
+    /**
+     * 报告号复核流程taskId
+     */
+    private String reviewTaskNumberId;
+
+
+
     /**
      * 区分新旧数据
      */

+ 26 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReport/domain/CwProjectReportNumberReviewApply.java

@@ -0,0 +1,26 @@
+package com.jeeplus.finance.projectReport.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * @author: 王强
+ * @create: 2022-12-12 20:37
+ **/
+@Data
+@TableName(value = "cw_project_report_number_review_apply")
+public class CwProjectReportNumberReviewApply extends BaseEntity {
+
+    /**
+     * 流程id
+     */
+    private String procInsId;
+
+    private String processDefinitionId;
+
+    //流程状态
+    private String reviewStatus;
+    //报告id
+    private String reportId;
+}

+ 31 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReport/mapper/CwProjectReportNumberReviewApplyMapper.java

@@ -0,0 +1,31 @@
+package com.jeeplus.finance.projectReport.mapper;
+
+import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jeeplus.finance.projectReport.domain.CwProjectReportData;
+import com.jeeplus.finance.projectReport.domain.CwProjectReportNumberApply;
+import com.jeeplus.finance.projectReport.domain.CwProjectReportNumberReviewApply;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * @author 王强
+ * @version 1.0
+ * @date 2023-12-12 16:59
+ */
+@Mapper
+public interface CwProjectReportNumberReviewApplyMapper extends BaseMapper<CwProjectReportNumberReviewApply> {
+
+    @InterceptorIgnore(tenantLine = "true")
+    CwProjectReportNumberReviewApply selectByReportId(String id);
+
+    CwProjectReportData selectByPortId(String id);
+
+    void updateReviewStatysByReportId(@Param("reviewStatus") String reviewStatus, @Param("id") String id);
+
+    @InterceptorIgnore(tenantLine = "true")
+    void updateReviewById(CwProjectReportNumberReviewApply review);
+
+    @InterceptorIgnore(tenantLine = "true")
+    void updateApplyTypeByReportId(String reportId);
+}

+ 17 - 2
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReport/mapper/xml/CwProjectReportMapper.xml

@@ -97,8 +97,13 @@
         cw_na.proc_ins_id as applyProcId,
         cw_na.process_definition_id as applyProcDefId,
         ifnull(cw_na.review_status,'0') as applyStatus,
-        cw_na.take_number_type as takeNumberType,
+        ifnull(cw_na.take_number_type,'0') as takeNumberType,
         cw_na.improper_take_cause as improperTakeCause,
+
+        artar.ID_ as review_task_number_id,
+        cw_nra.proc_ins_id as applyReviewProcId,
+        cw_nra.process_definition_id as applyReviewProcDefId,
+        ifnull(cw_nra.review_status,'0') as applyReviewStatus,
         cw_ci.contract_name
         FROM cw_project_report a
         left join cw_project_records b on a.project_id = b.id
@@ -123,7 +128,9 @@
         left join cw_work_client_base cwcb on new_line.served_unit_id = cwcb.id
         LEFT JOIN cw_work_contract_info cw_ci on  b.contract_id=cw_ci.id
         LEFT JOIN cw_project_report_number_apply cw_na on  a.id = cw_na.report_id
+        LEFT JOIN cw_project_report_number_review_apply cw_nra on  a.id = cw_nra.report_id
          left join act_ru_task arta ON cw_na.proc_ins_id = arta.PROC_INST_ID_
+         left join act_ru_task artar ON cw_nra.proc_ins_id = artar.PROC_INST_ID_
         ${ew.customSqlSegment}
         ORDER BY a.create_time DESC
     </select>
@@ -191,7 +198,11 @@
         cw_na.process_definition_id as applyProcDefId,
         ifnull(cw_na.review_status,'0') as applyStatus,
         cw_na.take_number_type as takeNumberType,
-        cw_na.improper_take_cause as improperTakeCause
+        cw_na.improper_take_cause as improperTakeCause,
+
+        cw_nra.proc_ins_id as applyReviewProcId,
+        cw_nra.process_definition_id as applyReviewProcDefId,
+        ifnull(cw_nra.review_status,'0') as applyReviewStatus
         FROM cw_project_report a
         left join cw_project_records b on a.project_id = b.id
         LEFT JOIN sys_office c on a.office_id = c.id
@@ -204,6 +215,7 @@
         left join cw_project_report_new_line new_line on a.id = new_line.report_id
         left join cw_project_report_review cw_re on a.id = cw_re.report_id and cw_re.del_flag = '0'
         LEFT JOIN cw_project_report_number_apply cw_na on  a.id = cw_na.report_id and cw_na.del_flag = '0'
+        LEFT JOIN cw_project_report_number_review_apply cw_nra on  a.id = cw_nra.report_id and cw_nra.del_flag = '0'
         where a.id = #{id}
     </select>
     <select id="queryContainDelById" resultType="com.jeeplus.finance.projectReport.domain.CwProjectReportData">
@@ -742,6 +754,9 @@
         <if test="businessObjects != null and businessObjects != ''">
             business_objects = #{businessObjects},
         </if>
+        <if test="reportName != null and reportName != ''">
+            report_name = #{reportName},
+        </if>
         <if test="tenantId != null and tenantId != ''">
             tenant_id = #{tenantId},
         </if>

+ 37 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReport/mapper/xml/CwProjectReportNumberReviewApplyMapper.xml

@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.jeeplus.finance.projectReport.mapper.CwProjectReportNumberReviewApplyMapper">
+    <update id="updateReviewStatysByReportId">
+        update cw_project_report_number_review_apply set review_status = #{reviewStatus}
+        where report_id = #{id}
+    </update>
+    <update id="updateReviewById">
+        UPDATE cw_project_report_number_review_apply
+        SET
+        <if test="reviewStatus != null and reviewStatus != ''">
+            review_status = #{reviewStatus},
+        </if>
+        update_by_id = #{updateById},
+        update_time = #{updateTime}
+        WHERE
+        id = #{id}
+        AND del_flag = 0
+    </update>
+
+    <update id="updateApplyTypeByReportId">
+        UPDATE cw_project_report_number_apply
+        SET
+        take_number_type = 0
+        WHERE
+        report_id = #{reportId}
+        AND del_flag = 0
+    </update>
+
+    <select id="selectByReportId"
+            resultType="com.jeeplus.finance.projectReport.domain.CwProjectReportNumberApply">
+        select * from cw_project_report_number_review_apply where report_id = #{id}
+    </select>
+    <select id="selectByPortId" resultType="com.jeeplus.finance.projectReport.domain.CwProjectReportData">
+         select * from cw_project_report_number_review_apply where report_id = #{id}
+    </select>
+</mapper>

+ 294 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReport/service/CwProjectReportNumberReviewApplyService.java

@@ -0,0 +1,294 @@
+package com.jeeplus.finance.projectReport.service;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.extra.spring.SpringUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jeeplus.common.TokenProvider;
+import com.jeeplus.finance.projectReport.domain.*;
+import com.jeeplus.finance.projectReport.mapper.CwProjectInfoMapper;
+import com.jeeplus.finance.projectReport.mapper.CwProjectReportNumberReviewApplyMapper;
+import com.jeeplus.finance.projectReport.mapper.CwProjectReportReviewMapper;
+import com.jeeplus.finance.reimbursementApproval.approvalInfo.service.dto.ReportNoDto;
+import com.jeeplus.sys.feign.IUserApi;
+import com.jeeplus.sys.feign.IWorkAttachmentApi;
+import com.jeeplus.sys.service.dto.UserDTO;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.lang.reflect.InvocationTargetException;
+import java.util.Date;
+import java.util.UUID;
+
+/**
+ * @author 王强
+ * @version 1.0
+ * @date 2023-12-12 17:02
+ */
+@Service
+@Transactional
+public class CwProjectReportNumberReviewApplyService extends ServiceImpl<CwProjectReportNumberReviewApplyMapper, CwProjectReportNumberReviewApply> {
+
+    @Resource
+    private CwProjectReportNumberReviewApplyMapper mapper;
+
+    @Resource
+    private CwProjectReportReviewMapper reviewMapper;
+
+    @Resource
+    private CwProjectInfoMapper infoMapper;
+
+    @Resource
+    private CwProjectReportService cwProjectReportService;
+
+    public CwProjectReportData queryByReportId(String id) throws IllegalAccessException, NoSuchMethodException, InvocationTargetException {
+        CwProjectReportData data = mapper.selectByPortId(id);
+        //查询复核相关信息
+
+        return data;
+    }
+
+    /**
+     * 修改状态
+     * @param data
+     * @return
+     */
+    public String updateReviewStatysByReportId(CwProjectReportData data) {
+        //获取当前登录人信息
+        UserDTO userDTO = SpringUtil.getBean ( IUserApi.class ).getByToken(TokenProvider.getCurrentToken ( ));
+        mapper.updateReviewStatysByReportId(data.getApplyReviewStatus(),data.getId());
+
+        return "操作成功";
+    }
+
+    /**
+     * 保存项目以及其他相关信息
+     * @param reportData
+     * @return
+     * @throws Exception
+     */
+    public String saveForm(CwProjectReportData reportData) throws Exception{
+        if (StringUtils.isNotEmpty(reportData.getId())){
+
+            CwProjectReportNumberReviewApply detail = mapper.selectById(reportData.getId());
+            if (detail != null){
+                reportData.setCreateBy(reportData.getCreateBy());
+                return update(reportData,detail);
+            } else {
+                //传过来的是报告表id
+                detail = mapper.selectByReportId(reportData.getId());
+                if (detail != null){
+                    reportData.setCreateBy(reportData.getCreateBy());
+                    return update(reportData,detail);
+                }
+            }
+        }
+        return add(reportData);
+
+    }
+
+    /**
+     * 报告号修改
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public String update(CwProjectReportData reportData,CwProjectReportNumberReviewApply detail) throws Exception{
+        //获取当前登录人信息
+        UserDTO userDTO = SpringUtil.getBean ( IUserApi.class ).getByToken(TokenProvider.getCurrentToken ( ));
+        CwProjectReportNumberReviewApply review = new CwProjectReportNumberReviewApply();
+        BeanUtils.copyProperties(reportData, review);
+        review.setCreateById(detail.getCreateById());
+        review.setCreateTime(detail.getCreateTime());
+        review.setUpdateById(userDTO.getId());
+        review.setUpdateTime(new Date());
+        review.setId(detail.getId());
+        String currentToken = TokenProvider.getCurrentToken();
+
+
+        if (reportData.getReviewStatus().equals("5")){
+            //设置报告文号、报告流水号
+            CwProjectInfoData infoData = new CwProjectInfoData();
+            //报告文号生成
+            String documentNo = "";
+            if(StringUtils.isNotBlank(reportData.getReportNo())){
+                infoData.setReportNo(reportData.getReportNo());
+            }else{
+                if(StringUtils.isNotBlank(reportData.getReportType())) {
+                    ReportNoDto projectReportByNumber = new ReportNoDto();
+                    switch (reportData.getReportType()) {
+                        case "1":   //基字
+                            do{
+                                documentNo = SpringUtil.getBean ( IWorkAttachmentApi.class ).genSerialNumNoSort(userDTO.getCompanyDTO().getId(), CwProjectInfoData.BIZ_CODE,currentToken);
+                                //根据报告号查询诗剧苦中是否存在
+                                projectReportByNumber = reviewMapper.getProjectReportByNumber(documentNo);
+                            }while (null != projectReportByNumber && StringUtils.isNotBlank(projectReportByNumber.getReportNo()));
+                            break;
+                        case "2":   //咨字
+                            do{
+                                documentNo = SpringUtil.getBean ( IWorkAttachmentApi.class ).genSerialNumNoSort(userDTO.getCompanyDTO().getId(), CwProjectInfoData.CONSULT_BIZ_CODE,currentToken);
+                                //根据报告号查询诗剧苦中是否存在
+                                projectReportByNumber = reviewMapper.getProjectReportByNumber(documentNo);
+                            }while (null != projectReportByNumber && StringUtils.isNotBlank(projectReportByNumber.getReportNo()));
+                            break;
+                        case "3":   //审字
+                            do{
+                                documentNo = SpringUtil.getBean ( IWorkAttachmentApi.class ).genSerialNumNoSort(userDTO.getCompanyDTO().getId(), CwProjectInfoData.EXAMINE_BIZ_CODE,currentToken);
+                                //根据报告号查询诗剧苦中是否存在
+                                projectReportByNumber = reviewMapper.getProjectReportByNumber(documentNo);
+                            }while (null != projectReportByNumber && StringUtils.isNotBlank(projectReportByNumber.getReportNo()));
+                            break;
+                        case "4":   //验字
+                            do{
+                                documentNo = SpringUtil.getBean ( IWorkAttachmentApi.class ).genSerialNumNoSort(userDTO.getCompanyDTO().getId(), CwProjectInfoData.CHECK_BIZ_CODE,currentToken);
+                                //根据报告号查询诗剧苦中是否存在
+                                projectReportByNumber = reviewMapper.getProjectReportByNumber(documentNo);
+                            }while (null != projectReportByNumber && StringUtils.isNotBlank(projectReportByNumber.getReportNo()));
+                            break;
+                        case "5":   //特字
+                            do{
+                                documentNo = SpringUtil.getBean ( IWorkAttachmentApi.class ).genSerialNumNoSort(userDTO.getCompanyDTO().getId(), CwProjectInfoData.SPECIAL_BIZ_CODE,currentToken);
+                                //根据报告号查询诗剧苦中是否存在
+                                projectReportByNumber = reviewMapper.getProjectReportByNumber(documentNo);
+                            }while (null != projectReportByNumber && StringUtils.isNotBlank(projectReportByNumber.getReportNo()));
+                            break;
+                    }
+                }
+
+                if(StringUtils.isNotBlank(reportData.getReportNumber())){
+                    infoData.setReportNumber(reportData.getReportNumber());
+                }else {
+                    //报告流水号生成  根据项目编号去new_line表查询
+                    String reportNumber = infoMapper.selectReportNumberByProjectNo(reportData.getProjectNumber());
+                    if (null != reportNumber) {
+                        int stress = 0;
+                        stress = reportNumber.indexOf("-");//分隔符位置
+                        String substring = reportNumber.substring(stress + 1, reportNumber.length());
+                        int integer = Integer.parseInt(substring);
+
+                        String newReportNumber = "";
+                        if (integer < 10) {
+                            if (integer == 9) {
+                                newReportNumber = reportData.getProjectNumber() + "-010";
+                            } else {
+                                newReportNumber = reportData.getProjectNumber() + "-00" + (integer + 1);
+                            }
+                        } else {
+                            if (integer < 100) {
+                                if (integer == 99) {
+                                    newReportNumber = reportData.getProjectNumber() + "-100";
+                                } else {
+                                    newReportNumber = reportData.getProjectNumber() + "-0" + (integer + 1);
+                                }
+                            } else {
+                                newReportNumber = reportData.getProjectNumber() + "-" + (integer + 1);
+                            }
+                        }
+
+                        infoData.setReportNumber(newReportNumber);
+                    } else {
+                        infoData.setReportNumber(reportData.getProjectNumber() + "-001");
+                    }
+                }
+                infoData.setReportId(detail.getReportId());
+                infoData.setReportNo(documentNo);
+                // 如果数据已经生成报告文号,则不重复生成
+                CwProjectInfoData byReportId = infoMapper.getByReportId(detail.getReportId());
+                if(ObjectUtil.isNotEmpty(byReportId)) {
+                    if (StringUtils.isNotBlank(byReportId.getReportNo())) {
+                        infoData.setReportNo(byReportId.getReportNo());
+                    }
+                }
+                infoMapper.updateByReportId(detail.getReportId(),infoData.getReportNumber(),infoData.getReportNo());
+            }
+
+            if (ObjectUtil.isNotEmpty(reportData)) {
+                if (ObjectUtil.isNotEmpty(reportData.getReportDate())) {
+                    CwProjectInfoData line = new CwProjectInfoData();
+                    line.setReportDate(reportData.getReportDate());
+                    line.setReportId(reportData.getId());
+                    infoMapper.update(line, new QueryWrapper<CwProjectInfoData>().lambda().eq(CwProjectInfoData::getReportId,reportData.getId()));
+                }
+                CwProjectReport report = new CwProjectReport();
+                if (StringUtils.isNotBlank(reportData.getRegisterAddress())){
+                    report.setRegisterAddress(reportData.getRegisterAddress());
+                }
+                if (StringUtils.isNotBlank(reportData.getBusinessLocation())){
+                    report.setBusinessLocation(reportData.getBusinessLocation());
+                }
+                if (StringUtils.isNotBlank(reportData.getSecurityBusiness())){
+                    report.setSecurityBusiness(reportData.getSecurityBusiness());
+                }
+                if (StringUtils.isNotBlank(reportData.getIndustry())){
+                    report.setIndustry(reportData.getIndustry());
+                }
+                if (StringUtils.isNotBlank(reportData.getBusinessObjects())){
+                    report.setBusinessObjects(reportData.getBusinessObjects());
+                }
+                if (ObjectUtil.isNotEmpty(report)) {
+                    cwProjectReportService.updateCwProjectReportDataById(report);
+                }
+            }
+            //将领用类型调整为正常领用
+            mapper.updateApplyTypeByReportId(reportData.getId());
+        }
+        mapper.updateReviewById(review);
+        //对复核数据进行持久化操作
+        //保存复核信息  只保存一个下一节点审核人信息
+        CwProjectReview cwProjectReview = reviewMapper.selectByReportId(reportData.getId());
+        cwProjectReview.setReviewBy(reportData.getReviewBy());
+        reviewMapper.updateReviewById(cwProjectReview);
+        return review.getId();
+    }
+
+    public String add(CwProjectReportData dto) throws Exception{
+
+        //获取当前登录人信息
+        UserDTO userDTO = SpringUtil.getBean ( IUserApi.class ).getByToken(TokenProvider.getCurrentToken ( ));
+        //保存基本信息
+        CwProjectReportNumberReviewApply info = new CwProjectReportNumberReviewApply();
+        BeanUtils.copyProperties(dto, info);
+
+        info.setCreateById(userDTO.getId());
+        info.setCreateTime(new Date());
+        info.setUpdateById(userDTO.getId());
+        info.setUpdateTime(new Date());
+        info.setReportId(dto.getId());
+        mapper.insert(info);
+        //保存复核信息  只保存一个下一节点审核人信息
+        CwProjectReview cwProjectReview = reviewMapper.selectByReportId(dto.getId());
+        cwProjectReview.setReviewBy(dto.getReviewBy());
+        reviewMapper.updateReviewById(cwProjectReview);
+
+        return info.getId();
+    }
+
+
+
+    /**
+     * 保存项目以及其他相关信息
+     * @param reportData
+     * @return
+     * @throws Exception
+     */
+    public String reviewSaveForm(CwProjectReportData reportData) throws Exception{
+        if (StringUtils.isNotEmpty(reportData.getId())){
+
+            CwProjectReportNumberReviewApply detail = mapper.selectById(reportData.getId());
+            if (detail != null){
+                reportData.setCreateBy(reportData.getCreateBy());
+                return update(reportData,detail);
+            } else {
+                //传过来的是报告表id
+                detail = mapper.selectByReportId(reportData.getId());
+                if (detail != null){
+                    reportData.setCreateBy(reportData.getCreateBy());
+                    return update(reportData,detail);
+                }
+            }
+        }
+        return add(reportData);
+
+    }
+}

+ 15 - 1
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReport/service/CwProjectReportService.java

@@ -554,6 +554,9 @@ public class CwProjectReportService extends ServiceImpl<CwProjectReportMapper, C
         if (StringUtils.isNotEmpty(projectReportData.getProjectName())) {
             queryWrapper.like("b.project_name", projectReportData.getProjectName());
         }
+        if (StringUtils.isNotEmpty(projectReportData.getReportName())) {
+            queryWrapper.like("a.report_name", projectReportData.getReportName());
+        }
         if (StringUtils.isNotEmpty(projectReportData.getProjectMasterId())) {
             queryWrapper.eq("b.project_master_id", projectReportData.getProjectMasterId());
         }
@@ -567,7 +570,7 @@ public class CwProjectReportService extends ServiceImpl<CwProjectReportMapper, C
             queryWrapper.like("f.id", projectReportData.getRealHeaderName());
         }
         if (StringUtils.isNotEmpty(projectReportData.getCreateBy().getId())) {
-            queryWrapper.like("a.create_by_id", projectReportData.getCreateBy().getId());
+            queryWrapper.like("a.create_by_id", projectReportData.getCreateBy().getId()).or().like("d.name", projectReportData.getCreateBy().getId());
         }
         //4、签约时间(区间)
         String[] contractDates = projectReportData.getContractDates();
@@ -592,6 +595,17 @@ public class CwProjectReportService extends ServiceImpl<CwProjectReportMapper, C
         if (StringUtils.isNotEmpty(projectReportData.getReviewStatus())) {
             queryWrapper.eq("cw_rev.review_status", projectReportData.getReviewStatus());
         }
+        //报告号签章状态
+        if (StringUtils.isNotEmpty(projectReportData.getApplyStatus())) {
+            if("0".equals(projectReportData.getApplyStatus())){
+                queryWrapper.isNull("cw_na.review_status");
+                if(StringUtils.isBlank(projectReportData.getReviewStatus())){
+                    queryWrapper.eq("cw_rev.review_status","0");
+                }
+            }else{
+                queryWrapper.eq("cw_na.review_status", projectReportData.getApplyStatus());
+            }
+        }
         if (StringUtils.isNotEmpty(projectReportData.getStatus1())) {
             queryWrapper.eq("cw_prs1.status", projectReportData.getStatus1());
         }

+ 2 - 2
jeeplus-modules/jeeplus-finance/src/main/resources/application-finance.yml

@@ -1,2 +1,2 @@
-active: development
-#active: production
+#active: development
+active: production

+ 115 - 0
jeeplus-modules/jeeplus-flowable/src/main/java/com/jeeplus/flowable/utils/SnowFlake.java

@@ -0,0 +1,115 @@
+package com.jeeplus.flowable.utils;
+
+/**
+ * @author: 徐滕
+ * @version: 2023-12-12 18:27
+ */
+public final class SnowFlake {
+
+    // 起始的时间戳
+    private final static long START_TIMESTAMP = 1480166465631L;
+
+    // 每一部分占用的位数,符号位不算在内
+    private final static long SEQUENCE_BIT = 12; // 序列号占用的位数
+    private final static long MACHINE_BIT = 5; // 机器标识占用的位数
+    private final static long DATACENTER_BIT = 5; // 数据中心占用的位数
+
+    // 每一部分的最大值
+    private final static long MAX_SEQUENCE = ~(-1L << SEQUENCE_BIT);
+    private final static long MAX_MACHINE_NUM = ~(-1L << MACHINE_BIT);
+    private final static long MAX_DATACENTER_NUM = ~(-1L << DATACENTER_BIT);
+
+    // 每一部分向左的位移
+    private final static long MACHINE_LEFT = SEQUENCE_BIT;
+    private final static long DATACENTER_LEFT = SEQUENCE_BIT + MACHINE_BIT;
+    private final static long TIMESTAMP_LEFT = DATACENTER_LEFT + DATACENTER_BIT;
+
+    private long datacenterId; // 数据中心
+    private long machineId; // 机器标识
+    private long sequence = 0L; // 序列号
+    private long lastTimestamp = -1L;// 上一次时间戳
+
+    public SnowFlake(long datacenterId, long machineId) {
+        if (datacenterId > MAX_DATACENTER_NUM || datacenterId < 0) {
+            throw new IllegalArgumentException("Datacenter ID can't be greater than MAX_DATACENTER_NUM or less than 0");
+        }
+        if (machineId > MAX_MACHINE_NUM || machineId < 0) {
+            throw new IllegalArgumentException("Machine ID can't be greater than MAX_MACHINE_NUM or less than 0");
+        }
+        this.datacenterId = datacenterId;
+        this.machineId = machineId;
+    }
+
+    /**
+     * 产生下一个ID
+     *
+     * @return 下一个ID
+     */
+    public synchronized long nextId() {
+        long currTimestamp = getTimestamp();
+        if (currTimestamp < lastTimestamp) {
+            throw new RuntimeException("Clock moved backwards. Refusing to generate id");
+        }
+
+        // 如果是同一时间生成的,则进行毫秒内序列
+        if (currTimestamp == lastTimestamp) {
+            sequence = (sequence + 1) & MAX_SEQUENCE;
+            // 序列号已经达到最大值,下一个毫秒
+            if (sequence == 0L) {
+                currTimestamp = getNextTimestamp();
+            }
+        } else {
+            // 时间戳改变,毫秒内序列重置
+            sequence = 0L;
+        }
+
+        // 上次生成ID的时间截
+        lastTimestamp = currTimestamp;
+
+        // 移位并通过或运算拼到一起组成64位的ID
+        return (currTimestamp - START_TIMESTAMP) << TIMESTAMP_LEFT // 时间戳部分
+                | datacenterId << DATACENTER_LEFT // 数据中心部分
+                | machineId << MACHINE_LEFT // 机器标识部分
+                | sequence; // 序列号部分
+    }
+
+    /**
+     * 获取下一个毫秒数
+     *
+     * @return 下一个毫秒数
+     */
+    private long getNextTimestamp() {
+        long timestamp = getTimestamp();
+        while (timestamp <= lastTimestamp) {
+            timestamp = getTimestamp();
+        }
+        return timestamp;
+    }
+
+    /**
+     * 获取当前的时间戳
+     *
+     * @return 当前的时间戳
+     */
+    private long getTimestamp() {
+        return System.currentTimeMillis();
+    }
+    public static String getId() {
+        SnowFlake snowFlake = new SnowFlake(1, 1);
+        return String.valueOf(snowFlake.nextId());
+    }
+
+    public static void main(String[] args) {
+        SnowFlake snowFlake = new SnowFlake(1, 1);
+
+        long startTime = System.nanoTime();
+
+        for (int i = 0; i < 100; i++) {
+            System.out.println(snowFlake.nextId());
+        }
+
+        long endTime = System.nanoTime();
+
+        System.out.println("用时:" + (endTime - startTime) / 1000000 + "ms");
+    }
+}

+ 108 - 0
jeeplus-modules/jeeplus-human/src/main/java/com/jeeplus/human/enrollment/enrollmentRegistration/utils/SnowFlake.java

@@ -0,0 +1,108 @@
+package com.jeeplus.human.enrollment.enrollmentRegistration.utils;
+
+import com.jeeplus.utils.StringUtils;
+
+/**
+ * @author: 徐滕
+ * @version: 2023-12-12 18:27
+ */
+public final class SnowFlake {
+
+    // 起始的时间戳
+    private final static long START_TIMESTAMP = 1480166465631L;
+
+    // 每一部分占用的位数,符号位不算在内
+    private final static long SEQUENCE_BIT = 12; // 序列号占用的位数
+    private final static long MACHINE_BIT = 5; // 机器标识占用的位数
+    private final static long DATACENTER_BIT = 5; // 数据中心占用的位数
+
+    // 每一部分的最大值
+    private final static long MAX_SEQUENCE = ~(-1L << SEQUENCE_BIT);
+    private final static long MAX_MACHINE_NUM = ~(-1L << MACHINE_BIT);
+    private final static long MAX_DATACENTER_NUM = ~(-1L << DATACENTER_BIT);
+
+    // 每一部分向左的位移
+    private final static long MACHINE_LEFT = SEQUENCE_BIT;
+    private final static long DATACENTER_LEFT = SEQUENCE_BIT + MACHINE_BIT;
+    private final static long TIMESTAMP_LEFT = DATACENTER_LEFT + DATACENTER_BIT;
+
+    private long datacenterId; // 数据中心
+    private long machineId; // 机器标识
+    private long sequence = 0L; // 序列号
+    private long lastTimestamp = -1L;// 上一次时间戳
+
+    public SnowFlake(long datacenterId, long machineId) {
+        if (datacenterId > MAX_DATACENTER_NUM || datacenterId < 0) {
+            throw new IllegalArgumentException("Datacenter ID can't be greater than MAX_DATACENTER_NUM or less than 0");
+        }
+        if (machineId > MAX_MACHINE_NUM || machineId < 0) {
+            throw new IllegalArgumentException("Machine ID can't be greater than MAX_MACHINE_NUM or less than 0");
+        }
+        this.datacenterId = datacenterId;
+        this.machineId = machineId;
+    }
+
+    /**
+     * 产生下一个ID
+     *
+     * @return 下一个ID
+     */
+    public synchronized long nextId() {
+        long currTimestamp = getTimestamp();
+        if (currTimestamp < lastTimestamp) {
+            throw new RuntimeException("Clock moved backwards. Refusing to generate id");
+        }
+
+        // 如果是同一时间生成的,则进行毫秒内序列
+        if (currTimestamp == lastTimestamp) {
+            sequence = (sequence + 1) & MAX_SEQUENCE;
+            // 序列号已经达到最大值,下一个毫秒
+            if (sequence == 0L) {
+                currTimestamp = getNextTimestamp();
+            }
+        } else {
+            // 时间戳改变,毫秒内序列重置
+            sequence = 0L;
+        }
+
+        // 上次生成ID的时间截
+        lastTimestamp = currTimestamp;
+
+        // 移位并通过或运算拼到一起组成64位的ID
+        return (currTimestamp - START_TIMESTAMP) << TIMESTAMP_LEFT // 时间戳部分
+                | datacenterId << DATACENTER_LEFT // 数据中心部分
+                | machineId << MACHINE_LEFT // 机器标识部分
+                | sequence; // 序列号部分
+    }
+
+    /**
+     * 获取下一个毫秒数
+     *
+     * @return 下一个毫秒数
+     */
+    private long getNextTimestamp() {
+        long timestamp = getTimestamp();
+        while (timestamp <= lastTimestamp) {
+            timestamp = getTimestamp();
+        }
+        return timestamp;
+    }
+
+    /**
+     * 获取当前的时间戳
+     *
+     * @return 当前的时间戳
+     */
+    private long getTimestamp() {
+        return System.currentTimeMillis();
+    }
+
+    /**
+     * 生成id
+     * @return
+     */
+    public static String getId() {
+        SnowFlake snowFlake = new SnowFlake(1, 1);
+        return String.valueOf(snowFlake.nextId());
+    }
+}

+ 6 - 1
jeeplus-modules/jeeplus-public-modules/src/main/java/com/jeeplus/pubmodules/oss/controller/OssFileController.java

@@ -593,7 +593,12 @@ public class OssFileController {
                         if(map1.size()>0){
                             //将获取到的数据进行遍历,添加父节点的参数信息,防止子节点key键相同,导致数据被覆盖
                             for (String key : map1.keySet()) {
-                                map2.put(parentName + key,map1.get(key));
+                                if(key.contains("-")){
+                                    String newKey = key.replaceAll("-","");
+                                    map2.put(parentName + newKey,map1.get(key));
+                                }else{
+                                    map2.put(parentName + key,map1.get(key));
+                                }
                             }
                         }
                         map.putAll(map2);