Quellcode durchsuchen

项目流程展示之前流程的信息,合同添加抄送人员信息选择

user5 vor 6 Monaten
Ursprung
Commit
eed4f1f836
27 geänderte Dateien mit 594 neuen und 20 gelöschten Zeilen
  1. 5 0
      jeeplus-api/jeeplus-system-api/src/main/java/com/jeeplus/flowable/factory/FlowableApiFallbackFactory.java
  2. 6 0
      jeeplus-api/jeeplus-system-api/src/main/java/com/jeeplus/flowable/feign/IFlowableApi.java
  3. 29 0
      jeeplus-modules/jeeplus-admin-server/src/main/resources/logback.xml
  4. 29 0
      jeeplus-modules/jeeplus-assess/src/main/resources/logback.xml
  5. 25 1
      jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/project/controller/JyProjectController.java
  6. 2 0
      jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/project/mapper/JyProjectOutinstanceMapper.java
  7. 14 0
      jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/project/mapper/xml/JyProjectOutinstanceMapper.xml
  8. 37 0
      jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/project/service/JyProjectService.java
  9. 2 0
      jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/useSeal/mapper/SignetMapper.java
  10. 31 0
      jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/useSeal/mapper/xml/SignetMapper.xml
  11. 13 0
      jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/workContractInfo/mapper/JyWorkContractInfoMapper.java
  12. 23 0
      jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/workContractInfo/mapper/xml/JyWorkContractInfoMapper.xml
  13. 129 19
      jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/workContractInfo/service/JyWorkContractService.java
  14. 17 0
      jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/workContractInfo/service/dto/InformUserInfoDTO.java
  15. 5 0
      jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/workContractInfo/service/dto/JyWorkContractInfoDto.java
  16. 29 0
      jeeplus-modules/jeeplus-business/src/main/resources/logback.xml
  17. 29 0
      jeeplus-modules/jeeplus-file/src/main/resources/logback.xml
  18. 10 0
      jeeplus-modules/jeeplus-flowable/src/main/java/com/jeeplus/extension/controller/FlowCopyController.java
  19. 2 0
      jeeplus-modules/jeeplus-flowable/src/main/java/com/jeeplus/extension/mapper/FlowCopyMapper.java
  20. 7 0
      jeeplus-modules/jeeplus-flowable/src/main/java/com/jeeplus/extension/mapper/xml/FlowCopyMapper.xml
  21. 4 0
      jeeplus-modules/jeeplus-flowable/src/main/java/com/jeeplus/extension/service/FlowCopyService.java
  22. 29 0
      jeeplus-modules/jeeplus-flowable/src/main/resources/logback.xml
  23. 29 0
      jeeplus-modules/jeeplus-public-modules/src/main/resources/logback.xml
  24. 1 0
      jeeplus-modules/jeeplus-system/src/main/java/com/jeeplus/sys/service/UserService.java
  25. 29 0
      jeeplus-modules/jeeplus-system/src/main/resources/logback.xml
  26. 29 0
      jeeplus-modules/jeeplus-ureport/src/main/resources/logback.xml
  27. 29 0
      jeeplus-modules/jeeplus-wps/src/main/resources/logback.xml

+ 5 - 0
jeeplus-api/jeeplus-system-api/src/main/java/com/jeeplus/flowable/factory/FlowableApiFallbackFactory.java

@@ -103,6 +103,11 @@ public class FlowableApiFallbackFactory implements FallbackFactory <IFlowableApi
 
             }
 
+            @Override
+            public void deleteByUserIdAndProcInsId(String userId, String procInsId) {
+
+            }
+
         };
     }
 }

+ 6 - 0
jeeplus-api/jeeplus-system-api/src/main/java/com/jeeplus/flowable/feign/IFlowableApi.java

@@ -121,4 +121,10 @@ public interface IFlowableApi {
     @GetMapping(value ="/extension/flowCopy/remove" )
     void remove(@RequestParam(value = "procInsId")String procInsId);
 
+    /**
+     * 删除抄送信息
+     */
+    @GetMapping(value ="/extension/flowCopy/deleteByUserIdAndProcInsId" )
+    void deleteByUserIdAndProcInsId(@RequestParam(value = "userId")String userId, @RequestParam(value = "procInsId")String procInsId);
+
 }

+ 29 - 0
jeeplus-modules/jeeplus-admin-server/src/main/resources/logback.xml

