Browse Source

签章管理

sangwenwei 1 năm trước cách đây
mục cha
commit
dff286afc4

+ 173 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/signatureDaily/controller/SignatureDailyOfficeWorkController.java

@@ -0,0 +1,173 @@
+package com.jeeplus.finance.signatureDaily.controller;
+
+import cn.hutool.extra.spring.SpringUtil;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.common.TokenProvider;
+import com.jeeplus.common.excel.ExcelOptions;
+import com.jeeplus.common.excel.annotation.ExportMode;
+import com.jeeplus.common.redis.RedisUtils;
+import com.jeeplus.common.utils.ResponseUtil;
+import com.jeeplus.finance.invoice.util.EasyPoiUtil;
+import com.jeeplus.finance.invoice.util.SignaturePostUtil;
+import com.jeeplus.finance.projectReport.domain.CwProjectReportData;
+import com.jeeplus.finance.reimbursementApproval.approvalInfo.domain.CwReimbursementInfo;
+import com.jeeplus.finance.reimbursementApproval.approvalInfo.service.dto.QueryListDto;
+import com.jeeplus.finance.reimbursementApproval.approvalInfo.service.dto.RetureListDto;
+import com.jeeplus.finance.reimbursementApproval.approvalInfo.service.dto.SaveInfoDto;
+import com.jeeplus.finance.signatureDaily.domain.SignatureDailyOfficeWork;
+import com.jeeplus.finance.signatureDaily.service.SignatureDaulyOfficeWorkService;
+import com.jeeplus.finance.signatureDaily.service.dto.SignatureDailyOfficeWorkDTO;
+import com.jeeplus.logging.annotation.ApiLog;
+import com.jeeplus.logging.constant.enums.LogTypeEnum;
+import com.jeeplus.sys.feign.IUserApi;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
+
+@RestController
+@Api(tags ="日常办公签章")
+@RequestMapping(value = "/cw/signatureDaily")
+public class SignatureDailyOfficeWorkController {
+
+    @Resource
+    private SignatureDaulyOfficeWorkService signatureDaulyOfficeWorkService;
+    @Autowired
+    private RedisUtils redisUtils;
+
+    /**
+     * 列表查询
+     * @param
+     * @return
+     */
+    @ApiOperation(value = "列表查询")
+    @GetMapping("/list")
+    public ResponseEntity<IPage<SignatureDailyOfficeWorkDTO>> list(Page<SignatureDailyOfficeWorkDTO> page, SignatureDailyOfficeWorkDTO dto) throws Exception{
+        IPage<SignatureDailyOfficeWorkDTO> iPage = signatureDaulyOfficeWorkService.list(page, dto);
+        return ResponseEntity.ok(iPage);
+    }
+
+    /**
+     * 根据id查询数据
+     */
+    @ApiOperation(value = "查询")
+    @GetMapping("/findById")
+    public ResponseEntity<SignatureDailyOfficeWorkDTO> findById(@RequestParam String id) throws Exception{
+        SignatureDailyOfficeWorkDTO dto = signatureDaulyOfficeWorkService.findById(id);
+        return ResponseEntity.ok(dto);
+    }
+
+    /**
+     * 新增/修改
+     * @param dto
+     * @return
+     */
+    @ApiOperation(value = "新增、修改")
+    @PostMapping("/save")
+    public ResponseEntity<String> save(@RequestBody SignatureDailyOfficeWorkDTO dto) throws Exception{
+        SignatureDailyOfficeWork s = signatureDaulyOfficeWorkService.save(dto);
+        return ResponseUtil.newInstance().add("businessTable", "cw_signature_daily_office_work")
+                .add("businessId", s.getId())
+                .add("number", s.getNumber())
+                .ok ("操作成功");
+    }
+
+    /**
+     * 删除
+     * @param id
+     * @return
+     */
+    @ApiOperation(value = "删除")
+    @GetMapping("/remove")
+    public ResponseEntity<String> remove(@RequestParam String id){
+        String s = signatureDaulyOfficeWorkService.remove(id);
+        return ResponseEntity.ok(s);
+    }
+
+    /**
+     * 根据id修改状态status
+     */
+    @ApiOperation(value = "根据id修改状态status")
+    @PostMapping(value = "updateStatusById")
+    public void updateStatusById(@RequestBody SignatureDailyOfficeWorkDTO dto) {
+        signatureDaulyOfficeWorkService.updateStatusById(dto);
+    }
+
+    @ApiLog(value = "日常签章数据", type = LogTypeEnum.EXPORT)
+    @GetMapping("exportFile")
+    @ApiOperation(value = "日常签章数据")
+    public void exportFile(Page<SignatureDailyOfficeWorkDTO> page, SignatureDailyOfficeWorkDTO dto, ExcelOptions options, HttpServletResponse response) throws Exception {
+        String fileName = options.getFilename();
+        String sheetName = options.getSheetName();
+        List<SignatureDailyOfficeWorkDTO> result = new ArrayList<>();
+        if ( ExportMode.current.equals ( options.getMode() ) ) {
+            result = signatureDaulyOfficeWorkService.list2 (page,dto).getRecords();
+        } else if (ExportMode.selected.equals ( options.getMode() )) {
+            result = signatureDaulyOfficeWorkService.list2 (page,dto).getRecords().stream ( ).filter ( item ->
+                    options.getSelectIds ( ).contains ( item.getId ( ) )
+            ).collect ( Collectors.toList ( ) );
+        } else {
+            page.setSize (-1);
+            page.setCurrent (0);
+            result = signatureDaulyOfficeWorkService.list2 (page,dto).getRecords();
+        }
+        EasyPoiUtil.exportExcel ( result, sheetName,  sheetName, SignatureDailyOfficeWorkDTO.class, fileName, response );
+
+    }
+
+    /**
+     * 根据报告签章id查询签章审核节点信息
+     * @param id
+     * @return
+     */
+    @ApiLog("根据报告签章id查询签章审核节点信息")
+    @GetMapping("getAuditNodeById")
+    public ResponseEntity getAuditNodeById(@RequestParam("id") String id) {
+        Map<String, Object> auditNodeByReportId = signatureDaulyOfficeWorkService.getAuditNodeById(id);
+        return ResponseEntity.ok (auditNodeByReportId);
+    }
+
+    /**
+     * 根据报告签章id查询签章审核节点信息
+     * @param id
+     * @return
+     */
+    @ApiLog("根据报告签章id查询签章审核节点信息")
+    @GetMapping("getSignatureTypeById")
+    public ResponseEntity getSignatureTypeById(@RequestParam("id") String id) {
+        Map<String, Object> signatureTypeById = signatureDaulyOfficeWorkService.getSignatureTypeById(id);
+        return ResponseEntity.ok (signatureTypeById);
+    }
+
+    /**
+     * 签章链接
+     * @param dto
+     * @return
+     */
+    @ApiLog(value = "签章链接", type = LogTypeEnum.SAVE)
+    @PostMapping("saveFlowableParam")
+    public ResponseEntity<String> saveFlowableParam(@Valid @RequestBody SignatureDailyOfficeWorkDTO dto) {
+
+        SignatureDailyOfficeWorkDTO dailyOfficeWorkDTO = signatureDaulyOfficeWorkService.findById(dto.getId());
+        // 获取签章页面url
+        String mobile = SpringUtil.getBean ( IUserApi.class ).getByToken(TokenProvider.getCurrentToken()).getMobile();
+        String signatureContractUrl = SignaturePostUtil.getSignatureContractUrl(dailyOfficeWorkDTO.getSignatureContractId(), mobile);
+        // 将数据存储到redis中,key为contractId
+        redisUtils.set("cw_signature_report_" + dailyOfficeWorkDTO.getSignatureContractId(),dailyOfficeWorkDTO.getId());
+        redisUtils.expire("cw_signature_report_" + dailyOfficeWorkDTO.getSignatureContractId(),24, TimeUnit.HOURS);
+        return ResponseEntity.ok(signatureContractUrl);
+    }
+
+}

