Browse Source

会计质量复核和签章功能整合

user5 1 year ago
parent
commit
e421fb5cd9

+ 14 - 1
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReport/controller/CwProjectReportController.java

@@ -83,7 +83,7 @@ public class CwProjectReportController {
      * @return
      */
     @ApiLog(value = "保存财务报告信息-流程", type = LogTypeEnum.SAVE)
-    @PreAuthorize("hasAnyAuthority('cwProjectReport:add','cwProjectReport:edit')")
+    //@PreAuthorize("hasAnyAuthority('cwProjectReport:add','cwProjectReport:edit')")
     @PostMapping("saveForm")
     public ResponseEntity saveForm(@Valid @RequestBody CwProjectReportData reportData) throws Exception {
         String id = projectReportService.saveForm(reportData);
@@ -592,6 +592,19 @@ public class CwProjectReportController {
     }
 
     /**
+     * 撤回复核签章
+     * @param reportId
+     * @return
+     * @throws Exception
+     */
+    @GetMapping("rebackReviewSign")
+    @ApiOperation(value = "撤回签章")
+    public ResponseEntity rebackReviewSign(String reportId) throws Exception {
+        projectReportService.rebackReviewSign(reportId);
+        return ResponseEntity.ok("操作成功");
+    }
+
+    /**
      * 数据导入(临时)
      * @param file
      * @param response

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

@@ -134,6 +134,7 @@ public class CwProjectReportSignatureCallBackController {
                         cwProjectReportService.updateSignatureType(reportSignature);
                         break;
                     case "签章管理员审核":
+                    case "三级复核及签章":
                         reportSignature.setSealAdminStatus("1");
                         cwProjectReportService.updateSignatureType(reportSignature);
                         break;

+ 6 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReport/domain/CwProjectReport.java

@@ -101,6 +101,12 @@ public class CwProjectReport extends BaseEntity {
      */
     private String status;
 
+    /**
+     * 状态
+     */
+    @TableField(exist = false)
+    private String reviewStatus;
+
     //新建行数据
 //    @TableField(exist = false)
 //    List<CwProjectInfoData> cwProjectInfoList;

+ 11 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReport/mapper/CwProjectReportReviewMapper.java

@@ -51,4 +51,15 @@ public interface CwProjectReportReviewMapper extends BaseMapper<CwProjectReview>
     @InterceptorIgnore(tenantLine = "true")
     void updateReviewById(CwProjectReview review);
 
+
+    @InterceptorIgnore(tenantLine = "true")
+    void updateSignatureProcInsId(@Param("procInsId")String procInsId, @Param("processDefinitionId")String processDefinitionId,@Param("id") String id );
+
+    /**
+     * 签章数据获取(部分)
+     * @param id
+     * @return
+     */
+    CwProjectReportData selectProjectReportById(String id);
+
 }

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

@@ -749,7 +749,8 @@
             a.update_by_id,
             a.del_flag,
             a.tenant_id,
-            re.proc_ins_id as procInsReview
+            re.proc_ins_id as procInsReview,
+            re.review_status as reviewStatus
         FROM
             cw_project_report a
             left join cw_project_report_review re on a.id = re.report_id

+ 11 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReport/mapper/xml/CwProjectReportReviewMapper.xml

@@ -130,4 +130,15 @@
             AND del_flag = 0
     </update>
 
+    <update id="updateSignatureProcInsId">
+       update cw_project_report_signature set proc_ins_id = #{procInsId},process_definition_id = #{processDefinitionId}  where id = #{id}
+    </update>
+
+
+    <select id="selectProjectReportById" resultType="com.jeeplus.finance.projectReport.domain.CwProjectReportData">
+        select a.*,b.* from cw_project_report a
+        left join cw_project_report_review b on a.id = b.report_id
+        where a.id = #{id}
+    </select>
+
 </mapper>

+ 35 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReport/service/CwProjectReportReviewService.java

@@ -24,12 +24,14 @@ import org.flowable.bpmn.model.FlowNode;
 import org.apache.commons.beanutils.PropertyUtils;
 import org.flowable.editor.language.json.converter.util.CollectionUtils;
 import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 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.Map;
 import java.util.UUID;
 
 /**
@@ -85,6 +87,19 @@ public class CwProjectReportReviewService extends ServiceImpl<CwProjectReportRev
         UserDTO userDTO = SpringUtil.getBean ( IUserApi.class ).getByToken(TokenProvider.getCurrentToken ( ));
         mapper.updateReviewStatysByReportId(data.getReviewStatus(),data.getId(),data.getNeedUpdate2(),data.getRemark2(),
         data.getNeedUpdate3(),data.getRemark3());
+
+        data = mapper.selectProjectReportById(data.getId());
+        CwProjectReview detail = mapper.selectById(data.getId());
+        if (null == detail){
+            //传过来的是报告表id
+            detail = mapper.selectByReportId(data.getId());
+        }
+        //如果是驳回操作,且是新的流程,则此处应对签章部分功能进行恢复
+        if("1".equals(detail.getNewType())){
+            //对签章表数据状态进行处理
+            String signatureId = cwProjectReportService.modifySignatureStatus(data,data.getReviewStatus());
+        }
+
         //根据id找到报告id,然后根据报告id找到projectid,然后根据projectId修改状态
         String projectId = mapper.getProjectIdByReportId(data.getId());
 
@@ -285,9 +300,29 @@ public class CwProjectReportReviewService extends ServiceImpl<CwProjectReportRev
                         }
                     }
                     infoMapper.updateByReportId(reportData.getId(),infoData.getReportNumber(),infoData.getReportNo());
+                    //必须是盖电子公章和整合后的报告才可走签章流程
+                    if("1".equals(detail.getNewType()) && StringUtils.isNotBlank(reportData.getSignatureType()) && "1".equals(reportData.getSignatureType())){
+                        //生成签章文件
+                        // 有电子章的附件时,走签章流程
+                        Map<String, Object> signatureContractId = cwProjectReportService.createSignatureContractId(reportData);
+                        boolean bool = (boolean)signatureContractId.get("success");
+                        if (bool) {
+                            String signatureId = cwProjectReportService.getSignature(reportData);
+                            mapper.updateSignatureProcInsId(detail.getProcInsId(),detail.getProcessDefinitionId(),signatureId);
+                            System.out.println(signatureId);
+                        }
+                    }
+
                 }
                 if ("三级复核".equals(currentTask) || "三级复核及签章".equals(currentTask)) {
                     review.setReviewStatus("5");
+                    if("1".equals(detail.getNewType())){
+                        //原签章表中的状态值也调整为5
+                        String signatureId = cwProjectReportService.modifySignatureStatus(reportData,"5");
+                        //System.out.println(signatureId);
+                        //复核完成后生成新的归档信息数据
+                        //cwProjectReportService.saveReportArchive(reportData.getId());
+                    }
                 }
             }
         }

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

@@ -17,6 +17,7 @@ import com.google.common.collect.Maps;
 import com.jeeplus.common.TokenProvider;
 import com.jeeplus.common.constant.CacheNames;
 import com.jeeplus.common.redis.RedisUtils;
+import com.jeeplus.common.utils.ResponseUtil;
 import com.jeeplus.core.query.QueryWrapperGenerator;
 import com.jeeplus.finance.common.flowable.dto.CommitParamDTO;
 import com.jeeplus.finance.invoice.util.SignaturePostUtil;
@@ -147,6 +148,7 @@ public class CwProjectReportService extends ServiceImpl<CwProjectReportMapper, C
             if (report != null){
                 reportData.setCreateBy(reportData.getCreateBy());
                 reportData.setProcInsReview(report.getProcInsReview());
+                reportData.setReviewStatus(report.getReviewStatus());
                 return update(reportData);
             }
         }
@@ -180,7 +182,6 @@ public class CwProjectReportService extends ServiceImpl<CwProjectReportMapper, C
         infoData.setUpdateTime(new Date());
         infoMapper.updateCwProjectInfoDataById(infoData);
 
-        createSignatureContractId(reportData);
 
         //对上传的文件数据进行持久化操作
         List<ProjectReportWorkAttachmentDTO> cwFileInfoList = report.getCwFileInfoList();
@@ -2393,6 +2394,27 @@ public class CwProjectReportService extends ServiceImpl<CwProjectReportMapper, C
         return cwProjectReportSignature.getId();
     }
 
+    /**
+     * 将签章表中的流程状态调整为已完成状态
+     * @param cwProjectReportData
+     * @return
+     */
+    public String modifySignatureStatus (CwProjectReportData cwProjectReportData,String status){
+        String signatureType = cwProjectReportData.getSignatureType();
+        CwProjectReportSignature cwProjectReportSignature = cwProjectReportSignatureMapper.selectOne(new QueryWrapper<CwProjectReportSignature>().lambda()
+                .eq(CwProjectReportSignature::getReportId, cwProjectReportData.getId())
+                .eq(CwProjectReportSignature::getType, signatureType)
+        );
+        cwProjectReportSignature.setStatus(status);
+        if("4".equals(status)){
+            cwProjectReportSignature.setSealAdminStatus("0");
+            cwProjectReportSignature.setSignatureAnnotator1Status("0");
+            cwProjectReportSignature.setSignatureAnnotator2Status("0");
+        }
+        cwProjectReportSignatureMapper.updateById(cwProjectReportSignature);
+        return cwProjectReportSignature.getId();
+    }
+
     public CwProjectReportData queryByContractId(String contractId){
         CwProjectReportData reportData = reportMapper.queryByContractId(contractId);
         return reportData;
@@ -2614,6 +2636,7 @@ public class CwProjectReportService extends ServiceImpl<CwProjectReportMapper, C
                     map.put("signatureType", reportSignatureInfo.getSignatureAnnotator2Status());
                     break;
                 case "签章管理员审核":
+                case "三级复核及签章":
                     map.put("signatureType", reportSignatureInfo.getSealAdminStatus());
                     break;
             }
@@ -2770,6 +2793,52 @@ public class CwProjectReportService extends ServiceImpl<CwProjectReportMapper, C
     }
 
     /**
+     * 根据报告id,撤回复核签章
+     * @param reportId
+     */
+    public void rebackReviewSign (String reportId) {
+        // 通过报告id获取签章数据
+        List<CwProjectReportSignature> signList = cwProjectReportSignatureMapper.selectList(new QueryWrapper<CwProjectReportSignature>().lambda().eq(CwProjectReportSignature::getReportId, reportId));
+        // 将签章数据的状态改为初始值
+        if (CollectionUtil.isNotEmpty(signList)) {
+            signList.stream().forEach(item -> {
+                item.setStatus("0"); // 签章流程的状态改为:未发起
+                item.setSignatureAnnotator1Status("0"); // 签字注师1签章状态改为:未签章
+                item.setSignatureAnnotator2Status("0"); // 签字注师2签章状态改为:未签章
+                item.setSealAdminStatus("0"); // 盖章管理员签章状态改为:未签章
+                cwProjectReportSignatureMapper.updateById(item); // 将修改的数据保存
+            });
+        }
+        // 删除已盖章的附件
+        // 1. 查询到当前报告的附件
+//        List<WorkAttachmentInfo> workAttachments = ossServiceMapper.selectList(new LambdaQueryWrapper<WorkAttachmentInfo>().eq(WorkAttachmentInfo::getAttachmentId, reportId));
+        List<WorkAttachmentInfo> workAttachments = SpringUtil.getBean(IWorkAttachmentApi.class).selectListByAttachmentId(reportId);
+        // 2. 查询哪些附件是已盖章的
+        List<String> delIds = new ArrayList<>();
+        workAttachments.stream().forEach(item -> {
+            int i = reportMapper.checkIsSign(item.getId());
+            if (i != 0) {
+                delIds.add(item.getId());
+            }
+        });
+        // 3. 删除已盖章的附件(报告签章附件关联表  cw_project_report_file)
+        workAttachments.stream().forEach(item -> {
+            reportMapper.deleteIsSign(item.getId());  // 物理删除
+        });
+        // 4. 删除已盖章的附件(附件表 work_attachment)
+        if (CollectionUtil.isNotEmpty(delIds)) {
+            SpringUtil.getBean ( IWorkAttachmentApi.class ).deleteByIds(JSON.toJSONString(delIds));
+//            ossServiceMapper.deleteBatchIds(delIds);  // 逻辑删除
+        }
+        // 5. 根据报告id删除报告归档信息  // 逻辑删除
+        cwProjectReportArchiveMapper.delete(new LambdaQueryWrapper<CwProjectReportArchive>().eq(CwProjectReportArchive::getReportId, reportId));
+
+        //6.修改质量复核流程信息
+        mapper.updateReviewStatusByReportId("0",reportId);
+
+    }
+
+    /**
      * 根据报告id修改签字注师1、2,所属行业以及业务对象的值
      * @param cwProjectReport
      */

+ 3 - 0
jeeplus-modules/jeeplus-human/src/main/resources/application-human-development.yml

@@ -25,6 +25,9 @@ signature_http_top: http://192.168.2.130:9182
 
 #会计公司圆章
 company_round_seal_finance_id: 3050351578005561392
+
+#评估公司圆章
+company_round_seal_assess_id: 3169843091325657220
 #离职流程id
 dimission_id: 3167367898359472980
 

+ 5 - 1
jeeplus-modules/jeeplus-human/src/main/resources/application-human-production.yml

@@ -32,7 +32,11 @@ signature: 19ed90930b5b84800ea582e34b71d1dd
 signature_http_top: http://121.40.158.10:9182
 
 #会计公司圆章
-company_round_seal_finance_id: 2894161942659543252
+company_round_seal_finance_id: 3048906729846612268
+
+#评估公司圆章
+company_round_seal_assess_id: 3169845144496476527
+
 #离职流程id
 dimission_id: 3032265972836684447