@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration debug="false" scan="true" scanPeriod="1 seconds">
+
+    <contextName>logback</contextName>
+    <property name="log.path" value="/mnt/project/cloud/logs/couldLogs/server-log.log"/>
+
+    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
+        </encoder>
+    </appender>
+
+    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.path}</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${log.path}.%d{yyyy-MM-dd}.zip</fileNamePattern>
+        </rollingPolicy>
+        <encoder>
+            <pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n
+            </pattern>
+        </encoder>
+    </appender>
+
+    <root level="ERROR">
+        <appender-ref ref="console"/>
+        <appender-ref ref="file"/>
+    </root>
+
+</configuration>

+ 29 - 0
jeeplus-modules/jeeplus-assess/src/main/resources/logback.xml

@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration debug="false" scan="true" scanPeriod="1 seconds">
+
+    <contextName>logback</contextName>
+    <property name="log.path" value="/mnt/project/cloud/logs/couldLogs/assess-log.log"/>
+
+    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
+        </encoder>
+    </appender>
+
+    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.path}</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${log.path}.%d{yyyy-MM-dd}.zip</fileNamePattern>
+        </rollingPolicy>
+        <encoder>
+            <pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n
+            </pattern>
+        </encoder>
+    </appender>
+
+    <root level="ERROR">
+        <appender-ref ref="console"/>
+        <appender-ref ref="file"/>
+    </root>
+
+</configuration>

+ 25 - 1
jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/project/controller/JyProjectController.java

@@ -19,6 +19,7 @@ import com.jeeplus.business.project.service.dto.*;
 
 import com.jeeplus.business.project.utils.FreemarkerUtil;
 import com.jeeplus.business.project.utils.JyResponseUtil;
+import com.jeeplus.business.useSeal.service.dto.SignetDTO;
 import com.jeeplus.business.workContractInfo.domain.JyWorkContractInfo;
 import com.jeeplus.business.workContractInfo.service.dto.JyWorkContractInfoDto;
 