+ 83 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/signatureDaily/domain/SignatureDailyOfficeWork.java

@@ -0,0 +1,83 @@
+package com.jeeplus.finance.signatureDaily.domain;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+@TableName("cw_signature_daily_office_work")
+public class SignatureDailyOfficeWork extends BaseEntity {
+    //日常签章编号(字典值)
+    public static final String BIZ_CODE = "31";
+
+    /**
+     * 备注
+     */
+    private String remarks;
+
+    /**
+     * 签章描述
+     */
+    private String signatureName;
+
+    /**
+     * 编号
+     */
+    private String number;
+
+    /**
+     * 签章类型
+     */
+    private String signatureType;
+
+    /**
+     * 状态
+     */
+    private String status;
+
+    /**
+     * 流程信息
+     */
+    private String procInsId;
+    private String processDefinitionId;
+    @TableField(exist = false)
+    private String taskId;
+
+    /**
+     * 签章contractId
+     */
+    private String signatureContractId;
+    /**
+     * 签章documentId
+     */
+    private String signatureDocumentId;
+    /**
+     * 签章url地址
+     */
+    private String signatureUrl;
+    /*
+    签章完成情况
+     */
+    private Integer signatureUrlFlag;
+    /*
+    签章附件名称
+     */
+    private String signatureFileName;
+    /**
+     * 签属时间
+     */
+    private Date signatureUploadDate;
+    /*
+    签属文件上传人
+     */
+    private String signatureUploadFileUser;
+    /*
+    签章状态
+     */
+    private Integer signatureFlag;
+
+
+}

+ 76 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/signatureDaily/domain/SignatureProjectReportRelation.java

@@ -0,0 +1,76 @@
+package com.jeeplus.finance.signatureDaily.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+@TableName("cw_signature_project_report_relation")
+public class SignatureProjectReportRelation extends BaseEntity {
+
+    /**
+     * 备注
+     */
+    private String remarks;
+
+    /**
+     * 签章描述
+     */
+    private String signatureName;
+
+    /**
+     * 签章编号
+     */
+    private String number;
+
+    /**
+     * 签章类型
+     */
+    private String signatureType;
+
+    /**
+     * 状态
+     */
+    private String status;
+
+    /**
+     * 流程信息
+     */
+    private String procInsId;
+    private String processDefinitionId;
+
+    /**
+     * 签章contractId
+     */
+    private String signatureContractId;
+    /**
+     * 签章documentId
+     */
+    private String signatureDocumentId;
+    /**
+     * 签章url地址
+     */
+    private String signatureUrl;
+    /*
+    签章完成情况
+     */
+    private Integer signatureUrlFlag;
+    /*
+    签章附件名称
+     */
+    private String signatureFileName;
+    /**
+     * 签属时间
+     */
+    private Date signatureUploadDate;
+    /*
+    签属文件上传人
+     */
+    private String signatureUploadFileUser;
+    /*
+    签章状态
+     */
+    private Integer signatureFlag;
+}

+ 25 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/signatureDaily/domain/SignatureProjectReportRelevanceNumber.java

@@ -0,0 +1,25 @@
+package com.jeeplus.finance.signatureDaily.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+
+@Data
+@TableName("signature_project_report_relevance_number")
+public class SignatureProjectReportRelevanceNumber {
+
+    /**
+     * 报告签章表id
+     */
+    private String signatureProjectReportId;
+
+    /**
+     * 项目id
+     */
+    private String projectId;
+
+    /**
+     * 项目来源(1:评估,2:会计)
+     */
+    private String fromProject;
+}

+ 33 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/signatureDaily/mapper/SignatureDailyOfficeWorkMapper.java

@@ -0,0 +1,33 @@
+package com.jeeplus.finance.signatureDaily.mapper;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.finance.signatureDaily.domain.SignatureDailyOfficeWork;
+import com.jeeplus.finance.signatureDaily.service.dto.SignatureDailyOfficeWorkDTO;
+import com.jeeplus.sys.domain.WorkAttachmentInfo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface SignatureDailyOfficeWorkMapper extends BaseMapper<SignatureDailyOfficeWork> {
+    IPage<SignatureDailyOfficeWorkDTO> findList(Page<SignatureDailyOfficeWorkDTO> page,@Param(Constants.WRAPPER) QueryWrapper<SignatureDailyOfficeWorkDTO> queryWrapper);
+    IPage<SignatureDailyOfficeWorkDTO> findList2(Page<SignatureDailyOfficeWorkDTO> page,@Param(Constants.WRAPPER) QueryWrapper<SignatureDailyOfficeWorkDTO> queryWrapper);
+
+    SignatureDailyOfficeWorkDTO findById(@Param("id") String id);
+
+    List<WorkAttachmentInfo> findFiles(@Param("id") String id);
+
+    void updateStatusById(@Param("status") String status,@Param("id") String id);
+
+    void updateSignatureInfo(SignatureDailyOfficeWorkDTO dailyOfficeWork);
+
+    SignatureDailyOfficeWorkDTO getByDocumentId(@Param("documentId") String documentId);
+
+    SignatureDailyOfficeWorkDTO getByContractId(@Param("contractId") String contractId);
+}

+ 194 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/signatureDaily/mapper/xml/SignatureDailyOfficeWorkMapper.xml

