user5 1 rok pred
rodič
commit
880d81497f

+ 3 - 0
jeeplus-api/jeeplus-system-api/src/main/java/com/jeeplus/core/service/dto/BaseDTO.java

@@ -19,16 +19,19 @@ public abstract class BaseDTO<T> implements Serializable {
     /**
      * taskId
      */
+    @ExcelIgnore
     protected String taskId;
 
     /**
      * 流程id
      */
+    @ExcelIgnore
     protected String procInsId;
 
     /**
      * 流程信息
      */
+    @ExcelIgnore
     protected String processDefinitionId;
 
     /**

+ 5 - 0
jeeplus-api/jeeplus-system-api/src/main/java/com/jeeplus/sys/domain/Office.java

@@ -87,6 +87,11 @@ public class Office extends TreeEntity <Office> {
     private String remarks;
 
     /**
+     * 分管领导id
+     */
+    private String administrator;
+
+    /**
      * 构造函数
      */
     public Office() {

+ 10 - 0
jeeplus-api/jeeplus-system-api/src/main/java/com/jeeplus/sys/service/dto/OfficeDTO.java

@@ -28,6 +28,16 @@ public class OfficeDTO extends TreeDTO <OfficeDTO> {
     private String isPublic;
 
     private String tenantId;
+
+    /**
+     * 分管领导id
+     */
+    private String administrator;
+
+    /**
+     * 分管领导名称
+     */
+    private String administratorName;
     /**
      * 归属区域
      */

+ 37 - 1
jeeplus-api/jeeplus-system-api/src/main/java/com/jeeplus/sys/service/dto/UserDTO.java

@@ -23,6 +23,7 @@ import com.jeeplus.sys.feign.ITenantApi;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import org.hibernate.validator.constraints.Length;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import javax.validation.constraints.Email;
 import javax.validation.constraints.NotNull;
@@ -44,65 +45,79 @@ public class UserDTO extends BaseDTO implements Serializable {
     private static final long serialVersionUID = 1L;
 
     //其他用户信息
+    @ExcelIgnore
     private UserOtherInfoDto otherInfoDto;
 
     /**
      * 合同信息
      */
+    @ExcelIgnore
     private RosterContractDTO rosterContractDTO;
 
     /**
      * 银行卡信息
      */
+    @ExcelIgnore
     private List<RosterBankCardsDTO> rosterBankCardsDTOList;
 
     /**
      * 员工证书
      */
+    @ExcelIgnore
     private List<RosterCertificateDTO> rosterCertificateDTOList;
 
     /**
      * 附件
      */
+    @ExcelIgnore
     private List<WorkAttachmentDto2> files;
 
     /**
      * 财务公司签字注师被选择次数
      */
+    @ExcelIgnore
     private Integer accountantUserFlag;
 
     /**
      * 财务公司签字注师被选择次数
      */
+    @ExcelIgnore
     private Integer accountantUserCount;
 
     /**
      * 执业资格证类型
      */
+    @ExcelIgnore
     private String certType;
 
     /**
      * 前端组件传‘true’则查询全部
      */
+    @ExcelIgnore
     private String selectAll;
 
     /**
      * 角色信息
      */
+    @ExcelIgnore
     private List<RoleDTO> roleList;
 
+    @ExcelIgnore
     private String manageOfficeIds;   //管理的部门id
 
     /**
      * 管理的部门名称
      */
+    @ExcelIgnore
     private List<String> manageOfficeNameList;
 
     /**
      * 执业资格证列表
      */
+    @ExcelIgnore
     private List<CertDTO> certDTOList;
 
+    @ExcelIgnore
     private OfficeDTO corporationDTO;   //公司信息
 
 
@@ -134,7 +149,7 @@ public class UserDTO extends BaseDTO implements Serializable {
     /**
      * 工号
      */
-    @Length(min = 1, max = 100)
+    // @Length(min = 1, max = 100)
     @ExcelProperty("工号")
     private String no;
 
@@ -179,6 +194,27 @@ public class UserDTO extends BaseDTO implements Serializable {
     private String mobile;
 
     /**
+     * 身份证号
+     */
+    @Length(min = 0, max = 100)
+    @ExcelProperty("身份证号")
+    private String idCard;
+
+    /**
+     * 入职日期
+     */
+    @ExcelProperty("入职日期")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date onboardingDate;
+
+    /**
+     * 员工类型
+     */
+    @ExcelIgnore
+    private String workerType;
+
+    /**
      * 最后登录IP
      */
     @IgnoreSwaggerParameter

+ 10 - 12
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/contractRegistration/domain/ContractInfo.java

@@ -33,18 +33,16 @@ public class ContractInfo extends BaseEntity {
     //合同编号(字典值)
     public static final String BIZ_CODE = "10";
 
-    //合同 基字流水号
-    public static final String SERIAL_NUMBER1 = "17";
-    //合同 咨字流水号
-    public static final String SERIAL_NUMBER2 = "18";
-    //合同 框字流水号
-    public static final String SERIAL_NUMBER3 = "19";
-    //合同 审字流水号
-    public static final String SERIAL_NUMBER4 = "20";
-    //合同 验字流水号
-    public static final String SERIAL_NUMBER5 = "21";
-    //合同 特字流水号
-    public static final String SERIAL_NUMBER6 = "22";
+    //合同 工程咨询流水号
+    public static final String SERIAL_NUMBER1 = "100";
+    //合同 工程审核流水号
+    public static final String SERIAL_NUMBER2 = "101";
+    //合同 招标代理流水号
+    public static final String SERIAL_NUMBER3 = "102";
+    //合同 跟踪审计流水号
+    public static final String SERIAL_NUMBER4 = "103";
+    //合同 其他流水号
+    public static final String SERIAL_NUMBER5 = "104";
 
     @Query(tableColumn = "a.contract_name")
     @Excel(name = "合同名称", width = 30)

+ 31 - 29
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/contractRegistration/service/ContractInfoService.java

@@ -32,7 +32,6 @@ import com.jeeplus.sys.feign.IUserApi;
 import com.jeeplus.sys.feign.IWorkAttachmentApi;
 import com.jeeplus.sys.service.dto.RoleDTO;
 import com.jeeplus.sys.service.dto.UserDTO;
-//import com.jeeplus.sys.utils.UserUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.flowable.editor.language.json.converter.util.CollectionUtils;
 import org.springframework.beans.BeanUtils;
@@ -51,6 +50,7 @@ import java.util.stream.Collectors;
  **/
 @Service
 public class ContractInfoService {
+    private static byte[] SYN_BYTE = new byte[0];
 
     @Resource
     private ContractInfoMapper mapper;
@@ -502,21 +502,21 @@ public class ContractInfoService {
         //合同编号生成
         String serialNum = "";
         String currentToken = TokenProvider.getCurrentToken();
-        if (StringUtils.isNotBlank(contractInfo.getContractType()) && StringUtils.isBlank(contractInfo.getContractNo())){
-            if (contractInfo.getContractType().equals("1")){
-                serialNum = SpringUtil.getBean ( IWorkAttachmentApi.class ).genSerialNum(userDTO.getCompanyDTO().getId(), ContractInfo.SERIAL_NUMBER1,currentToken);
-            } else if (contractInfo.getContractType().equals("2")) {
-                serialNum = SpringUtil.getBean ( IWorkAttachmentApi.class ).genSerialNum(userDTO.getCompanyDTO().getId(), ContractInfo.SERIAL_NUMBER2,currentToken);
-            } else if (contractInfo.getContractType().equals("3")) {
-                serialNum = SpringUtil.getBean ( IWorkAttachmentApi.class ).genSerialNum(userDTO.getCompanyDTO().getId(), ContractInfo.SERIAL_NUMBER3,currentToken);
-            } else if (contractInfo.getContractType().equals("4")) {
-                serialNum = SpringUtil.getBean ( IWorkAttachmentApi.class ).genSerialNum(userDTO.getCompanyDTO().getId(), ContractInfo.SERIAL_NUMBER4,currentToken);
-            } else if (contractInfo.getContractType().equals("5")) {
-                serialNum = SpringUtil.getBean ( IWorkAttachmentApi.class ).genSerialNum(userDTO.getCompanyDTO().getId(), ContractInfo.SERIAL_NUMBER5,currentToken);
-            } else if (contractInfo.getContractType().equals("6")) {
-                serialNum = SpringUtil.getBean ( IWorkAttachmentApi.class ).genSerialNum(userDTO.getCompanyDTO().getId(), ContractInfo.SERIAL_NUMBER6,currentToken);
+        synchronized (SYN_BYTE) {
+            if (StringUtils.isNotEmpty(contractInfo.getContractType()) && StringUtils.isBlank(contractInfo.getContractNo())){
+                if (contractInfo.getContractType().equals("100")){
+                    serialNum = SpringUtil.getBean ( IWorkAttachmentApi.class ).genSerialNum(userDTO.getCompanyDTO().getId(), ContractInfo.SERIAL_NUMBER1,currentToken);
+                } else if (contractInfo.getContractType().equals("101")) {
+                    serialNum = SpringUtil.getBean ( IWorkAttachmentApi.class ).genSerialNum(userDTO.getCompanyDTO().getId(), ContractInfo.SERIAL_NUMBER2,currentToken);
+                } else if (contractInfo.getContractType().equals("102")) {
+                    serialNum = SpringUtil.getBean ( IWorkAttachmentApi.class ).genSerialNum(userDTO.getCompanyDTO().getId(), ContractInfo.SERIAL_NUMBER3,currentToken);
+                } else if (contractInfo.getContractType().equals("103")) {
+                    serialNum = SpringUtil.getBean ( IWorkAttachmentApi.class ).genSerialNum(userDTO.getCompanyDTO().getId(), ContractInfo.SERIAL_NUMBER4,currentToken);
+                } else {
+                    serialNum = SpringUtil.getBean ( IWorkAttachmentApi.class ).genSerialNum(userDTO.getCompanyDTO().getId(), ContractInfo.SERIAL_NUMBER5,currentToken);
+                }
+                contractInfo.setContractNo(serialNum);
             }
-            contractInfo.setContractNo(serialNum);
         }
 
         if (StringUtils.isNotEmpty(contractInfo.getStatus()) &&!contractInfo.getStatus().equals("5")){
@@ -588,22 +588,24 @@ public class ContractInfoService {
         String serialNumber = SpringUtil.getBean ( IWorkAttachmentApi.class ).genSerialNum(userDTO.getCompanyDTO().getId(), ContractInfo.BIZ_CODE,currentToken);
         //合同编号生成
         String serialNum = "";
-        if (StringUtils.isNotEmpty(contractInfo.getContractType())){
-            if (contractInfo.getContractType().equals("1")){
-                serialNum = SpringUtil.getBean ( IWorkAttachmentApi.class ).genSerialNum(userDTO.getCompanyDTO().getId(), ContractInfo.SERIAL_NUMBER1,currentToken);
-            } else if (contractInfo.getContractType().equals("2")) {
-                serialNum = SpringUtil.getBean ( IWorkAttachmentApi.class ).genSerialNum(userDTO.getCompanyDTO().getId(), ContractInfo.SERIAL_NUMBER2,currentToken);
-            } else if (contractInfo.getContractType().equals("3")) {
-                serialNum = SpringUtil.getBean ( IWorkAttachmentApi.class ).genSerialNum(userDTO.getCompanyDTO().getId(), ContractInfo.SERIAL_NUMBER3,currentToken);
-            } else if (contractInfo.getContractType().equals("4")) {
-                serialNum = SpringUtil.getBean ( IWorkAttachmentApi.class ).genSerialNum(userDTO.getCompanyDTO().getId(), ContractInfo.SERIAL_NUMBER4,currentToken);
-            } else if (contractInfo.getContractType().equals("5")) {
-                serialNum = SpringUtil.getBean ( IWorkAttachmentApi.class ).genSerialNum(userDTO.getCompanyDTO().getId(), ContractInfo.SERIAL_NUMBER5,currentToken);
-            } else if (contractInfo.getContractType().equals("6")) {
-                serialNum = SpringUtil.getBean ( IWorkAttachmentApi.class ).genSerialNum(userDTO.getCompanyDTO().getId(), ContractInfo.SERIAL_NUMBER6,currentToken);
+
+        synchronized (SYN_BYTE) {
+            if (StringUtils.isNotEmpty(contractInfo.getContractType())){
+                if (contractInfo.getContractType().equals("100")){
+                    serialNum = SpringUtil.getBean ( IWorkAttachmentApi.class ).genSerialNum(userDTO.getCompanyDTO().getId(), ContractInfo.SERIAL_NUMBER1,currentToken);
+                } else if (contractInfo.getContractType().equals("101")) {
+                    serialNum = SpringUtil.getBean ( IWorkAttachmentApi.class ).genSerialNum(userDTO.getCompanyDTO().getId(), ContractInfo.SERIAL_NUMBER2,currentToken);
+                } else if (contractInfo.getContractType().equals("102")) {
+                    serialNum = SpringUtil.getBean ( IWorkAttachmentApi.class ).genSerialNum(userDTO.getCompanyDTO().getId(), ContractInfo.SERIAL_NUMBER3,currentToken);
+                } else if (contractInfo.getContractType().equals("103")) {
+                    serialNum = SpringUtil.getBean ( IWorkAttachmentApi.class ).genSerialNum(userDTO.getCompanyDTO().getId(), ContractInfo.SERIAL_NUMBER4,currentToken);
+                } else {
+                    serialNum = SpringUtil.getBean ( IWorkAttachmentApi.class ).genSerialNum(userDTO.getCompanyDTO().getId(), ContractInfo.SERIAL_NUMBER5,currentToken);
+                }
+                contractInfo.setContractSerialNumber(serialNumber);
             }
-            contractInfo.setContractSerialNumber(serialNumber);
         }
+
         String id = UUID.randomUUID().toString().replace("-", "");
         ContractInfo info = new ContractInfo();
         BeanUtils.copyProperties(contractInfo, info);

+ 3 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReport/mapper/xml/CwProjectReportMapper.xml

@@ -762,6 +762,9 @@
         <if test="tenantId != null and tenantId != ''">
             tenant_id = #{tenantId},
         </if>
+        <if test="realCreate != null and realCreate != ''">
+            real_create = #{realCreate},
+        </if>
         update_by_id = #{updateById},
         update_time = #{updateTime}
         where del_flag = 0 and id = #{id}

+ 9 - 0
jeeplus-modules/jeeplus-public-modules/src/main/java/com/jeeplus/pubmodules/serialNumTpl/service/SerialnumTplService.java

@@ -111,6 +111,9 @@ public class SerialnumTplService {
                 throw new Exception("生成编号失败,请稍后重试");
             }
             String num = String.valueOf(numTpl.getSerialNum() + 1);
+            if(!year.equals(numTpl.getYearBuilt())){
+                num = "1";
+            }
             StringBuffer sb = new StringBuffer();
             for (int x = 0; x < (numTpl.getSerialNumLen() - num.length()); x++) {
                 sb.append("0");
@@ -188,6 +191,9 @@ public class SerialnumTplService {
                 throw new Exception("生成编号失败,请稍后重试");
             }
             String num = String.valueOf(numTpl.getSerialNum() + 1);
+            if(!year.equals(numTpl.getYearBuilt())){
+                num = "1";
+            }
             StringBuffer sb = new StringBuffer();
             sb.append(num);
             //查询公司简称
@@ -262,6 +268,9 @@ public class SerialnumTplService {
                 throw new Exception("生成编号失败,请稍后重试");
             }
             String num = String.valueOf(numTpl.getSerialNum() + 1);
+            if(!year.equals(numTpl.getYearBuilt())){
+                num = "1";
+            }
             StringBuffer sb = new StringBuffer();
 //            for (int x = 0; x < (numTpl.getSerialNumLen() - num.length()); x++) {
 //                sb.append("0");

+ 4 - 0
jeeplus-modules/jeeplus-system/src/main/java/com/jeeplus/sys/controller/OfficeController.java

@@ -13,6 +13,7 @@ import com.jeeplus.sys.domain.Office;
 import com.jeeplus.sys.service.OfficeService;
 import com.jeeplus.sys.service.dto.OfficeDTO;
 import com.jeeplus.sys.service.mapstruct.OfficeWrapper;
+import com.jeeplus.utils.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -70,6 +71,9 @@ public class OfficeController {
     @PostMapping("save")
     public ResponseEntity save(@Valid @RequestBody OfficeDTO officeDTO) {
         Office office = officeWrapper.toEntity ( officeDTO );
+        if(StringUtils.isNotBlank(officeDTO.getAdministrator())){
+            office.setAdministrator(officeDTO.getAdministrator());
+        }
         officeService.saveOrUpdate ( office );
         return ResponseEntity.ok ( office );
     }

+ 7 - 206
jeeplus-modules/jeeplus-system/src/main/java/com/jeeplus/sys/controller/UserController.java

@@ -752,8 +752,6 @@ public class UserController {
     @PostMapping("save")
     public ResponseEntity save(@Valid @RequestBody UserDTO userDTO) {
 
-        UserDTO info = SpringUtil.getBean ( IUserApi.class ).getByToken ( TokenProvider.getCurrentToken() );
-
         // 如果新密码为空,则不更换密码
         if ( StrUtil.isNotBlank ( userDTO.getNewPassword ( ) ) ) {
             userDTO.setPassword ( SecurityUtils.encryptPassword ( userDTO.getNewPassword ( ) ) );
@@ -771,141 +769,6 @@ public class UserController {
         // 保存用户信息
         userService.saveOrUpdate ( userDTO );
 
-        //保存合同信息
-        if(ObjectUtil.isNotEmpty(userDTO.getRosterContractDTO())){
-            RosterContractDTO rosterContractDTO = userDTO.getRosterContractDTO();
-
-            RosterContract rosterContract = new RosterContract();
-            BeanUtils.copyProperties(rosterContractDTO, rosterContract);
-
-            rosterContract.setCreateById(info.getId());
-            rosterContract.setCreateTime(new Date());
-            rosterContract.setUpdateById(info.getId());
-            rosterContract.setUpdateTime(new Date());
-
-            rosterContract.setBaseId(userDTO.getId());
-            rosterContractService.remove(new QueryWrapper<RosterContract>().eq("base_id",userDTO.getId()));
-            rosterContractService.saveOrUpdate(rosterContract);
-        } else {
-            rosterContractService.remove(new QueryWrapper<RosterContract>().eq("base_id",userDTO.getId()));
-        }
-        //保存  银行卡信息、人员资质、员工证书  及  其他个人信息
-        //1、保存其他个人信息
-        if (null != userDTO.getOtherInfoDto()) {
-            UserOtherInfoDto otherInfoDto = userDTO.getOtherInfoDto();
-            UserOtherInfo otherInfo = new UserOtherInfo();
-            BeanUtils.copyProperties(otherInfoDto, otherInfo);
-
-            otherInfo.setCreateById(info.getId());
-            otherInfo.setCreateTime(new Date());
-            otherInfo.setUpdateById(info.getId());
-            otherInfo.setUpdateTime(new Date());
-            otherInfo.setUserInfoId(userDTO.getId());
-            otherUserInfoService.saveOrUpdate(otherInfo);
-        }
-        //2、保存银行卡信息
-        if(CollectionUtil.isNotEmpty(userDTO.getRosterBankCardsDTOList())){
-            List<String> collect = userDTO.getRosterBankCardsDTOList().stream().map(RosterBankCardsDTO::getId).collect(Collectors.toList());
-            rosterBankCardsService.remove(new QueryWrapper<RosterBankCards>().eq("base_id",userDTO.getId()).notIn(CollectionUtil.isNotEmpty(collect),"id",collect));
-            userDTO.getRosterBankCardsDTOList().stream().forEach(item->{
-                if(ObjectUtil.isNotEmpty(item)&& objectCheckIsNull(item)){
-                    RosterBankCards rosterBankCards = new RosterBankCards();
-                    BeanUtils.copyProperties(item, rosterBankCards);
-                    rosterBankCards.setCreateById(info.getId());
-                    rosterBankCards.setCreateTime(new Date());
-                    rosterBankCards.setUpdateById(info.getId());
-                    rosterBankCards.setUpdateTime(new Date());
-                    rosterBankCards.setBaseId(userDTO.getId());
-                    rosterBankCardsService.saveOrUpdate(rosterBankCards);
-                }
-            });
-        }else{
-            rosterBankCardsService.remove(new QueryWrapper<RosterBankCards>().eq("base_id",userDTO.getId()));
-        }
-        //3、保存员工证书
-        //保存员工证书
-        if(CollectionUtil.isNotEmpty(userDTO.getRosterCertificateDTOList())){
-            List<String> collect = userDTO.getRosterCertificateDTOList().stream().map(RosterCertificateDTO::getId).collect(Collectors.toList());
-            rosterCertificateService.remove(new QueryWrapper<RosterCertificate>().eq("base_id",userDTO.getId()).notIn(CollectionUtil.isNotEmpty(collect),"id",collect));
-            userDTO.getRosterCertificateDTOList().stream().forEach(item->{
-                if(ObjectUtil.isNotEmpty(item)&& objectCheckIsNull(item)){
-                    RosterCertificate rosterCertificate = new RosterCertificate();
-                    BeanUtils.copyProperties(item, rosterCertificate);
-                    rosterCertificate.setCreateById(info.getId());
-                    rosterCertificate.setCreateTime(new Date());
-                    rosterCertificate.setUpdateById(info.getId());
-                    rosterCertificate.setUpdateTime(new Date());
-                    rosterCertificate.setBaseId(userDTO.getId());
-                    rosterCertificate.setBaseId(userDTO.getId());
-                    rosterCertificateService.saveOrUpdate(rosterCertificate);
-                }
-            });
-        }else{
-            rosterCertificateService.remove(new QueryWrapper<RosterCertificate>().eq("base_id",userDTO.getId()));
-        }
-        //4、保存人员资质
-        // 保存花名册关联用户的资质信息
-        certService.remove(new QueryWrapper<Cert>().lambda().eq(Cert::getUserId,userDTO.getId()));
-        if(ObjectUtil.isNotEmpty(userDTO.getCertDTOList())){
-            List<Cert> certList = new ArrayList<>();
-            userDTO.getCertDTOList().stream().forEach(i -> {
-                Cert cert = CertWrapper.INSTANCE.toEntity(i);
-                cert.setUserId(userDTO.getId());
-                cert.setId("");
-                certList.add(cert);
-            });
-            if (CollectionUtil.isNotEmpty(certList)) {
-                certService.saveBatch(certList);
-            }
-        }
-        User user = userService.getOne(new QueryWrapper<User>().lambda().eq(User::getRosterId, userDTO.getId()));
-        if (ObjectUtil.isNotEmpty(user)) {
-            // 保存花名册关联用户的资质信息
-//            certService.remove(new QueryWrapper<Cert>().lambda().eq(Cert::getUserId,user.getId()));
-//            if(ObjectUtil.isNotEmpty(userDTO.getCertDTOList())){
-//                List<Cert> certList = new ArrayList<>();
-//                userDTO.getCertDTOList().stream().forEach(i -> {
-//                    Cert cert = CertWrapper.INSTANCE.toEntity(i);
-//                    cert.setUserId(user.getId());
-//                    cert.setId("");
-//                    certList.add(cert);
-//                });
-//                if (CollectionUtil.isNotEmpty(certList)) {
-//                    certService.saveBatch(certList);
-//                }
-//            }
-//            // 保存花名册关联用户的角色
-//            userMapper.deleteUserRole(user.getId());  //  删除用户的角色
-//            if (CollectionUtil.isNotEmpty(userDTO.getRoleIdList())) {
-//                userDTO.getRoleIdList().stream().forEach(i -> {
-//                    userMapper.insertUserRole(user.getId(), i);  // 插入用户的角色
-//                });
-//            }
-//            // 保存花名册关联用户的岗位
-//            userMapper.deleteUserPost(user.getId());  //  删除用户的岗位
-//            if (CollectionUtil.isNotEmpty(userDTO.getPostIdList())) {
-//                userDTO.getPostIdList().stream().forEach(i -> {
-//                    userMapper.insertUserPost(user.getId(), i);  // 插入用户的岗位
-//                });
-//            }
-//            // 保存花名册关联用户的管理部门
-//            UserDTO u = new UserDTO();
-//            u.setId(user.getId());
-//            userMapper.deleteUserManageOffice(u);  //  删除用户的管理部门 (用户、管理部门关联表)
-//            String oIds = "";
-//            if (StringUtils.isNotBlank(userDTO.getManageOfficeIds())) {
-//                List<String> officeIds= Arrays.asList(userDTO.getManageOfficeIds().split(","));
-//                officeIds.stream().forEach(officeId -> {
-//                    userMapper.insertUserManageOffice(officeId,user.getId());  // 插入用户的管理部门 (用户、管理部门关联表)
-//                });
-//                oIds = userDTO.getManageOfficeIds();
-//            }
-//            userMapper.updateUserManageOffice(oIds, user.getId()); // 修改用户的管理部门 (用户表)
-        }
-        //5、保存附件信息
-        if (CollectionUtils.isNotEmpty(userDTO.getFiles())) {
-            saveFiles(userDTO.getFiles(), userDTO, id);
-        }
 
         return ResponseEntity.ok ( "保存用户'" + userDTO.getLoginName ( ) + "'成功!" );
     }
@@ -1191,7 +1054,7 @@ public class UserController {
     @ApiLog("获取财务部门用户数据")
     @GetMapping("treeUserDataFinanceOffice")
     public ResponseEntity treeUserDataFinanceOffice(@RequestParam(required = false) String officeName,@RequestParam(required = false) String extId, @RequestParam(required = false) String type, @RequestParam(required = false, defaultValue = CommonConstants.NO) String showAll) {
-        officeName = "兴光会计师事务所";
+        officeName = "ccpm项目子公司";
         List<OfficeDTO> list = officeService.getOfficeAllByOfficeName (officeName);
         if(list.size()>0){
             List<String> officeIds = Lists.newArrayList();
@@ -1345,7 +1208,7 @@ public class UserController {
         UserDTO userDTO = UserUtils.getCurrentUserDTO();
         String id = userDTO.getTenantDTO().getId();
         if(id.equals("10005")){
-            String officeName="兴光会计师事务所";
+            String officeName="ccpm项目子公司";
             List<OfficeDTO> list = officeService.getOfficeAllByOfficeName (officeName);
             if(list.size()>0){
                 List<String> officeIds = Lists.newArrayList();
@@ -1375,7 +1238,7 @@ public class UserController {
             List rootTree = officeService.getFinanceTree (objects1, extId, type, showAll, "1");
             return ResponseEntity.ok (rootTree);
         }else if (id.equals("10002")){
-            String officeName="兴光会计师事务所";
+            String officeName="ccpm项目子公司";
             List<OfficeDTO> list = officeService.getOfficeAllByOfficeName (officeName);
             if(list.size()>0){
                 List<String> officeIds = Lists.newArrayList();
@@ -1406,7 +1269,7 @@ public class UserController {
             return ResponseEntity.ok (rootTree);
 
         }else if (id.equals("10006")){
-            String officeName="兴光会计师事务所";
+            String officeName="ccpm项目子公司";
             List<OfficeDTO> list = officeService.getOfficeAllByOfficeName (officeName);
             if(list.size()>0){
                 List<String> officeIds = Lists.newArrayList();
@@ -1437,7 +1300,7 @@ public class UserController {
             return ResponseEntity.ok (rootTree);
 
         }else if (id.equals("10004")){
-            String officeName="兴光会计师事务所";
+            String officeName="ccpm项目子公司";
             List<OfficeDTO> list = officeService.getOfficeAllByOfficeName (officeName);
             if(list.size()>0){
                 List<String> officeIds = Lists.newArrayList();
@@ -1468,7 +1331,7 @@ public class UserController {
             return ResponseEntity.ok (rootTree);
 
         }else {
-            String officeName="兴光会计师事务所";
+            String officeName="ccpm项目子公司";
             List<OfficeDTO> list = officeService.getOfficeAllByOfficeName (officeName);
             if(list.size()>0){
                 List<String> officeIds = Lists.newArrayList();
@@ -1480,7 +1343,7 @@ public class UserController {
                 List<OfficeDTO> officeDTOList = userService.getUserByOffice(officeIds,type);
                 list.addAll(officeDTOList);
             }
-            List rootTree = officeService.getFinanceRootTree (list, extId, type, showAll, "1");
+            List rootTree = officeService.getFinanceTree (list, extId, type, showAll, "1");
             return ResponseEntity.ok (rootTree);
         }
     }
@@ -1603,66 +1466,4 @@ public class UserController {
         return userService.getMobileById(id);
     }
 
-
-
-    public static boolean objectCheckIsNull(Object object) {
-        boolean flag = false; //定义返回结果,默认为true
-
-        if (Objects.isNull(object)) {
-            flag = false;
-        } else {
-            Class clazz = (Class) object.getClass(); // 得到类对象
-            Field fields[] = clazz.getDeclaredFields(); // 得到所有属性
-            for (Field field : fields) {
-                if("serialVersionUID".equals(field.getName()) || "BIZ_CODE".equalsIgnoreCase(field.getName())){
-                    continue;
-                }
-                field.setAccessible(true);
-                Object fieldValue = null;
-                try {
-                    fieldValue = field.get(object); //得到属性值
-                    Type fieldType = field.getGenericType();//得到属性类型
-                    String fieldName = field.getName(); // 得到属性名
-                    System.out.println(("属性类型:" + fieldType + ",属性名:" + fieldName + ",属性值:" + fieldValue));
-                } catch (IllegalArgumentException e) {
-                    e.printStackTrace();
-                } catch (IllegalAccessException e) {
-                    e.printStackTrace();
-                }
-                if (fieldValue != null && fieldValue != "") {  //只要有一个属性值不为null 就返回false 表示对象不为null
-                    flag = true;
-                    break;
-                }
-            }
-        }
-
-        return flag;
-    }
-
-    public void saveFiles(List<WorkAttachmentDto2> list, UserDTO userDTO, String id) {
-        int j = 1;
-        for (WorkAttachmentDto2 dto : list) {
-            WorkAttachmentInfo2 i = new WorkAttachmentInfo2();
-            //包含了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("userFilesInfo");
-            i.setFileSize(dto.getSize());
-            i.setSort(j);
-            userService.insertWorkAttachment(i, userDTO);
-            j++;
-        }
-    }
 }

+ 4 - 1
jeeplus-modules/jeeplus-system/src/main/java/com/jeeplus/sys/mapper/xml/OfficeMapper.xml

@@ -65,10 +65,13 @@
                a.update_by_id AS "updateBy.id",
                a.update_time,
                a.del_flag,
+        a.administrator as "administrator",
+        su.name as "administratorName",
                a.useable      AS useable,
                a.tenant_id    AS "tenantDTO.id",
                p.name         AS "parent.name"
         FROM sys_office a
+        left join sys_user su on su.id = a.administrator
                  LEFT JOIN sys_office p ON p.id = a.parent_id
             ${ew.customSqlSegment}
     </select>
@@ -329,7 +332,7 @@
         WHERE
             del_flag = 0
             and parent_id = #{rootId}
-            and NAME LIKE concat('%','会计','%')
+            and NAME LIKE concat('%','ccpm','%')
     </select>
     <select id="getIds" resultType="java.lang.String">
         SELECT id FROM sys_office WHERE parent_id = #{id} and del_flag = 0

+ 2 - 2
jeeplus-modules/jeeplus-system/src/main/java/com/jeeplus/sys/service/OfficeService.java

@@ -78,7 +78,7 @@ public class OfficeService extends TreeService <OfficeMapper, Office> {
             if (userDTO.getCompanyDTO().getName().contains("评估")) {
                 queryWrapper.like ( "a.name", "%评估%" );
             }else if (userDTO.getCompanyDTO().getName().contains("会计")){
-                //获取兴光会计师事务所的子集id
+                //获取ccpm项目子公司的子集id
                 List<String> ids = baseMapper.getIds(userDTO.getCompanyDTO().getId());
                 ids.add(userDTO.getCompanyDTO().getId());
                 queryWrapper.in ( "a.id", ids );
@@ -155,7 +155,7 @@ public class OfficeService extends TreeService <OfficeMapper, Office> {
         queryWrapper.eq ( StringUtils.isNotBlank ( tenantId ), "a.tenant_id", tenantId );
         queryWrapper.eq ( "a.del_flag", 0 );
         queryWrapper.orderByAsc ( "a.sort" );
-        queryWrapper.in ( "a.id", ids );
+        //queryWrapper.in ( "a.id", ids );
         return baseMapper.findAccessList ( queryWrapper );
     }
 

+ 236 - 8
jeeplus-modules/jeeplus-system/src/main/java/com/jeeplus/sys/service/UserService.java

@@ -9,6 +9,7 @@ import cn.hutool.core.util.StrUtil;
 import cn.hutool.extra.spring.SpringUtil;
 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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.google.common.collect.Lists;
@@ -18,18 +19,17 @@ import com.jeeplus.common.constant.CacheNames;
 import com.jeeplus.common.constant.CommonConstants;
 import com.jeeplus.common.redis.RedisUtils;
 import com.jeeplus.common.utils.RequestUtils;
-import com.jeeplus.sys.domain.Cert;
-import com.jeeplus.sys.domain.Office;
-import com.jeeplus.sys.domain.SysConfig;
-import com.jeeplus.sys.domain.User;
+import com.jeeplus.sys.domain.*;
 import com.jeeplus.sys.feign.IUserApi;
 import com.jeeplus.sys.mapper.OfficeMapper;
 import com.jeeplus.sys.mapper.UserMapper;
 import com.jeeplus.sys.service.dto.*;
 import com.jeeplus.sys.service.mapstruct.CertWrapper;
 import com.jeeplus.sys.service.mapstruct.UserWrapper;
+import com.jeeplus.sys.utils.SnowFlake2;
 import com.jeeplus.sys.utils.UserUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
@@ -37,10 +37,10 @@ import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import javax.validation.constraints.NotNull;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Calendar;
-import java.util.List;
+import java.lang.reflect.Field;
+import java.lang.reflect.Type;
+import java.text.SimpleDateFormat;
+import java.util.*;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
@@ -78,6 +78,15 @@ public class UserService extends ServiceImpl <UserMapper, User> {
 
     @Autowired
     private RedisUtils redisUtils;
+    @Autowired
+    private RosterCertificateService rosterCertificateService;
+    @Autowired
+    private RosterContractService rosterContractService;
+    @Autowired
+    private OtherUserInfoService otherUserInfoService;
+
+    @Autowired
+    private RosterBankCardsService rosterBankCardsService;
 
     public void insertWorkAttachment (WorkAttachmentInfo2 workAttachment, UserDTO userDto){
         userMapper.insertWorkAttachment(workAttachment, userDto);
@@ -352,6 +361,9 @@ public class UserService extends ServiceImpl <UserMapper, User> {
      * @param userDTO
      */
     public void saveOrUpdate(UserDTO userDTO) {
+
+        UserDTO info = SpringUtil.getBean ( IUserApi.class ).getByToken ( TokenProvider.getCurrentToken() );
+
         User user = userWrapper.toEntity ( userDTO );
         if(StringUtils.isNotBlank(userDTO.getManageOfficeIds())){
             user.setManageOfficeIds(userDTO.getManageOfficeIds());
@@ -392,9 +404,225 @@ public class UserService extends ServiceImpl <UserMapper, User> {
             redisUtils.set(CacheNames.USER_CACHE_USER_ALL_INFO,"user:cache:user:all:info",allUserInfo);
         }
 
+        //保存合同信息
+        if(ObjectUtil.isNotEmpty(userDTO.getRosterContractDTO())){
+            RosterContractDTO rosterContractDTO = userDTO.getRosterContractDTO();
+
+            RosterContract rosterContract = new RosterContract();
+            BeanUtils.copyProperties(rosterContractDTO, rosterContract);
+
+            rosterContract.setCreateById(info.getId());
+            rosterContract.setCreateTime(new Date());
+            rosterContract.setUpdateById(info.getId());
+            rosterContract.setUpdateTime(new Date());
+
+            rosterContract.setBaseId(userDTO.getId());
+            rosterContractService.remove(new QueryWrapper<RosterContract>().eq("base_id",userDTO.getId()));
+            rosterContractService.saveOrUpdate(rosterContract);
+        } else {
+            rosterContractService.remove(new QueryWrapper<RosterContract>().eq("base_id",userDTO.getId()));
+        }
+        //批量导入人员信息处理
+        UserOtherInfoDto temporaryOtherInfo = new UserOtherInfoDto();
+        //身份证处理
+        if(StringUtils.isNotBlank(userDTO.getIdCard())){
+            temporaryOtherInfo.setIdCard(userDTO.getIdCard());
+            temporaryOtherInfo.setCertificatesType("1");//类型调整为身份证
+        }
+        temporaryOtherInfo.setWorkerType("1");//员工类型默认正式
+
+        if(null != userDTO.getOnboardingDate()) {
+            SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
+            temporaryOtherInfo.setOnboardingDate(sf.format(userDTO.getOnboardingDate()));//员工入职时间
+        }
+        if (StringUtils.isNotBlank(temporaryOtherInfo.getIdCard()) || StringUtils.isNotBlank(temporaryOtherInfo.getWorkerType()) || StringUtils.isNotBlank(temporaryOtherInfo.getOnboardingDate())) {
+            userDTO.setOtherInfoDto(temporaryOtherInfo);
+        }
+        //保存  银行卡信息、人员资质、员工证书  及  其他个人信息
+        //1、保存其他个人信息
+        if (null != userDTO.getOtherInfoDto()) {
+            UserOtherInfoDto otherInfoDto = userDTO.getOtherInfoDto();
+            UserOtherInfo otherInfo = new UserOtherInfo();
+            BeanUtils.copyProperties(otherInfoDto, otherInfo);
+
+            otherInfo.setCreateById(info.getId());
+            otherInfo.setCreateTime(new Date());
+            otherInfo.setUpdateById(info.getId());
+            otherInfo.setUpdateTime(new Date());
+            otherInfo.setUserInfoId(userDTO.getId());
+            otherUserInfoService.saveOrUpdate(otherInfo);
+        }
+        //2、保存银行卡信息
+        if(CollectionUtil.isNotEmpty(userDTO.getRosterBankCardsDTOList())){
+            List<String> collect = userDTO.getRosterBankCardsDTOList().stream().map(RosterBankCardsDTO::getId).collect(Collectors.toList());
+            rosterBankCardsService.remove(new QueryWrapper<RosterBankCards>().eq("base_id",userDTO.getId()).notIn(CollectionUtil.isNotEmpty(collect),"id",collect));
+            userDTO.getRosterBankCardsDTOList().stream().forEach(item->{
+                if(ObjectUtil.isNotEmpty(item)&& objectCheckIsNull(item)){
+                    RosterBankCards rosterBankCards = new RosterBankCards();
+                    BeanUtils.copyProperties(item, rosterBankCards);
+                    rosterBankCards.setCreateById(info.getId());
+                    rosterBankCards.setCreateTime(new Date());
+                    rosterBankCards.setUpdateById(info.getId());
+                    rosterBankCards.setUpdateTime(new Date());
+                    rosterBankCards.setBaseId(userDTO.getId());
+                    rosterBankCardsService.saveOrUpdate(rosterBankCards);
+                }
+            });
+        }else{
+            rosterBankCardsService.remove(new QueryWrapper<RosterBankCards>().eq("base_id",userDTO.getId()));
+        }
+        //3、保存员工证书
+        //保存员工证书
+        if(CollectionUtil.isNotEmpty(userDTO.getRosterCertificateDTOList())){
+            List<String> collect = userDTO.getRosterCertificateDTOList().stream().map(RosterCertificateDTO::getId).collect(Collectors.toList());
+            rosterCertificateService.remove(new QueryWrapper<RosterCertificate>().eq("base_id",userDTO.getId()).notIn(CollectionUtil.isNotEmpty(collect),"id",collect));
+            userDTO.getRosterCertificateDTOList().stream().forEach(item->{
+                if(ObjectUtil.isNotEmpty(item)&& objectCheckIsNull(item)){
+                    RosterCertificate rosterCertificate = new RosterCertificate();
+                    BeanUtils.copyProperties(item, rosterCertificate);
+                    rosterCertificate.setCreateById(info.getId());
+                    rosterCertificate.setCreateTime(new Date());
+                    rosterCertificate.setUpdateById(info.getId());
+                    rosterCertificate.setUpdateTime(new Date());
+                    rosterCertificate.setBaseId(userDTO.getId());
+                    rosterCertificate.setBaseId(userDTO.getId());
+                    rosterCertificateService.saveOrUpdate(rosterCertificate);
+                }
+            });
+        }else{
+            rosterCertificateService.remove(new QueryWrapper<RosterCertificate>().eq("base_id",userDTO.getId()));
+        }
+        //4、保存人员资质
+        // 保存花名册关联用户的资质信息
+        certService.remove(new QueryWrapper<Cert>().lambda().eq(Cert::getUserId,userDTO.getId()));
+        if(ObjectUtil.isNotEmpty(userDTO.getCertDTOList())){
+            List<Cert> certList = new ArrayList<>();
+            userDTO.getCertDTOList().stream().forEach(i -> {
+                Cert cert = CertWrapper.INSTANCE.toEntity(i);
+                cert.setUserId(userDTO.getId());
+                cert.setId("");
+                certList.add(cert);
+            });
+            if (CollectionUtil.isNotEmpty(certList)) {
+                certService.saveBatch(certList);
+            }
+        }
+        User thisUser = this.getOne(new QueryWrapper<User>().lambda().eq(User::getRosterId, userDTO.getId()));
+        if (ObjectUtil.isNotEmpty(thisUser)) {
+            // 保存花名册关联用户的资质信息
+//            certService.remove(new QueryWrapper<Cert>().lambda().eq(Cert::getUserId,user.getId()));
+//            if(ObjectUtil.isNotEmpty(userDTO.getCertDTOList())){
+//                List<Cert> certList = new ArrayList<>();
+//                userDTO.getCertDTOList().stream().forEach(i -> {
+//                    Cert cert = CertWrapper.INSTANCE.toEntity(i);
+//                    cert.setUserId(user.getId());
+//                    cert.setId("");
+//                    certList.add(cert);
+//                });
+//                if (CollectionUtil.isNotEmpty(certList)) {
+//                    certService.saveBatch(certList);
+//                }
+//            }
+//            // 保存花名册关联用户的角色
+//            userMapper.deleteUserRole(user.getId());  //  删除用户的角色
+//            if (CollectionUtil.isNotEmpty(userDTO.getRoleIdList())) {
+//                userDTO.getRoleIdList().stream().forEach(i -> {
+//                    userMapper.insertUserRole(user.getId(), i);  // 插入用户的角色
+//                });
+//            }
+//            // 保存花名册关联用户的岗位
+//            userMapper.deleteUserPost(user.getId());  //  删除用户的岗位
+//            if (CollectionUtil.isNotEmpty(userDTO.getPostIdList())) {
+//                userDTO.getPostIdList().stream().forEach(i -> {
+//                    userMapper.insertUserPost(user.getId(), i);  // 插入用户的岗位
+//                });
+//            }
+//            // 保存花名册关联用户的管理部门
+//            UserDTO u = new UserDTO();
+//            u.setId(user.getId());
+//            userMapper.deleteUserManageOffice(u);  //  删除用户的管理部门 (用户、管理部门关联表)
+//            String oIds = "";
+//            if (StringUtils.isNotBlank(userDTO.getManageOfficeIds())) {
+//                List<String> officeIds= Arrays.asList(userDTO.getManageOfficeIds().split(","));
+//                officeIds.stream().forEach(officeId -> {
+//                    userMapper.insertUserManageOffice(officeId,user.getId());  // 插入用户的管理部门 (用户、管理部门关联表)
+//                });
+//                oIds = userDTO.getManageOfficeIds();
+//            }
+//            userMapper.updateUserManageOffice(oIds, user.getId()); // 修改用户的管理部门 (用户表)
+        }
+        String id = SnowFlake2.getId();
+        //5、保存附件信息
+        if (CollectionUtils.isNotEmpty(userDTO.getFiles())) {
+            saveFiles(userDTO.getFiles(), userDTO, id);
+        }
+
     }
 
 
+    public static boolean objectCheckIsNull(Object object) {
+        boolean flag = false; //定义返回结果,默认为true
+
+        if (Objects.isNull(object)) {
+            flag = false;
+        } else {
+            Class clazz = (Class) object.getClass(); // 得到类对象
+            Field fields[] = clazz.getDeclaredFields(); // 得到所有属性
+            for (Field field : fields) {
+                if("serialVersionUID".equals(field.getName()) || "BIZ_CODE".equalsIgnoreCase(field.getName())){
+                    continue;
+                }
+                field.setAccessible(true);
+                Object fieldValue = null;
+                try {
+                    fieldValue = field.get(object); //得到属性值
+                    Type fieldType = field.getGenericType();//得到属性类型
+                    String fieldName = field.getName(); // 得到属性名
+                    System.out.println(("属性类型:" + fieldType + ",属性名:" + fieldName + ",属性值:" + fieldValue));
+                } catch (IllegalArgumentException e) {
+                    e.printStackTrace();
+                } catch (IllegalAccessException e) {
+                    e.printStackTrace();
+                }
+                if (fieldValue != null && fieldValue != "") {  //只要有一个属性值不为null 就返回false 表示对象不为null
+                    flag = true;
+                    break;
+                }
+            }
+        }
+
+        return flag;
+    }
+
+
+
+    public void saveFiles(List<WorkAttachmentDto2> list, UserDTO userDTO, String id) {
+        int j = 1;
+        for (WorkAttachmentDto2 dto : list) {
+            WorkAttachmentInfo2 i = new WorkAttachmentInfo2();
+            //包含了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("userFilesInfo");
+            i.setFileSize(dto.getSize());
+            i.setSort(j);
+            this.insertWorkAttachment(i, userDTO);
+            j++;
+        }
+    }
+
     public void deleteUser(UserDTO userDTO) {
         baseMapper.deleteUserRole ( userDTO.getId ( ) );
         baseMapper.deleteUserPost ( userDTO.getId ( ) );