@@ -43,6 +44,7 @@ import javax.validation.Valid;
 import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -113,12 +115,24 @@ public class JyProjectController {
      */
     @ApiOperation(value = "根据id查询")
     @GetMapping(value = "/findById")
-    public ResponseEntity<JyProjectDTO> save(@RequestParam String id){
+    public ResponseEntity<JyProjectDTO> findById(@RequestParam String id){
         JyProjectDTO dto = jyProjectService.findById(id);
         return ResponseEntity.ok(dto);
     }
 
     /**
+     * 查询项目报告签发状态信息
+     * @param id
+     * @return
+     */
+    @ApiOperation(value = "查询项目报告签发状态信息")
+    @GetMapping(value = "/getSignetById")
+    public ResponseEntity<SignetDTO> getSignetById(@RequestParam String id, @RequestParam Integer typeStatus){
+        SignetDTO dto = jyProjectService.getByProjectIdAndTypeStatus(id, typeStatus);
+        return ResponseEntity.ok(dto);
+    }
+
+    /**
      * 根据id修改状态status
      */
     @ApiOperation(value = "根据id修改状态status")
@@ -324,6 +338,16 @@ public class JyProjectController {
     }
 
     /**
+     * 根据id查询外审信息
+     */
+    @ApiOperation(value = "根据id查询外审信息")
+    @GetMapping(value = "/getByProjectId")
+    public ResponseEntity<JyProjectOutinstanceDTO> getByProjectId(@RequestParam String id){
+        JyProjectOutinstanceDTO dto = jyProjectService.getByProjectId(id);
+        return ResponseEntity.ok(dto);
+    }
+
+    /**
      * 根据项目id查询外审附件信息
      * @param projectId  项目id
      * @param id  当前阶段的id

+ 2 - 0
jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/project/mapper/JyProjectOutinstanceMapper.java

@@ -16,6 +16,8 @@ public interface JyProjectOutinstanceMapper extends BaseMapper<JyProjectOutinsta
     List<WorkAttachmentInfoDTO> findDtos(@Param("id")String id);
     @InterceptorIgnore(tenantLine = "true")
     JyProjectOutinstance findByProjectId(@Param("projectId") String s);
+    @InterceptorIgnore(tenantLine = "true")
+    JyProjectOutinstanceDTO getByProjectId(@Param("projectId") String s);
 
     void updateOutInstanceStatus(@Param("id") String id,@Param("status") String status,@Param("exceedTimeStatus") String exceedTimeStatus);
 

+ 14 - 0
jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/project/mapper/xml/JyProjectOutinstanceMapper.xml

@@ -44,6 +44,20 @@
     </select>
 
 
+    <select id="getByProjectId" resultType="com.jeeplus.business.project.service.dto.JyProjectOutinstanceDTO">
+        select
+            id,
+            project_id,
+            status,
+            remarks,
+            proc_ins_id,
+            exceed_time_status,
+            process_definition_id
+        from jy_project_outinstance
+        where project_id=#{projectId}
+    </select>
+
+
     <update id="updateOutInstanceStatus">
         update jy_project_outinstance set status=#{status},exceed_time_status=#{exceedTimeStatus} where id=#{id}
     </update>

+ 37 - 0
jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/project/service/JyProjectService.java

@@ -242,6 +242,11 @@ public class JyProjectService {
         return pageList;
     }
 
+    public SignetDTO getByProjectIdAndTypeStatus(String id, Integer typeStatus) {
+        SignetDTO signet = signetMapper.getByProjectIdAndTypeStatus(id, typeStatus);
+        return signet;
+    }
+
     /**
      * 查询当前登录人所属项目组的项目
      * @return
@@ -1463,6 +1468,38 @@ public class JyProjectService {
 
     }
 
+
+    /**
+     * 根据id查询外审信息
+     * @param projectId
+     * @return
+     */
+    public JyProjectOutinstanceDTO getByProjectId(String projectId) {
+        //根据id获取外审信息
+        JyProjectOutinstanceDTO jyProjectOutinstanceDTO=jyProjectOutinstanceMapper.getByProjectId(projectId);
+
+        if (null != jyProjectOutinstanceDTO){
+            List<WorkAttachmentInfoDTO> fileList =Lists.newArrayList();
+            // 查询附件信息
+            List<WorkAttachmentInfoDTO> files = jyProjectOutinstanceMapper.findDtos(jyProjectOutinstanceDTO.getId());
+            if (CollectionUtils.isNotEmpty(files)) {
+                for (WorkAttachmentInfoDTO i : files) {
+                    i.setCreateBy(SpringUtil.getBean ( IUserApi.class ).getById(i.getBy()));
+                }
+            }
+            fileList.addAll(files);
+            jyProjectOutinstanceDTO.setFileList(fileList);
+            //获取项目信息
+            JyProjectDTO byId = findById(jyProjectOutinstanceDTO.getProjectId());
+            jyProjectOutinstanceDTO.setJyProjectList(byId);
+        }
+
+
+        return jyProjectOutinstanceDTO;
+
+
+    }
+
     /**
      * 新增或修改外审信息
      * @param jyProjectOutinstanceDTO

+ 2 - 0
jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/useSeal/mapper/SignetMapper.java

@@ -37,4 +37,6 @@ public interface SignetMapper extends BaseMapper<Signet> {
     void updateStatusBySealId(String id);
 
     SignetDTO getByProjectId(@Param("projectId") String projectId);
+
+    SignetDTO getByProjectIdAndTypeStatus(@Param("projectId") String projectId, @Param("typeStatus")Integer typeStatus);
 }

+ 31 - 0
jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/useSeal/mapper/xml/SignetMapper.xml

@@ -169,5 +169,36 @@
                 and a.type_status = 1
                 and a.status in ('5')
     </select>
+    <select id="getByProjectIdAndTypeStatus" resultType="com.jeeplus.business.useSeal.service.dto.SignetDTO">
+        select
+            a.id,
+            a.create_by_id,
+            a.update_by_id,
+            a.update_time,
+            a.approval_time,
+            su.name as createByName,
+            a.create_time as createDate,
+            a.project_id,
+            a.project_name,
+            a.no,
+            a.type,
+            a.first_type,
+            a.number,
+            a.status,
+            a.remarks,
+            a.proc_ins_id,
+            a.type_status,
+            a.process_definition_id,
+            so.name as office,
+            so.id,
+            art.ID_ as task_id
+            from  jy_user_signet a
+            left join sys_user su on a.create_by_id = su.id
+            left join sys_office so on su.office_id=so.id
+            left join act_ru_task art ON a.proc_ins_id = art.PROC_INST_ID_
+            where (FIND_IN_SET(#{projectId},a.project_id) or a.project_id = #{projectId})
+                and a.type_status = #{typeStatus}
+                and a.status in ('5')
+    </select>
 
 </mapper>

+ 13 - 0
jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/workContractInfo/mapper/JyWorkContractInfoMapper.java

@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 
 import com.jeeplus.business.workContractInfo.domain.JyWorkContractInfo;
+import com.jeeplus.business.workContractInfo.service.dto.InformUserInfoDTO;
 import com.jeeplus.business.workContractInfo.service.dto.JyWorkContractInfoDto;
 import com.jeeplus.sys.domain.WorkAttachmentInfo;
 import com.jeeplus.sys.service.dto.WorkAttachmentInfoDTO;
@@ -58,4 +59,16 @@ public interface JyWorkContractInfoMapper extends BaseMapper<JyWorkContractInfo>
     String findType(String contractType);
 
     String findType2(String s);
+
+    /**
+     * 保存抄送人员信息
+     * @param informUserInfoDTO
+     * @return
+     */
+    Integer insertInformUser(InformUserInfoDTO informUserInfoDTO);
+
+    List<InformUserInfoDTO> getInformUserByContractId(String contractId);
+
+    Integer deleteInformUserByContractIdAndUserId(@Param("contractId")String contractId, @Param("userId")String userId);
+
 }

+ 23 - 0
jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/workContractInfo/mapper/xml/JyWorkContractInfoMapper.xml

@@ -253,4 +253,27 @@
 		ORDER BY a.update_time DESC
 	</select>
 
+	<insert id="insertInformUser">
+		insert into jy_work_contract_inform_user(
+		user_id,
+		contract_id
+		) values (
+		#{userId},
+		#{contractId}
+		)
+	</insert>
+
+	<select id="getInformUserByContractId" resultType="com.jeeplus.business.workContractInfo.service.dto.InformUserInfoDTO">
+		select a.user_id,a.contract_id ,su.name as "userName",su.name as "name", so.name as "officeName"
+		from jy_work_contract_inform_user a
+		left join sys_user su on su.id = a.user_id
+		left join sys_office so on so.id = su.office_id
+		where a.contract_id = #{contractId}
+		order by a.user_id
+	</select>
+
+	<delete id="deleteInformUserByContractIdAndUserId">
+		delete from jy_work_contract_inform_user where contract_id = #{contractId} and user_id = #{userId}
+	</delete>
+
 </mapper>

+ 129 - 19
jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/workContractInfo/service/JyWorkContractService.java

@@ -8,10 +8,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 
+import com.google.common.collect.Lists;
 import com.jeeplus.business.workContractInfo.domain.JyContractParticipant;
 import com.jeeplus.business.workContractInfo.domain.JyWorkContractInfo;
 import com.jeeplus.business.workContractInfo.mapper.JyContractParticipantMapper;
 import com.jeeplus.business.workContractInfo.mapper.JyWorkContractInfoMapper;
+import com.jeeplus.business.workContractInfo.service.dto.InformUserInfoDTO;
 import com.jeeplus.business.workContractInfo.service.dto.JyWorkContractInfoDto;
 import com.jeeplus.common.TokenProvider;
 import com.jeeplus.core.query.QueryWrapperGenerator;
@@ -236,7 +238,7 @@ public class JyWorkContractService {
         //抄送给财务,副总经理,总经理
         ArrayList<UserDTO> userDTOS = new ArrayList<>();
 
-        PostDTO postDTOByName = SpringUtil.getBean(IPostApi.class).getPostDTOByName("财务");
+        /*PostDTO postDTOByName = SpringUtil.getBean(IPostApi.class).getPostDTOByName("财务");
         PostDTO postDTOByName1 = SpringUtil.getBean(IPostApi.class).getPostDTOByName("财务管理员");
         List<UserDTO> listByPostId = SpringUtil.getBean(IUserApi.class).findListByPostId(postDTOByName.getId());
         List<UserDTO> listByPostId1 = SpringUtil.getBean(IUserApi.class).findListByPostId(postDTOByName1.getId());
@@ -247,24 +249,35 @@ public class JyWorkContractService {
         PostDTO zjl = SpringUtil.getBean(IPostApi.class).getPostDTOByName("总经理");
         List<UserDTO> zjlInfo = SpringUtil.getBean(IUserApi.class).findListByPostId(zjl.getId());
         userDTOS.addAll(fzjlInfo);
-        userDTOS.addAll(zjlInfo);
-        Set<UserDTO> uniqueUsers = new HashSet<>(userDTOS);
-        List<UserDTO> uniqueUserList = new ArrayList<>(uniqueUsers);
-        for (UserDTO user : uniqueUserList) {
-            String id1 = UUID.randomUUID().toString().replace("-", "");
-            FlowCopy flowCopy = new FlowCopy();
-            flowCopy.setCreateById(userDTO.getId());
-            flowCopy.setCreateTime(new Date());
-            flowCopy.setUpdateById(userDTO.getId());
-            flowCopy.setUpdateTime(new Date());
-            String tenderName = userDTO.getName()+"创建了合同-"+workContractInfoDto.getContractName()+"编号为-"+contractNo;
-            flowCopy.setProcInsName(tenderName);
-            flowCopy.setProcInsId(id);
-            flowCopy.setProcDefId(id);
-            flowCopy.setUserId(user.getId());
-            flowCopy.setId(id1);
-            flowCopy.setDelFlag(0);
-            SpringUtil.getBean(IFlowableApi.class).add(flowCopy);
+        userDTOS.addAll(zjlInfo);*/
+
+        for (InformUserInfoDTO informUserInfoDTO : workContractInfoDto.getInformUserList()) {
+            //将人员id和合同id进行保存
+            informUserInfoDTO.setContractId(info.getId());
+            jyWorkContractInfoMapper.insertInformUser(informUserInfoDTO);
+            UserDTO user = SpringUtil.getBean(IUserApi.class).getById(informUserInfoDTO.getUserId());
+            userDTOS.add(user);
+        }
+
+        if(userDTOS.size()>0){
+            Set<UserDTO> uniqueUsers = new HashSet<>(userDTOS);
+            List<UserDTO> uniqueUserList = new ArrayList<>(uniqueUsers);
+            for (UserDTO user : uniqueUserList) {
+                String id1 = UUID.randomUUID().toString().replace("-", "");
+                FlowCopy flowCopy = new FlowCopy();
+                flowCopy.setCreateById(userDTO.getId());
+                flowCopy.setCreateTime(new Date());
+                flowCopy.setUpdateById(userDTO.getId());
+                flowCopy.setUpdateTime(new Date());
+                String tenderName = userDTO.getName()+"创建了合同-"+workContractInfoDto.getContractName()+"编号为-"+contractNo;
+                flowCopy.setProcInsName(tenderName);
+                flowCopy.setProcInsId(id);
+                flowCopy.setProcDefId(id);
+                flowCopy.setUserId(user.getId());
+                flowCopy.setId(id1);
+                flowCopy.setDelFlag(0);
+                SpringUtil.getBean(IFlowableApi.class).add(flowCopy);
+            }
         }
 
         return id;
@@ -319,6 +332,21 @@ public class JyWorkContractService {
             info.setNo(contractNo); //合同编号
             info.setContractType(newType);//合同类型(小类)
             info.setContractTypeFirst(contractTypes.get(0).get(0));
+        }else{
+            //合同编号生成
+            List<List<String>> contractTypes = new ArrayList<>();
+            String newType="";
+            contractTypes = workContractInfoDto.getContractTypes();
+            StringBuffer sb = new StringBuffer();
+            for (List<String> contractType : contractTypes) {
+                //判断合同类型是否有二级
+                if (contractType.size()>1){
+                    sb.append(contractType.get(1)+",");
+                    newType=sb.substring(0,sb.lastIndexOf(","));
+                }
+            }
+            info.setContractType(newType);//合同类型(小类)
+            info.setContractTypeFirst(contractTypes.get(0).get(0));
         }
         info.setName(workContractInfoDto.getContractName()); //合同名称
         jyWorkContractInfoMapper.updateById(info);
@@ -346,6 +374,85 @@ public class JyWorkContractService {
 //            updateFiles(list, userDTO, workContractInfoDto.getId());
 //        }
         updateFiles(list, userDTO, workContractInfoDto.getId());
+
+        //修改合同被通知人信息,并进行发送抄送
+        //先查出现有的数据信息
+        List<InformUserInfoDTO> userInfoList = jyWorkContractInfoMapper.getInformUserByContractId(workContractInfoDto.getId());
+        List<String> userIdList = Lists.newArrayList();
+        List<String> repetitionUserIdList = Lists.newArrayList();
+        for (InformUserInfoDTO userInfoDTO : userInfoList) {
+            userIdList.add(userInfoDTO.getUserId());
+
+            for (InformUserInfoDTO informUserInfoDTO : workContractInfoDto.getInformUserList()) {
+
+                if(userInfoDTO.getUserId().equals(informUserInfoDTO.getUserId())){
+                    repetitionUserIdList.add(userInfoDTO.getUserId());
+                }
+            }
+        }
+
+        //在将数据库中现有的数据信息进行删除
+        //jyWorkContractInfoMapper.deleteInformUserByContractId(workContractInfoDto.getId());
+        //判定新获取的被通知人员是否存在已被通知的人员信息中,不存在的进行新增,原通知的被删除的则将抄送进行删除
+        //遍历userIdList 并处理完成之后,剩下的就是应该从原有人员表中进行剔除的人员id(并且剔除抄送信息)
+        Iterator<String> iterator = userIdList.iterator();
+        while (iterator.hasNext()) {
+            String item = iterator.next();
+            for (String repetitionUserId : repetitionUserIdList) {
+                if(repetitionUserId.equals(item)){
+                    iterator.remove(); // 删除元素
+                    break;
+                }
+            }
+        }
+        //将已经处理后的userIdList中的人员信息从合同通知人表种进行删除,并进行剔除抄送信息
+        for (String userId : userIdList) {
+            jyWorkContractInfoMapper.deleteInformUserByContractIdAndUserId(workContractInfoDto.getId(), userId);
+            //删除抄送信息
+            SpringUtil.getBean(IFlowableApi.class).deleteByUserIdAndProcInsId(userId,workContractInfoDto.getId());
+        }
+
+
+        //对提交的被通知人员信息与数据库中的已经被通知的人员信息进行比对,已通知的 则进行剔除,剩下的就是需要再次进行发送通知的人员信息
+        Iterator<InformUserInfoDTO> repetitionIterator = workContractInfoDto.getInformUserList().iterator();
+        while (repetitionIterator.hasNext()) {
+            InformUserInfoDTO item = repetitionIterator.next();
+            for (String userId : repetitionUserIdList) {
+                if(item.getUserId().equals(userId)){
+                    repetitionIterator.remove(); // 删除元素
+                    break;
+                }
+            }
+        }
+
+
+        for (InformUserInfoDTO userInfoDTO : workContractInfoDto.getInformUserList()) {
+
+            //将人员id和合同id进行保存
+            userInfoDTO.setContractId(info.getId());
+            jyWorkContractInfoMapper.insertInformUser(userInfoDTO);
+
+            UserDTO user = SpringUtil.getBean(IUserApi.class).getById(userInfoDTO.getUserId());
+
+            String id1 = UUID.randomUUID().toString().replace("-", "");
+            FlowCopy flowCopy = new FlowCopy();
+            flowCopy.setCreateById(userDTO.getId());
+            flowCopy.setCreateTime(new Date());
+            flowCopy.setUpdateById(userDTO.getId());
+            flowCopy.setUpdateTime(new Date());
+            String tenderName = userDTO.getName()+"创建了合同-"+workContractInfoDto.getContractName()+"编号为-"+workContractInfoDto.getContractNo();
+            flowCopy.setProcInsName(tenderName);
+            flowCopy.setProcInsId(workContractInfoDto.getId());
+            flowCopy.setProcDefId(workContractInfoDto.getId());
+            flowCopy.setUserId(user.getId());
+            flowCopy.setId(id1);
+            flowCopy.setDelFlag(0);
+            SpringUtil.getBean(IFlowableApi.class).add(flowCopy);
+        }
+
+
+
+
         return workContractInfoDto.getId();
     }
 
@@ -391,6 +498,9 @@ public class JyWorkContractService {
             dto.setTaskId(info.getTaskId());
             dto.setDepartment(info.getDepartment());
             dto.setCreateName(info.getCreateName());
+            //获取合同被通知人员信息
+            List<InformUserInfoDTO> informUserByContractId = jyWorkContractInfoMapper.getInformUserByContractId(dto.getId());
+            dto.setInformUserList(informUserByContractId);
             //获取委托人列表
             List<JyContractParticipant> list = new ArrayList<>();
             List<JyContractParticipant> byInfoId = jyContractParticipantMapper.findByInfoId(id);

+ 17 - 0
jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/workContractInfo/service/dto/InformUserInfoDTO.java

@@ -0,0 +1,17 @@
+package com.jeeplus.business.workContractInfo.service.dto;
+
+import lombok.Data;
+
+/**
+ * @author: 徐滕
+ * @version: 2024-11-06 15:42
+ */
+@Data
+public class InformUserInfoDTO {
+    private String userId;
+    private String name;
+    private String userName;
+    private String id;
+    private String officeName;
+    private String contractId;
+}

+ 5 - 0
jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/workContractInfo/service/dto/JyWorkContractInfoDto.java

@@ -161,6 +161,11 @@ public class JyWorkContractInfoDto extends BaseDTO implements Serializable {
     private List<JyContractParticipant> cwWorkClientContactDTOList;
 
     /**
+     * 抄送人员信息
+     */
+    private List<InformUserInfoDTO> informUserList;
+
+    /**
      * 盒号
      */
     private String filedNo;

+ 29 - 0
jeeplus-modules/jeeplus-business/src/main/resources/logback.xml

@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration debug="false" scan="true" scanPeriod="1 seconds">
+
+    <contextName>logback</contextName>
+    <property name="log.path" value="/mnt/project/cloud/logs/couldLogs/business-log.log"/>
+
+    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
+        </encoder>
+    </appender>
+
+    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.path}</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${log.path}.%d{yyyy-MM-dd}.zip</fileNamePattern>
+        </rollingPolicy>
+        <encoder>
+            <pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n
+            </pattern>
+        </encoder>
+    </appender>
+
+    <root level="ERROR">
+        <appender-ref ref="console"/>
+        <appender-ref ref="file"/>
+    </root>
+
+</configuration>

+ 29 - 0
jeeplus-modules/jeeplus-file/src/main/resources/logback.xml

@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration debug="false" scan="true" scanPeriod="1 seconds">
+
+    <contextName>logback</contextName>
+    <property name="log.path" value="/mnt/project/cloud/logs/couldLogs/file-log.log"/>
+
+    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
+        </encoder>
+    </appender>
+
+    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.path}</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${log.path}.%d{yyyy-MM-dd}.zip</fileNamePattern>
+        </rollingPolicy>
+        <encoder>
+            <pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n
+            </pattern>
+        </encoder>
+    </appender>
+
+    <root level="ERROR">
+        <appender-ref ref="console"/>
+        <appender-ref ref="file"/>
+    </root>
+
+</configuration>

+ 10 - 0
jeeplus-modules/jeeplus-flowable/src/main/java/com/jeeplus/extension/controller/FlowCopyController.java

@@ -112,4 +112,14 @@ public class FlowCopyController {
         flowCopyService.remove(new QueryWrapper<FlowCopy>().eq("proc_ins_id",procInsId));
         return ResponseEntity.ok ( "删除流程抄送成功" );
     }
+
+    /**
+     * 删除流程抄送
+     */
+    @GetMapping("deleteByUserIdAndProcInsId")
+    public ResponseEntity deleteByUserIdAndProcInsId(String userId, String procInsId) {
+
+        flowCopyService.deleteByUserIdAndProcInsId(userId,procInsId);
+        return ResponseEntity.ok ( "删除流程抄送成功" );
+    }
 }

+ 2 - 0
jeeplus-modules/jeeplus-flowable/src/main/java/com/jeeplus/extension/mapper/FlowCopyMapper.java

@@ -30,4 +30,6 @@ public interface FlowCopyMapper extends BaseMapper <FlowCopy> {
     IPage <FlowCopyDTO> findList(Page <FlowCopyDTO> page, @Param(Constants.WRAPPER) QueryWrapper queryWrapper);
 
     void add(@Param("flow") FlowCopy flowCopy);
+
+    void deleteByUserIdAndProcInsId(@Param("userId") String userId, @Param("procInsId") String procInsId);
 }

+ 7 - 0
jeeplus-modules/jeeplus-flowable/src/main/java/com/jeeplus/extension/mapper/xml/FlowCopyMapper.xml

@@ -24,5 +24,12 @@
         insert into act_extension_cc(create_by_id,create_time,proc_ins_name,proc_ins_id,proc_def_id,update_by_id,update_time,id,user_id,del_flag) values (#{flow.createById},#{flow.createTime},#{flow.procInsName},#{flow.procInsId},#{flow.procDefId},#{flow.updateById},#{flow.updateTime},#{flow.id},#{flow.userId},#{flow.delFlag})
     </insert>
 
+    <update id="deleteByUserIdAndProcInsId">
+        update act_extension_cc set
+        del_flag = 1
+        where user_id = #{userId}
+        and proc_ins_id = #{procInsId}
+    </update>
+
 
 </mapper>

+ 4 - 0
jeeplus-modules/jeeplus-flowable/src/main/java/com/jeeplus/extension/service/FlowCopyService.java

@@ -38,4 +38,8 @@ public class FlowCopyService extends ServiceImpl <FlowCopyMapper, FlowCopy> {
     public void add(FlowCopy flowCopy) {
         baseMapper.add(flowCopy);
     }
+
+    public void deleteByUserIdAndProcInsId (String userId, String procInsId){
+        baseMapper.deleteByUserIdAndProcInsId(userId, procInsId);
+    }
 }

+ 29 - 0
jeeplus-modules/jeeplus-flowable/src/main/resources/logback.xml

@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration debug="false" scan="true" scanPeriod="1 seconds">
+
+    <contextName>logback</contextName>
+    <property name="log.path" value="/mnt/project/cloud/logs/couldLogs/flowable-log.log"/>
+
+    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
+        </encoder>
+    </appender>
+
+    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.path}</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${log.path}.%d{yyyy-MM-dd}.zip</fileNamePattern>
+        </rollingPolicy>
+        <encoder>
+            <pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n
+            </pattern>
+        </encoder>
+    </appender>
+
+    <root level="ERROR">
+        <appender-ref ref="console"/>
+        <appender-ref ref="file"/>
+    </root>
+
+</configuration>

+ 29 - 0
jeeplus-modules/jeeplus-public-modules/src/main/resources/logback.xml

@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration debug="false" scan="true" scanPeriod="1 seconds">
+
+    <contextName>logback</contextName>
+    <property name="log.path" value="/mnt/project/cloud/logs/couldLogs/publicModules-log.log"/>
+
+    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
+        </encoder>
+    </appender>
+
+    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.path}</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${log.path}.%d{yyyy-MM-dd}.zip</fileNamePattern>
+        </rollingPolicy>
+        <encoder>
+            <pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n
+            </pattern>
+        </encoder>
+    </appender>
+
+    <root level="ERROR">
+        <appender-ref ref="console"/>
+        <appender-ref ref="file"/>
+    </root>
+
+</configuration>