@@ -0,0 +1,194 @@
+<?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.signatureDaily.mapper.SignatureDailyOfficeWorkMapper">
+
+    <select id="findList" resultType="com.jeeplus.finance.signatureDaily.service.dto.SignatureDailyOfficeWorkDTO">
+        select distinct
+            a.id,
+            a.create_by_id,
+            a.create_time,
+            a.signature_name,
+            a.number,
+            a.signature_type,
+            a.status,
+            a.remarks,
+            a.proc_ins_id,
+            a.process_definition_id,
+            c.name as createName,
+            d.ID_ AS task_id,
+            so.name as officeName
+        from cw_signature_daily_office_work a
+        LEFT JOIN sys_user c ON a.create_by_id =  c.id
+        left join sys_office so on so.id = c.office_id and so.del_flag = 0
+        left join sys_user_manage_office sumo on sumo.office_id = c.office_id
+        LEFT JOIN act_ru_task d ON a.proc_ins_id = d.PROC_INST_ID_
+        ${ew.customSqlSegment}
+		ORDER BY a.create_time DESC
+    </select>
+
+    <select id="findList2" resultType="com.jeeplus.finance.signatureDaily.service.dto.SignatureDailyOfficeWorkDTO">
+        select distinct
+            a.id,
+            a.create_by_id,
+            a.create_time,
+            a.signature_name,
+            a.number,
+            a.signature_type,
+            a.status,
+            a.remarks,
+            a.proc_ins_id,
+            a.process_definition_id,
+            c.name as createName,
+            d.ID_ AS task_id,
+            so.name as officeName
+        from cw_signature_project_report_relation a
+        LEFT JOIN sys_user c ON a.create_by_id =  c.id
+        left join sys_office so on so.id = c.office_id and so.del_flag = 0
+        left join sys_user_manage_office sumo on sumo.office_id = c.office_id
+        LEFT JOIN act_ru_task d ON a.proc_ins_id = d.PROC_INST_ID_
+        ${ew.customSqlSegment}
+		ORDER BY a.create_time DESC
+    </select>
+
+    <select id="findById" resultType="com.jeeplus.finance.signatureDaily.service.dto.SignatureDailyOfficeWorkDTO">
+        select distinct
+            a.id,
+            a.create_by_id,
+            a.create_time,
+            a.signature_name,
+            a.number,
+            a.signature_type,
+            a.status,
+            a.remarks,
+            a.proc_ins_id,
+            a.process_definition_id,
+            a.signature_contract_id,
+            a.signature_document_id,
+            a.signature_url,
+            a.signature_url_flag,
+            a.signature_file_name,
+            a.signature_upload_date,
+            a.signature_upload_file_user,
+            a.signature_flag,
+            c.name as createName,
+            d.ID_ AS task_id,
+            so.name as officeName
+        from cw_signature_daily_office_work a
+        LEFT JOIN sys_user c ON a.create_by_id =  c.id
+        left join sys_office so on so.id = c.office_id and so.del_flag = 0
+        left join sys_user_manage_office sumo on sumo.office_id = c.office_id
+        LEFT JOIN act_ru_task d ON a.proc_ins_id = d.PROC_INST_ID_
+        where a.id = #{id} and a.del_flag = 0
+    </select>
+
+    <select id="findFiles" resultType="com.jeeplus.sys.domain.WorkAttachmentInfo">
+		SELECT
+			id,
+			url,
+			attachment_name AS `name`,
+			create_by_id AS `by`,
+			attachment_flag AS `attachmentFlag`,
+			create_time
+		FROM
+			work_attachment
+		WHERE
+			del_flag = 0
+			AND attachment_id = #{id}
+	</select>
+
+    <update id="updateStatusById">
+        update cw_signature_daily_office_work set status = #{status} where id = #{id}
+    </update>
+
+    <update id="updateSignatureInfo" >
+        UPDATE cw_signature_daily_office_work SET
+        <if test="signatureDocumentId != null and signatureDocumentId != ''">
+            signature_document_id = #{signatureDocumentId}
+        </if>
+        <if test="signatureUrl != null">
+            ,signature_url = #{signatureUrl}
+        </if>
+        <if test="signatureUrlFlag != null">
+            ,signature_url_flag = #{signatureUrlFlag}
+        </if>
+        <if test="signatureContractId != null and signatureContractId != ''">
+            ,signature_contract_id = #{signatureContractId}
+        </if>
+        <if test="signatureFlag != null">
+            ,signature_flag = #{signatureFlag}
+        </if>
+        <if test="signatureFileName != null and signatureFileName != ''">
+            ,signature_file_name = #{signatureFileName}
+        </if>
+        <if test="signatureUploadFileUser != null and signatureUploadFileUser.id != null and signatureUploadFileUser.id != ''">
+            ,signature_upload_file_user = #{signatureUploadFileUser.id}
+        </if>
+        <if test="signatureUploadDate != null">
+            ,signature_upload_date = #{signatureUploadDate}
+        </if>
+        WHERE id = #{id}
+    </update>
+
+    <select id="getByDocumentId" resultType="com.jeeplus.finance.signatureDaily.service.dto.SignatureDailyOfficeWorkDTO">
+        select distinct
+            a.id,
+            a.create_by_id,
+            a.create_time,
+            a.signature_name,
+            a.number,
+            a.signature_type,
+            a.status,
+            a.remarks,
+            a.proc_ins_id,
+            a.process_definition_id,
+            a.signature_contract_id,
+            a.signature_document_id,
+            a.signature_url,
+            a.signature_url_flag,
+            a.signature_file_name,
+            a.signature_upload_date,
+            a.signature_upload_file_user,
+            a.signature_flag,
+            c.name as createName,
+            d.ID_ AS task_id,
+            so.name as officeName
+        from cw_signature_daily_office_work a
+        LEFT JOIN sys_user c ON a.create_by_id =  c.id
+        left join sys_office so on so.id = c.office_id and so.del_flag = 0
+        left join sys_user_manage_office sumo on sumo.office_id = c.office_id
+        LEFT JOIN act_ru_task d ON a.proc_ins_id = d.PROC_INST_ID_
+        where a.signature_document_id like concat ('%',#{documentId},'%') and a.del_flag = 0
+    </select>
+
+    <select id="getByContractId" resultType="com.jeeplus.finance.signatureDaily.service.dto.SignatureDailyOfficeWorkDTO">
+        select distinct
+            a.id,
+            a.create_by_id,
+            a.create_time,
+            a.signature_name,
+            a.number,
+            a.signature_type,
+            a.status,
+            a.remarks,
+            a.proc_ins_id,
+            a.process_definition_id,
+            a.signature_contract_id,
+            a.signature_document_id,
+            a.signature_url,
+            a.signature_url_flag,
+            a.signature_file_name,
+            a.signature_upload_date,
+            a.signature_upload_file_user,
+            a.signature_flag,
+            c.name as createName,
+            d.ID_ AS task_id,
+            so.name as officeName
+        from cw_signature_daily_office_work a
+        LEFT JOIN sys_user c ON a.create_by_id =  c.id
+        left join sys_office so on so.id = c.office_id and so.del_flag = 0
+        left join sys_user_manage_office sumo on sumo.office_id = c.office_id
+        LEFT JOIN act_ru_task d ON a.proc_ins_id = d.PROC_INST_ID_
+        where a.signature_contract_id = #{contractId} and a.del_flag = 0
+    </select>
+
+</mapper>

+ 663 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/signatureDaily/service/SignatureDaulyOfficeWorkService.java

@@ -0,0 +1,663 @@
+package com.jeeplus.finance.signatureDaily.service;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.extra.spring.SpringUtil;
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.jeeplus.common.TokenProvider;
+import com.jeeplus.core.query.QueryWrapperGenerator;
+import com.jeeplus.finance.contractRegistration.mapper.ContractInfoMapper;
+import com.jeeplus.finance.invoice.util.SignaturePostUtil;
+import com.jeeplus.finance.projectReport.domain.*;
+import com.jeeplus.finance.reimbursementApproval.approvalInfo.domain.CwReimbursementInfo;
+import com.jeeplus.finance.reimbursementApproval.approvalInfo.service.dto.QueryListDto;
+import com.jeeplus.finance.reimbursementApproval.approvalInfo.service.dto.RetureListDto;
+import com.jeeplus.finance.signatureDaily.domain.SignatureDailyOfficeWork;
+import com.jeeplus.finance.signatureDaily.mapper.SignatureDailyOfficeWorkMapper;
+import com.jeeplus.finance.signatureDaily.service.dto.SignatureDailyOfficeWorkDTO;
+import com.jeeplus.finance.utils.Global;
+import com.jeeplus.flowable.feign.IFlowableApi;
+import com.jeeplus.sys.domain.WorkAttachmentInfo;
+import com.jeeplus.sys.feign.IUserApi;
+import com.jeeplus.sys.feign.IWorkAttachmentApi;
+import com.jeeplus.sys.service.dto.UserDTO;
+import net.sf.json.JSONObject;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.io.File;
+import java.util.*;
+
+@Service
+@Transactional
+public class SignatureDaulyOfficeWorkService {
+    private static final byte[] SYN_BYTE = new byte[0];
+    private static final String HTTPTOP = Global.getConfig("signature_http_top");
+
+    /**
+     * 公司圆章-横
+     */
+    private static final String COMPANYROUNDSEALID = Global.getConfig("company_round_seal_id");
+    //日常签章申请流程id
+    private static final String DAILYOFFICEWORK = Global.getConfig("signature_daily_office_work");
+
+    @Resource
+    private SignatureDailyOfficeWorkMapper signatureDailyOfficeWorkMapper;
+
+    @Resource
+    private ContractInfoMapper mapper;
+
+    @Resource
+    private IFlowableApi flowTaskService;
+
+
+    /**
+     * 列表查询
+     * @param page
+     * @param dto
+     * @return
+     */
+    public IPage<SignatureDailyOfficeWorkDTO> list(Page<SignatureDailyOfficeWorkDTO> page, SignatureDailyOfficeWorkDTO dto) throws Exception {
+        QueryWrapper<SignatureDailyOfficeWorkDTO> queryWrapper = QueryWrapperGenerator.buildQueryCondition(dto, SignatureDailyOfficeWorkDTO.class);
+        /**
+         * a表是reimbursementInfo
+         * b表是reimbursementDetailInfo
+         * c表是sysUser
+         */
+        queryWrapper.eq("a.del_flag", 0);
+
+        // 创建时间
+        if (dto.getDates() != null) {
+            queryWrapper.between("a.create_time", dto.getDates()[0], dto.getDates()[1]);
+        }
+        // 创建人
+        if (StringUtils.isNotEmpty(dto.getCreateById())) {
+            queryWrapper.apply("(a.create_by_id",dto.getCreateById());
+        }
+
+        // 状态
+        if (StringUtils.isNotEmpty(dto.getStatus())) {
+            queryWrapper.eq("a.status", dto.getStatus());
+        }
+        // 部门
+        if (StringUtils.isNotEmpty(dto.getOfficeId())) {
+            queryWrapper.eq("so.id", dto.getOfficeId());
+        }
+
+        // 签章类型
+        if (StringUtils.isNotBlank(dto.getSignatureType())) {
+            queryWrapper.eq("a.signature_type", dto.getSignatureType());
+        }
+
+        // 签章描述
+        if (StringUtils.isNotEmpty(dto.getSignatureName())) {
+            queryWrapper.like("a.signature_name", dto.getSignatureName());
+        }
+
+
+        IPage<SignatureDailyOfficeWorkDTO> list = signatureDailyOfficeWorkMapper.findList(page, queryWrapper);
+
+        return list;
+    }
+
+    /**
+     * 用于导出数据
+     * @param page
+     * @param dto
+     * @return
+     * @throws Exception
+     */
+    public IPage<SignatureDailyOfficeWorkDTO> list2(Page<SignatureDailyOfficeWorkDTO> page, SignatureDailyOfficeWorkDTO dto) throws Exception {
+        QueryWrapper<SignatureDailyOfficeWorkDTO> queryWrapper = QueryWrapperGenerator.buildQueryCondition(dto, SignatureDailyOfficeWorkDTO.class);
+        /**
+         * a表是reimbursementInfo
+         * b表是reimbursementDetailInfo
+         * c表是sysUser
+         */
+        queryWrapper.eq("a.del_flag", 0);
+
+        // 创建时间
+        if (dto.getDates() != null) {
+            queryWrapper.between("a.create_time", dto.getDates()[0], dto.getDates()[1]);
+        }
+        // 创建人
+        if (StringUtils.isNotEmpty(dto.getCreateById())) {
+            queryWrapper.apply("(a.create_by_id",dto.getCreateById());
+        }
+
+        // 状态
+        if (StringUtils.isNotEmpty(dto.getStatus())) {
+            queryWrapper.eq("a.status", dto.getStatus());
+        }
+        // 部门
+        if (StringUtils.isNotEmpty(dto.getOfficeId())) {
+            queryWrapper.eq("so.id", dto.getOfficeId());
+        }
+
+        // 签章类型
+        if (StringUtils.isNotBlank(dto.getSignatureType())) {
+            queryWrapper.eq("a.signature_type", dto.getSignatureType());
+        }
+
+        // 签章描述
+        if (StringUtils.isNotEmpty(dto.getSignatureName())) {
+            queryWrapper.like("a.signature_name", dto.getSignatureName());
+        }
+
+
+        IPage<SignatureDailyOfficeWorkDTO> list = signatureDailyOfficeWorkMapper.findList2(page, queryWrapper);
+
+        return list;
+    }
+
+    /*8
+    根据id查询数据
+     */
+    public SignatureDailyOfficeWorkDTO findById(String id) {
+        SignatureDailyOfficeWorkDTO dto = new SignatureDailyOfficeWorkDTO();
+        SignatureDailyOfficeWorkDTO dailyOfficeWorkDTO=signatureDailyOfficeWorkMapper.findById(id);
+        if (ObjectUtil.isNotEmpty(dailyOfficeWorkDTO)){
+            BeanUtils.copyProperties(dailyOfficeWorkDTO, dto);
+            //查询附件信息
+            List<WorkAttachmentInfo> fileList = signatureDailyOfficeWorkMapper.findFiles(id);
+
+            if (CollectionUtils.isNotEmpty(fileList)) {
+                for (WorkAttachmentInfo i : fileList) {
+                    i.setCreateBy(SpringUtil.getBean ( IUserApi.class ).getById(i.getBy()));
+                }
+            }
+            dto.setFiles(fileList);
+        }
+        return dto;
+    }
+
+    /**
+     * 新增或修改
+     * @param dto
+     * @return
+     */
+    public SignatureDailyOfficeWork save(SignatureDailyOfficeWorkDTO dto) throws Exception {
+        UserDTO userDTO = SpringUtil.getBean(IUserApi.class).getByToken(TokenProvider.getCurrentToken());
+        if (StringUtils.isNotBlank(dto.getId())){
+            return update(dto,userDTO);
+        }
+        return add(dto,userDTO);
+    }
+
+    private SignatureDailyOfficeWork update(SignatureDailyOfficeWorkDTO dto, UserDTO userDTO) {
+        // 修改基础信息
+        SignatureDailyOfficeWork signatureDailyOfficeWork = new SignatureDailyOfficeWork();
+        BeanUtils.copyProperties(dto, signatureDailyOfficeWork);
+        signatureDailyOfficeWork.setUpdateById(userDTO.getId());
+        signatureDailyOfficeWork.setUpdateTime(new Date());
+        signatureDailyOfficeWorkMapper.updateById(signatureDailyOfficeWork);
+        if (StringUtils.isNotBlank(dto.getStatus())&&dto.getStatus().equals("2")){
+            this.getManualSignatureUrl(dto.getId());
+        }
+        // 修改附件信息列表
+        if (CollectionUtils.isNotEmpty(dto.getFiles())) {
+            updateFiles(dto.getFiles(), userDTO, dto.getId(),"signatureDaily");
+        }
+        return signatureDailyOfficeWork;
+    }
+
+    /**
+     * 创建签章流程
+     * @param dailyOfficeWorkId
+     * @return
+     */
+    public HashMap<String, Object> getManualSignatureUrl( String dailyOfficeWorkId) {
+        HashMap<String, Object> map = Maps.newHashMap();
+        map.put("contractUrl","");
+        map.put("success",false);
+        //下载文件位置
+        String deleteFile = null;
+        try {
+            //根据项目id查询是否已经提交过了报告签章
+            SignatureDailyOfficeWorkDTO dailyOfficeWork = this.findById(dailyOfficeWorkId);
+            if(null == dailyOfficeWork){
+                map.put("str","查询不到该签章申请信息");
+                map.put("success",false);
+                return map;
+            }
+            if(null!= dailyOfficeWork.getSignatureFlag() && 1 == dailyOfficeWork.getSignatureFlag()){
+                map.put("str","该盖章申请已完成");
+                map.put("success",false);
+                return map;
+            }
+
+            List<WorkAttachmentInfo> infoList = mapper.findListByIdAndAttachmentFlag(dailyOfficeWorkId,"signatureDaily");
+
+
+            //创建一个用于存放签章文件documentId的集合
+            List<String> documentList = Lists.newArrayList();
+            if(infoList.size()>0) {
+                String aliyunUrl = "http://cdn.gangwaninfo.com";
+                String aliDownloadUrl = "http://oss.gangwaninfo.com";
+                for (WorkAttachmentInfo workattachment : infoList) {
+                    if (StringUtils.isBlank(workattachment.getUrl())) {
+                        map.put("str", "签章文件存储路径为空,无法进行签章操作,请驳回后重新上传盖章文件");
+                        map.put("success", false);
+                    } else {
+                        if (StringUtils.isBlank(workattachment.getUrl())) {
+                            map.put("str", "签章文件存储路径为空,无法进行签章操作,请驳回后重新上传盖章文件");
+                            map.put("success", false);
+                        } else {
+                            //下载签章申请文件
+                            String path = null;
+                            if (System.getProperty("os.name").toLowerCase().contains("win")) {
+                                path = "D:/attachment-file/";
+                            } else {
+                                path = "/attachment-file/";
+                            }
+                            String file = aliyunUrl+workattachment.getUrl();
+                            file = file.replace("amp;", "");
+                            String fileName = file.substring(file.lastIndexOf("/") + 1, file.length());
+                            String cons = "";
+                            if (file.contains(aliyunUrl)) {
+                                cons = aliyunUrl;
+                            } else if (file.contains("http://gangwan-app.oss-cn-hangzhou.aliyuncs.com")) {
+                                cons = "http://gangwan-app.oss-cn-hangzhou.aliyuncs.com";
+                            } else {
+                                cons = aliDownloadUrl;
+                            }
+                            String ossKey = file.split(cons + "/")[1];
+                            SpringUtil.getBean ( IWorkAttachmentApi.class ).downByStreamSaveLocal(ossKey,fileName,path+fileName);
+                            //将下载下来的文件转换为file文件
+                            File srcFile = new File(path + fileName);
+                            deleteFile = path + fileName;
+
+                            //截取文件后缀名
+                            String substring = srcFile.getName().substring(srcFile.getName().lastIndexOf(".") + 1, srcFile.getName().length());
+                            if (!"doc".equals(substring.toLowerCase()) && !"docx".equals(substring.toLowerCase()) && !"pdf".equals(substring.toLowerCase())) {
+                                map.put("str", "请上传doc、docx或者pdf的文件进行签章操作");
+                                map.put("success", false);
+                            } else {
+
+                                //获取真签单的documentId
+                                HashMap hashMap = new SignaturePostUtil().getDocument(srcFile);
+                                String code = hashMap.get("code").toString();
+
+                                if ("0".equals(code)) {
+                                    String documentId = "";
+                                    String result = hashMap.get("result").toString();
+                                    HashMap documentIdMap = JSON.parseObject(result, HashMap.class);
+                                    documentId = documentIdMap.get("documentId").toString();
+                                    if ("".equals(documentId)) {
+                                        map.put("str", "签章文件创建失败,签章文件存在问题");
+                                        map.put("success", false);
+                                    } else {
+                                        documentList.add(documentId);
+                                    }
+                                } else {
+                                    String message = hashMap.get("message").toString();
+                                    map.put("str", message);
+                                    map.put("success", false);
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+
+            //根据项目id 和 documentId生成合同id
+            HashMap contractIdHashMap = this.getManualSignatureContractId(documentList,dailyOfficeWork);
+            String contractIdCode = contractIdHashMap.get("code").toString();
+            String contractId = "";
+            if("0".equals(contractIdCode)){
+                contractId = contractIdHashMap.get("contractId").toString();
+                if("".equals(contractId)){
+                    map.put("str","签章文件创建失败");
+                    map.put("success",false);
+                    return map;
+                }
+            }else{
+                map.put("str",contractIdHashMap.get("message").toString());
+            }
+
+
+            String documents = String.join(",", documentList);
+            //修改报告信息中对应的签章contractId
+            dailyOfficeWork.setSignatureDocumentId(documents);
+            dailyOfficeWork.setSignatureContractId(contractId);
+            //修改签章对应信息文件
+            signatureDailyOfficeWorkMapper.updateSignatureInfo(dailyOfficeWork);
+
+            map.put("success",true);
+            return map;
+
+            //获取contractUrl路径
+            /*String contractUrl = this.getSignatureContractUrl(contractId);
+            if("".equals(contractUrl)){
+                map.put("str","签章文件创建失败");
+                map.put("success",false);
+                return map;
+            }else{
+
+                String documents = String.join(",", documentList);
+                //修改报告信息中对应的签章contractId
+                dailyOfficeWork.setSignatureDocumentId(documents);
+                dailyOfficeWork.setSignatureContractId(contractId);
+                //修改签章对应信息文件
+                dao.updateSignatureInfo(dailyOfficeWork);
+
+                map.put("contractUrl",contractUrl);
+                map.put("success",true);
+                return map;
+            }*/
+        } catch (Exception e) {
+            e.getMessage();
+        } finally {
+            if(StringUtils.isNotBlank(deleteFile)){
+                //根据路径创建文件对象
+                File file = new File(deleteFile);
+                //路径是个文件且不为空时删除文件
+                if(file.isFile()&&file.exists()){
+                    file.delete();
+                }
+            }
+        }
+
+
+        return map;
+    }
+
+    /**
+     * 根据项目id 和 documentId生成合同id(手动签生成签署合同)
+     * @param documentList
+     * @return
+     */
+    public HashMap getManualSignatureContractId(List<String> documentList,SignatureDailyOfficeWorkDTO dailyOfficeWork){
+        HashMap hashMap = new HashMap();
+        //创建签署方信息
+        List<Action> actions = Lists.newArrayList();
+        Set<String> serialIdSet = new HashSet<>();
+
+        Action companyAction = new Action();
+        companyAction.setType("CORPORATE");
+        companyAction.setName("公司印章");
+        companyAction.setSerialNo("1");
+        //公司圆章-竖
+        serialIdSet.add(COMPANYROUNDSEALID);
+        //添加盖章位置
+        List<Location> locations = Lists.newArrayList();
+        for (String documentId: documentList) {
+            Location location = new Location();
+            location.setSealId(COMPANYROUNDSEALID);
+            location.setDocumentId(documentId);
+            location.setPage("0");
+            location.setRectType("SEAL_CORPORATE");
+            location.setKeywordIndex(-1);
+            location.setOffsetX("0.5264");
+            location.setOffsetY("0.6787");
+            locations.add(location);
+        }
+
+        List<String> serialIdList = new ArrayList<String>(serialIdSet);
+        companyAction.setSealIds("[" + String.join(",", serialIdList) + "]");
+        companyAction.setAutoSign("false");
+        companyAction.setLocations(locations);
+        actions.add(companyAction);
+
+
+        //创建签署方信息表
+        List<SignatorieInfo> signatories = Lists.newArrayList();
+        SignatorieInfo signatorieInfo1 = new SignatorieInfo();
+        signatorieInfo1.setSerialNo("1");
+        signatorieInfo1.setTenantName("江苏兴光项目管理有限公司");
+        signatorieInfo1.setTenantType("COMPANY");
+        signatorieInfo1.setActions(actions);
+        signatories.add(signatorieInfo1);
+        SignatureContract signatureContract = new SignatureContract();
+        signatureContract.setDocuments(documentList);
+        //签章申请用印流程id
+        signatureContract.setCategoryId(DAILYOFFICEWORK);
+
+        signatureContract.setSend(true);
+        signatureContract.setSignatories(signatories);
+        signatureContract.setSn("");
+        if(null != dailyOfficeWork && StringUtils.isNotBlank(dailyOfficeWork.getNumber())){
+            signatureContract.setSubject(dailyOfficeWork.getNumber() + "。" + dailyOfficeWork.getSignatureName());//添加项目名称
+        }else if(null != dailyOfficeWork && StringUtils.isNotBlank(dailyOfficeWork.getSignatureName())){
+            signatureContract.setSubject(dailyOfficeWork.getSignatureName());//添加项目名称
+        }
+        JSONObject json = JSONObject.fromObject(signatureContract);
+        String contractIdMapStr = SignaturePostUtil.sendPostApplicationJson(HTTPTOP + "/contract/createbycategory", json.toString());
+        hashMap = JSON.parseObject(contractIdMapStr, HashMap.class);
+
+        return hashMap;
+    }
+
+    private SignatureDailyOfficeWork add(SignatureDailyOfficeWorkDTO dto, UserDTO userDTO) throws Exception {
+        // 生成id
+        String id = UUID.randomUUID().toString().replace("-", "");
+        // 生成编号
+        String no = SpringUtil.getBean ( IWorkAttachmentApi.class ).genSerialNum(userDTO.getCompanyDTO().getId(), dto.BIZ_CODE, TokenProvider.getCurrentToken());
+        //保存信息
+        SignatureDailyOfficeWork signatureDailyOfficeWork = new SignatureDailyOfficeWork();
+        BeanUtils.copyProperties(dto, signatureDailyOfficeWork);
+        signatureDailyOfficeWork.setId(id);
+        signatureDailyOfficeWork.setNumber(no);
+        signatureDailyOfficeWork.setCreateById(userDTO.getId());
+        signatureDailyOfficeWork.setCreateTime(new Date());
+        signatureDailyOfficeWork.setUpdateById(userDTO.getId());
+        signatureDailyOfficeWork.setUpdateTime(new Date());
+        signatureDailyOfficeWork.setDelFlag(0);
+        signatureDailyOfficeWorkMapper.insert(signatureDailyOfficeWork);
+        //生成签章信息
+        if ("2".equals(dto.getStatus())){
+            this.getManualSignatureUrl(id);
+        }
+        // 保存附件列表信息
+        if (CollectionUtils.isNotEmpty(dto.getFiles())) {
+            saveFiles(dto.getFiles(), userDTO, id);
+        }
+        return signatureDailyOfficeWork;
+    }
+
+    /**
+     * 保存附件信息
+     * @param list 待保存的附件列表
+     * @param userDTO 当前登录用户
+     * @param id 关联id
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void saveFiles(List<WorkAttachmentInfo> list, UserDTO userDTO, String id) {
+        int j = 1;
+        for (WorkAttachmentInfo dto : list) {
+            WorkAttachmentInfo i = new WorkAttachmentInfo();
+            //包含了url、size、name
+            i.setId(UUID.randomUUID().toString().replace("-", ""));
+//            i.getCreateBy().setId(userDTO.getId());
+            i.setCreateTime(new Date());
+//            i.getUpdateBy().setId(userDTO.getId());
+            i.setUpdateTime(new Date());
+            i.setDelFlag(0);
+            i.setUrl(dto.getUrl());
+            //文件类型处理
+            List<String> strings = Arrays.asList(dto.getName().split("\\."));
+            if (org.flowable.editor.language.json.converter.util.CollectionUtils.isNotEmpty(strings)) {
+                i.setType(strings.get(1));
+            }
+            i.setAttachmentId(id);
+            i.setAttachmentName(dto.getName());
+            i.setAttachmentFlag("signatureDaily");
+            i.setFileSize(dto.getSize());
+            i.setSort(j);
+//            ossServiceMapper.insertWorkAttachment(i, userDTO);
+            Map<String,String> map = new HashMap<>();
+            String workAttachment = JSON.toJSONString((i));
+            String userDTOInfo = JSON.toJSONString((userDTO));
+            map.put("workAttachment",workAttachment);
+            map.put("userDTO",userDTOInfo);
+            SpringUtil.getBean ( IWorkAttachmentApi.class ).insertWorkAttachment(map);
+            j++;
+        }
+    }
+
+    /**
+     * 修改附件信息
+     * @param list 待修改的附件列表
+     * @param userDTO 当前登录用户
+     * @param id 关联id
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void updateFiles(List<WorkAttachmentInfo> list, UserDTO userDTO, String id, String attachmentFlag) {
+        int j = 1;
+        String names = new String();
+        //表中存在,但是传过来不存在,说明已删除,表中数据也要删除
+        for (WorkAttachmentInfo dto : list) {
+            names = names + "," +dto.getUrl();
+        }
+        //查询保存的附件信息
+        List<WorkAttachmentInfo> infoList = mapper.findListByIdAndAttachmentFlag(id,attachmentFlag);
+        if (org.flowable.editor.language.json.converter.util.CollectionUtils.isNotEmpty(infoList)) {
+            for (WorkAttachmentInfo i : infoList) {
+                if (!names.contains(i.getUrl())) {
+//                    ossServiceMapper.deleteById(i.getId());
+                    SpringUtil.getBean ( IWorkAttachmentApi.class ).deleteById(i.getId());
+                }
+            }
+        }
+        //保存信息
+        for (WorkAttachmentInfo dto : list) {
+            //判断是否存在
+            Integer isExit = mapper.findIsExit(id, dto.getName());
+            if (isExit == 0) {
+                WorkAttachmentInfo i = new WorkAttachmentInfo();
+                //包含了url、size、name
+                i.setId(UUID.randomUUID().toString().replace("-", ""));
+//                i.getCreateBy().setId(userDTO.getId());
+                i.setCreateTime(new Date());
+//                i.getUpdateBy().setId(userDTO.getId());
+                i.setUpdateTime(new Date());
+                i.setDelFlag(0);
+                i.setUrl(dto.getUrl());
+                //文件类型处理
+                List<String> strings = Arrays.asList(dto.getName().split("\\."));
+                if (org.flowable.editor.language.json.converter.util.CollectionUtils.isNotEmpty(strings)) {
+                    i.setType(strings.get(1));
+                }
+                i.setAttachmentId(id);
+                i.setAttachmentName(dto.getName());
+                i.setAttachmentFlag(attachmentFlag);
+                i.setFileSize(dto.getSize());
+                i.setSort(j);
+                Map<String,String> map = new HashMap<>();
+                String workAttachment = JSON.toJSONString((i));
+                String userDTOInfo = JSON.toJSONString((userDTO));
+                map.put("workAttachment",workAttachment);
+                map.put("userDTO",userDTOInfo);
+                SpringUtil.getBean ( IWorkAttachmentApi.class ).insertWorkAttachment(map);
+//                ossServiceMapper.insertWorkAttachment(i, userDTO);
+                j++;
+            }
+        }
+    }
+
+    /*8
+    删除
+     */
+    public String remove(String id) {
+        signatureDailyOfficeWorkMapper.deleteById(id);
+        SpringUtil.getBean ( IWorkAttachmentApi.class ).deleteByAttachmentId(id);
+        return "操作成功";
+    }
+
+    /**
+     * 根据id修改装填
+     * @param dto
+     */
+    public void updateStatusById(SignatureDailyOfficeWorkDTO dto) {
+        signatureDailyOfficeWorkMapper.updateStatusById(dto.getStatus(),dto.getId());
+        //如果是撤销或者是驳回,则需要对签章流程进行恢复
+        if ("3".equals(dto.getStatus())||"4".equals(dto.getStatus())){
+            SignatureDailyOfficeWork dailyOfficeWorkDTO = new SignatureDailyOfficeWork();
+            dailyOfficeWorkDTO.setSignatureContractId("");
+            dailyOfficeWorkDTO.setSignatureDocumentId("");
+            dailyOfficeWorkDTO.setSignatureFlag(0);
+            dailyOfficeWorkDTO.setSignatureUrlFlag(0);
+            dailyOfficeWorkDTO.setSignatureUrl("");
+            dailyOfficeWorkDTO.setSignatureFileName("");
+            dailyOfficeWorkDTO.setSignatureUploadDate(null);
+            dailyOfficeWorkDTO.setId(dto.getId());
+            signatureDailyOfficeWorkMapper.updateById(dailyOfficeWorkDTO);
+        }
+
+    }
+
+    /**
+     * 根据documentId查询签章信息
+     * @param documentId
+     * @return
+     */
+    public SignatureDailyOfficeWorkDTO getByDocumentId(String documentId) {
+        SignatureDailyOfficeWorkDTO dailyOfficeWork = signatureDailyOfficeWorkMapper.getByDocumentId(documentId);
+        return dailyOfficeWork;
+    }
+    //根据contractId查询对应的报告信息
+    public SignatureDailyOfficeWorkDTO getByContractId(String contractId) {
+        SignatureDailyOfficeWorkDTO dailyOfficeWork = signatureDailyOfficeWorkMapper.getByContractId(contractId);
+        return dailyOfficeWork;
+    }
+
+    /**
+     * 根据报告签章id查询签章审核节点信息
+     * @param
+     * @return
+     */
+    public Map<String,Object> getAuditNodeById(String id){
+        Map<String,Object> map = new HashMap<>();
+        //查询流程id
+        SignatureDailyOfficeWorkDTO workDTO = signatureDailyOfficeWorkMapper.findById(id);
+        if(StringUtils.isNotBlank(workDTO.getProcInsId())){
+            //根据流程id查询流程当前节点信息
+            String currentTask = flowTaskService.getCurrentTaskName(workDTO.getProcInsId());
+            if(StringUtils.isNotEmpty(currentTask)){
+                map.put("success", true);
+                map.put("message", "获取签章流程成功");
+                map.put("signatureType", currentTask);
+            }else{
+                map.put("success", false);
+                map.put("message", "获取签章流程失败");
+                map.put("signatureType", "");
+            }
+        }else{
+            map.put("success", false);
+            map.put("message", "获取签章流程失败");
+            map.put("signatureType", "");
+        }
+
+        return map;
+    }
+
+    /**
+     * 根据签章节点获取签章状态数据信息
+     * @param id
+     * @return
+     */
+    public Map<String,Object> getSignatureTypeById(String id){
+        Map<String,Object> map = new HashMap<>();
+        SignatureDailyOfficeWorkDTO officeWorkDTO = signatureDailyOfficeWorkMapper.findById(id);
+        if(null != officeWorkDTO){
+            map.put("success", true);
+            map.put("message", "获取签章完成情况成功");
+            map.put("signatureType", officeWorkDTO.getSignatureFlag());
+        }else{
+            map.put("success", false);
+            map.put("message", "获取签章完成情况失败");
+            map.put("signatureType", "0");
+        }
+        return map;
+    }
+
+}

+ 2 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/signatureDaily/service/SignatureProjectReportService.java

@@ -216,6 +216,7 @@ public class SignatureProjectReportService {
                 SignatureProjectReportRelevanceNumber signatureProjectReportRelevanceNumber = new SignatureProjectReportRelevanceNumber();
                 signatureProjectReportRelevanceNumber.setProjectId(projectRecordsDTO.getId());
                 signatureProjectReportRelevanceNumber.setSignatureProjectReportId(dto.getId());
+                signatureProjectReportRelevanceNumber.setFromProject("1");
                 relevanceNumberMapper.insert(signatureProjectReportRelevanceNumber);
             }
         }
@@ -259,6 +260,7 @@ public class SignatureProjectReportService {
                 SignatureProjectReportRelevanceNumber signatureProjectReportRelevanceNumber = new SignatureProjectReportRelevanceNumber();
                 signatureProjectReportRelevanceNumber.setProjectId(projectRecordsDTO.getId());
                 signatureProjectReportRelevanceNumber.setSignatureProjectReportId(id);
+                signatureProjectReportRelevanceNumber.setFromProject("1");
                 relevanceNumberMapper.insert(signatureProjectReportRelevanceNumber);
             }
         }

+ 114 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/signatureDaily/service/dto/SignatureDailyOfficeWorkDTO.java

@@ -0,0 +1,114 @@
+package com.jeeplus.finance.signatureDaily.service.dto;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jeeplus.core.domain.BaseEntity;
+import com.jeeplus.finance.projectRecords.service.dto.CwProjectRecordsDTO;
+import com.jeeplus.sys.domain.WorkAttachmentInfo;
+import com.jeeplus.sys.service.dto.UserDTO;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class SignatureDailyOfficeWorkDTO extends BaseEntity {
+
+        //日常签章编号(字典值)
+        public static final String BIZ_CODE = "31";
+
+        private String id;
+
+        /**
+         * 备注
+         */
+        private String remarks;
+
+        /**
+         * 签章描述
+         */
+        @Excel(name = "签章描述", width = 30, orderNum = "2")
+        private String signatureName;
+
+        /**
+         * 编号
+         */
+        @Excel(name = "签章编号", width = 30, orderNum = "1")
+        private String number;
+
+        /**
+         * 签章类型
+         */
+        @Excel(name = "签章类型", width = 30, orderNum = "3",dict = "signature_daily")
+        private String signatureType;
+
+        /**
+         * 状态
+         */
+        private String status;
+
+        /**
+         * 流程信息
+         */
+        private String procInsId;
+        private String processDefinitionId;
+        private String taskId;
+
+        /**
+         * 报销日期
+         */
+        @DateTimeFormat(pattern = "yyyy-MM-dd")
+        @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+        @Excel(name = "创建时间", width = 30, orderNum = "5")
+        private Date createTime;
+
+        /**
+         * 创建时间
+         */
+        private String[] dates;
+        @Excel(name = "创建人", width = 30, orderNum = "4")
+        private String createName;
+
+        private String officeName;
+
+        private String officeId;
+
+        private List<WorkAttachmentInfo> files;
+
+        /**
+         * 签章contractId
+         */
+        private String signatureContractId;
+        /**
+         * 签章documentId
+         */
+        private String signatureDocumentId;
+        /**
+         * 签章url地址
+         */
+        private String signatureUrl;
+        /*
+        签章完成情况
+         */
+        private Integer signatureUrlFlag;
+        /*
+        签章附件名称
+         */
+        private String signatureFileName;
+        /**
+         * 签属时间
+         */
+        private Date signatureUploadDate;
+        /*
+        签属文件上传人
+         */
+        private UserDTO signatureUploadFileUser;
+        /*
+        签章状态
+         */
+        private Integer signatureFlag;
+
+}