+ 1 - 0
jeeplus-modules/jeeplus-system/src/main/java/com/jeeplus/sys/service/UserService.java

@@ -238,6 +238,7 @@ public class UserService extends ServiceImpl <UserMapper, User> {
      */
     public IPage <UserDTO> findPage(Page <UserDTO> page, QueryWrapper queryWrapper) {
         queryWrapper.eq ( "a.del_flag", CommonConstants.NOT_DELETED ); // 排除已经删除
+        queryWrapper.ne("a.login_name","admin");
         return baseMapper.findList ( page, queryWrapper );
 
 

+ 29 - 0
jeeplus-modules/jeeplus-system/src/main/resources/logback.xml

@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration debug="false" scan="true" scanPeriod="1 seconds">
+
+    <contextName>logback</contextName>
+    <property name="log.path" value="/mnt/project/cloud/logs/couldLogs/system-log.log"/>
+
+    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
+        </encoder>
+    </appender>
+
+    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.path}</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${log.path}.%d{yyyy-MM-dd}.zip</fileNamePattern>
+        </rollingPolicy>
+        <encoder>
+            <pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n
+            </pattern>
+        </encoder>
+    </appender>
+
+    <root level="ERROR">
+        <appender-ref ref="console"/>
+        <appender-ref ref="file"/>
+    </root>
+
+</configuration>

+ 29 - 0
jeeplus-modules/jeeplus-ureport/src/main/resources/logback.xml

@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration debug="false" scan="true" scanPeriod="1 seconds">
+
+    <contextName>logback</contextName>
+    <property name="log.path" value="/mnt/project/cloud/logs/couldLogs/ureport-log.log"/>
+
+    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
+        </encoder>
+    </appender>
+
+    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.path}</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${log.path}.%d{yyyy-MM-dd}.zip</fileNamePattern>
+        </rollingPolicy>
+        <encoder>
+            <pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n
+            </pattern>
+        </encoder>
+    </appender>
+
+    <root level="ERROR">
+        <appender-ref ref="console"/>
+        <appender-ref ref="file"/>
+    </root>
+
+</configuration>

+ 29 - 0
jeeplus-modules/jeeplus-wps/src/main/resources/logback.xml

@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration debug="false" scan="true" scanPeriod="1 seconds">
+
+    <contextName>logback</contextName>
+    <property name="log.path" value="/mnt/project/cloud/logs/couldLogs/wps-log.log"/>
+
+    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
+        </encoder>
+    </appender>
+
+    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.path}</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${log.path}.%d{yyyy-MM-dd}.zip</fileNamePattern>
+        </rollingPolicy>
+        <encoder>
+            <pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n
+            </pattern>
+        </encoder>
+    </appender>
+
+    <root level="ERROR">
+        <appender-ref ref="console"/>
+        <appender-ref ref="file"/>
+    </root>
+
+</configuration>