MrShi
2025-01-12 426718fb2310abff70f54962f118f4300ead2408
Merge branch '2.0.1' of http://139.186.142.91:10010/r/productDev/yunyibao into 2.0.1
已添加1个文件
已修改23个文件
342 ■■■■ 文件已修改
server/dianziqian/src/main/java/com/jzq/common/bean/sign/SignatoryReq.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/platform/src/main/java/com/doumee/api/business/WorktypeController.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/pom.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/core/utils/Constants.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/dao/business/WorktypeMapper.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/dao/business/join/WorktypeJoinMapper.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/dao/system/SystemUserMapper.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/dao/system/dto/QuerySystemUserDTO.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/dao/system/model/SystemUser.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/WorktypeService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/ApplyChangeServiceImpl.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/DispatchUnitServiceImpl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/InsuranceApplyServiceImpl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/InsuranceServiceImpl.java 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/SettleClaimsServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/SolutionsBaseServiceImpl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/SolutionsServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/UnionApplyServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/UnionChangeServiceImpl.java 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/WorktypeServiceImpl.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/third/SignService.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/system/impl/SystemDataPermissionServiceImpl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/system/impl/SystemUserServiceImpl.java 48 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dianziqian/src/main/java/com/jzq/common/bean/sign/SignatoryReq.java
@@ -99,5 +99,7 @@
    @ApiModelProperty(value = "api发起显示确认签字")
    private Integer apiAffirm;
    @ApiModelProperty(value = "骑缝章位置设置值为0-1的小数;")
    private Float qiFengOffset    ;//float    ?        éª‘缝章位置设置值为0-1的小数;
}
server/platform/src/main/java/com/doumee/api/business/WorktypeController.java
@@ -20,6 +20,7 @@
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
@@ -114,7 +115,7 @@
            @ApiImplicitParam(name = "file", value = "file", required = true, paramType = "query", dataType = "file", dataTypeClass = File.class),
    })
    @RequiresPermissions("business:worktype:create")
    public ApiResponse<Set<Integer>> importExcelForSolution (@ApiParam(value = "file") MultipartFile file , Integer insuranceId) {
    public ApiResponse<Set<Map<String,Object>>> importExcelForSolution (@ApiParam(value = "file") MultipartFile file , Integer insuranceId) {
        return ApiResponse.success(worktypeService.importBatchForSolutions(file,insuranceId));
    }
server/pom.xml
@@ -32,6 +32,7 @@
    <swagger.bootstrap-ui.version>1.9.6</swagger.bootstrap-ui.version>
    <fastjson.version>1.2.70</fastjson.version>
    <druid.version>1.2.0</druid.version>
    <!--<mybatis.plus.version>3.5.7</mybatis.plus.version>-->
    <mybatis.plus.version>3.4.2</mybatis.plus.version>
    <apache.shiro.version>1.7.0</apache.shiro.version>
    <oshi.version>5.7.0</oshi.version>
server/service/src/main/java/com/doumee/core/utils/Constants.java
@@ -64,10 +64,8 @@
    public static final String PRIVACY ="PRIVACY";
    public static final String USE ="USE";
    public static final String GOODS_IMG_DIR ="GOODS_IMG_DIR";
    public static final String CREDIT_CODE_REGEX = "[0-9A-HJ-NPQRTUWXY]{2}\\d{6}[0-9A-HJ-NPQRTUWXY]{10}";
    public static final String  ROOT_PATH="ROOT_PATH";//本地文件上传地址配置
    public static final String  FILE_DIR="FILE_DIR";//本地文件访问地址配置
server/service/src/main/java/com/doumee/dao/business/WorktypeMapper.java
@@ -2,11 +2,12 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.doumee.dao.business.model.Worktype;
import com.github.yulichang.base.MPJBaseMapper;
/**
 * @author æ±Ÿè¹„蹄
 * @date 2024/01/16 10:03
 */
public interface WorktypeMapper extends BaseMapper<Worktype> {
public interface WorktypeMapper extends MPJBaseMapper<Worktype> {
}
server/service/src/main/java/com/doumee/dao/business/join/WorktypeJoinMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.doumee.dao.business.join;
import com.doumee.dao.business.model.TaxDetial;
import com.doumee.dao.business.model.Worktype;
import com.github.yulichang.base.MPJBaseMapper;
import com.github.yulichang.base.mapper.MPJJoinMapper;
import java.util.List;
/**
 * @author æ±Ÿè¹„蹄
 * @date 2024/01/16 10:03
 */
public interface WorktypeJoinMapper extends MPJJoinMapper<Worktype> {
    void insertBatchSomeColumn(List<Worktype> taxDetialList);
}
server/service/src/main/java/com/doumee/dao/system/SystemUserMapper.java
@@ -5,11 +5,12 @@
import com.doumee.dao.system.model.SystemUser;
import com.doumee.dao.system.vo.SystemUserDetailVO;
import com.doumee.dao.system.vo.SystemUserListVO;
import com.github.yulichang.base.MPJBaseMapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface SystemUserMapper extends BaseMapper<SystemUser> {
public interface SystemUserMapper extends MPJBaseMapper<SystemUser> {
    /**
     * æŸ¥è¯¢ç”¨æˆ·åˆ—表
server/service/src/main/java/com/doumee/dao/system/dto/QuerySystemUserDTO.java
@@ -57,6 +57,8 @@
    @ApiModelProperty(value = "城市编码", example = "1" )
    private Integer cityId;
    @ApiModelProperty(value = "部门编码编码", example = "1" )
    private Integer departmentId;
    @ApiModelProperty(value = "城市编码", hidden = true)
    private List<Integer> cityIds;
server/service/src/main/java/com/doumee/dao/system/model/SystemUser.java
@@ -105,6 +105,15 @@
    @ApiModelProperty(value = "微信小程序OPENID")
    private String openid;
    @ApiModelProperty(value = "企业名称")
    @TableField(exist = false)
    private String companyName;
    @ApiModelProperty(value = "部门名称")
    @TableField(exist = false)
    private String departmentName;
    @ApiModelProperty(value = "授权企业数")
    @TableField(exist = false)
    private Integer authNum;
    @ApiModelProperty(value = "是否主管 0否 1是", example = "1")
    @TableField(exist = false)
server/service/src/main/java/com/doumee/service/business/WorktypeService.java
@@ -7,6 +7,7 @@
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
@@ -110,5 +111,5 @@
    List<String> importBatch(MultipartFile file);
    Set<Integer> importBatchForSolutions(MultipartFile file , Integer insuranceId);
    Set<Map<String,Object>> importBatchForSolutions(MultipartFile file , Integer insuranceId);
}
server/service/src/main/java/com/doumee/service/business/impl/ApplyChangeServiceImpl.java
@@ -2,7 +2,7 @@
import cn.hutool.core.util.IdcardUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.api.R;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.annotation.excel.ExcelExporter;
import com.doumee.core.constants.ResponseStatus;
@@ -616,11 +616,14 @@
                    .eq(ApplyDetail::getMemberId, detail.getMemberId())
                    .orderByDesc(ApplyDetail::getCreateDate)
                    .last("limit 1"));
            if (oldModel == null || oldModel.getStartTime() == null || oldModel.getStartTime().getTime() > update.getApplyStartTime().getTime()) {
//            if (oldModel == null || oldModel.getStartTime() == null || oldModel.getStartTime().getTime() > update.getApplyStartTime().getTime()) {
//                throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,用户【" + detail.getMemberName() + "】原保单信息有误,当前申请不支持减保处理!");
//            }
//            if(!(oldModel.getStartTime().getTime()<=update.getDelValidTime().getTime()&& oldModel.getEndTime().getTime()>=update.getDelValidTime().getTime())){
//                throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,用户【" + detail.getMemberName() + "】减保日期未在保单记录日期中!");
//            }
            if (oldModel == null || oldModel.getEndTime() == null || oldModel.getEndTime().getTime() < update.getDelValidTime().getTime()) {
                throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,用户【" + detail.getMemberName() + "】原保单信息有误,当前申请不支持减保处理!");
            }
            if(!(oldModel.getStartTime().getTime()<=update.getDelValidTime().getTime()&& oldModel.getEndTime().getTime()>=update.getDelValidTime().getTime())){
                throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,用户【" + detail.getMemberName() + "】减保日期未在保单记录日期中!");
            }
            BigDecimal sumFee = Objects.isNull(insuranceApply.getServerCost())?
                    solutions.getPrice():
@@ -640,6 +643,9 @@
                        sumFee
                        ,insuranceApply.getStartTime(),insuranceApply.getFinalEndTime(),oldModel.getStartTime(),delValidTime
                ) ;
            }else{
                delValidTime  = oldModel.getStartTime();
                updateFee = BigDecimal.ZERO;
            }
            if (oldModel.getStartTime().getTime() < System.currentTimeMillis()) {
                //// 2024å¹´5月8日17:37:23 ä¿®æ”¹ è®¡ç®—产生费用
@@ -1340,7 +1346,6 @@
            if(!Constants.equalsInteger(applyDetail.getChangeStatus(),Constants.ZERO)){
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"减保人员【" + applyChagneDetail.getMemberName() + "】保单信息异常,数据已被减保无法再次减保");
            }
            applyChagneDetail.setPrice(applyDetail.getPrice());
            applyChagneDetail.setCreateDate(new Date());
            applyChagneDetail.setCreator(loginUserInfo.getId());
            applyChagneDetail.setIsdeleted(Constants.ZERO);
@@ -1378,6 +1383,7 @@
                applyChagneDetail.setReduceMoney(solutions.getPrice().multiply(new BigDecimal(-1)));
                applyChagneDetail.setFee(BigDecimal.ZERO);
            }
            applyChagneDetail.setId(null);
            applyChagneDetailJoinMapper.insert(applyChagneDetail);
        }
    }
@@ -2541,8 +2547,8 @@
            notifyUrl = notifyUrl.replace("${type}","0").replace("${id}",model.getId().toString());
            //临时使用
            fileUrl =  "https://yybred.oss-cn-hangzhou.aliyuncs.com/apply/20241120/1c80f0d7-ab35-4355-b9fe-944464643115.pdf";
            String applyNo = signService.applySign(company.getName(),fileUrl,company.getName(),company.getCode(),company.getEmail(),"人员名单签章",company.getSignId(),notifyUrl);
            fileUrl =  "https://yybred.oss-cn-hangzhou.aliyuncs.com/apply/20241230/a0d128f2-ba6c-4ad4-b86b-b2610a513d41.pdf";
            String applyNo = signService.applySignDoByParam(company.getName(),fileUrl,company.getName(),company.getCode(),company.getEmail(),"人员名单签章",company.getSignId(),notifyUrl,new Float(0.7));
//            String applyNo = signService.applySignLocalFile(company.getName(),company.getName(),fileUrl,company.getCode(),company.getEmail(),"人员名单签章",company.getSignId(),notifyUrl);
            if(StringUtils.isBlank(applyNo) ){
server/service/src/main/java/com/doumee/service/business/impl/DispatchUnitServiceImpl.java
@@ -185,6 +185,7 @@
        for (DuSolution s : solutions){
            DuSolution ns = new DuSolution();
            BeanUtils.copyProperties(s, ns);
            ns.setId(null);
            ns.setDispatchUnitId(newVersion.getId());
            ns.setCheckDate(update.getEditDate());
            ns.setStatus(Constants.ONE);
@@ -215,6 +216,7 @@
                }
                DuWorktype nw = new DuWorktype();
                BeanUtils.copyProperties(w, nw);
                nw.setId(null);
                nw.setCreateDate(new Date());
                nw.setCheckDate(update.getEditDate());
                nw.setStatus(Constants.ONE);
@@ -498,7 +500,7 @@
            DuSolution duSolution = duSolutionMapper.selectOne(new QueryWrapper<DuSolution>().lambda().eq(DuSolution::getDispatchUnitId,saveDispatchUnitDTO.getId())
                    .eq(DuSolution::getIsdeleted,Constants.ZERO)
                    .eq(DuSolution::getSolutionId,saveDuSolutionDTO.getSolutionId()).last("limit 1"));
            Integer duSolutionNum = duSolutionMapper.selectCount(new QueryWrapper<DuSolution>().lambda().eq(DuSolution::getDispatchUnitId,saveDuSolutionDTO.getId()));
            Integer duSolutionNum = duSolutionMapper.selectCount(new QueryWrapper<DuSolution>().lambda().eq(DuSolution::getDispatchUnitId,saveDuSolutionDTO.getId())).intValue();
            if(Objects.isNull(duSolution)){
                duSolution = new DuSolution();
                duSolution.setCreateDate(new Date());
@@ -530,7 +532,7 @@
                        .eq(DuWorktype::getWorkTypeId,saveDuWorkTypeDTO.getWorkTypeId()))>0){
                    throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"【"+saveDuSolutionDTO.getSolutionName()+"】该方案下"+saveDuWorkTypeDTO.getWorkTypeName()+"该工种已存在");
                }
                Integer duWorkTypeNum = duWorktypeMapper.selectCount(new QueryWrapper<DuWorktype>().lambda().eq(DuWorktype::getDuSolutionId,duSolution.getId()));
                Integer duWorkTypeNum = duWorktypeMapper.selectCount(new QueryWrapper<DuWorktype>().lambda().eq(DuWorktype::getDuSolutionId,duSolution.getId())).intValue();
                DuWorktype duWorktype = new DuWorktype();
                duWorktype.setCreateDate(new Date());
                duWorktype.setCreator(loginUserInfo.getId());
server/service/src/main/java/com/doumee/service/business/impl/InsuranceApplyServiceImpl.java
@@ -2,7 +2,6 @@
import cn.hutool.core.util.IdcardUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.api.R;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.annotation.excel.ExcelExporter;
import com.doumee.core.constants.ResponseStatus;
@@ -2482,6 +2481,7 @@
                        member.setDuId(applyDetail.getDuId());
                        member.setWorktypeId(applyDetail.getWorktypeId());
                        memberMapper.updateById(member);
                        applyDetail.setMemberName(member.getName());
                    }
                }else{
                    member = memberMapper.selectById(applyDetail.getMemberId());
@@ -2492,6 +2492,7 @@
                    member.setDuId(applyDetail.getDuId());
                    member.setWorktypeId(applyDetail.getWorktypeId());
                    memberMapper.updateById(member);
                    applyDetail.setMemberName(member.getName());
                }
                applyDetail.setMemberId(member.getId());
                applyDetail.setIdcardNo(member.getIdcardNo());
@@ -2528,7 +2529,6 @@
    /**
     * æŸ¥è¯¢ ä¼šå‘˜ä¿¡æ¯åœ¨æ–¹æ¡ˆä¸‹æ˜¯å¦å­˜åœ¨å†²çªæ•°æ®
     * @param solutionId
     * @param startTime
     * @param endTime
     */
@@ -3573,7 +3573,7 @@
        if(solutions.getType().equals(Constants.ZERO)){
            throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,非委托保方案保单,无法进行该操作!");
        }
        String fileUrl = "https://yybred.oss-cn-hangzhou.aliyuncs.com/apply/20241120/1c80f0d7-ab35-4355-b9fe-944464643115.pdf";//ExcelExporter.build(InsuranceApply.class).exportApplyExcelToPdf(model,"人员名单");
        String fileUrl = "https://yybred.oss-cn-hangzhou.aliyuncs.com/apply/20241230/a0d128f2-ba6c-4ad4-b86b-b2610a513d41.pdf";//ExcelExporter.build(InsuranceApply.class).exportApplyExcelToPdf(model,"人员名单");
        String notifyUrl = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.SIGN_DONE_NOTIFY_URL).getCode();
        notifyUrl = notifyUrl.replace("${type}","0").replace("${id}",model.getId().toString());
        //String applyNo = signService.applySignLocalFile(company.getName(),company.getName(),fileUrl,company.getCode(),company.getEmail(),"投保名单签章",company.getSignId(),notifyUrl);
server/service/src/main/java/com/doumee/service/business/impl/InsuranceServiceImpl.java
@@ -10,6 +10,8 @@
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.InsuranceMapper;
import com.doumee.dao.business.WorktypeMapper;
import com.doumee.dao.business.join.DuWorkTypeJoinMapper;
import com.doumee.dao.business.join.WorktypeJoinMapper;
import com.doumee.dao.business.model.Insurance;
import com.doumee.dao.business.model.Solutions;
import com.doumee.dao.business.model.Worktype;
@@ -19,8 +21,10 @@
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sun.corba.se.spi.orbutil.threadpool.Work;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -42,6 +46,8 @@
    private InsuranceMapper insuranceMapper;
    @Autowired
    private WorktypeMapper worktypeMapper;
    @Autowired
    private WorktypeJoinMapper worktypeJoinMapper;
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
@@ -86,6 +92,8 @@
        if(workTypeName.size() != set.size()){
            throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(),"对不起,工种录入数据存在相同数据!");
        }
        List<Worktype> saveList = new ArrayList<>();
        for(Worktype w : worktypeList) {
            if(!isNew){
                //查询保险公司下是否已存在该工种
@@ -101,12 +109,13 @@
            w.setInsuranceId(insurance.getId());
            w.setIsdeleted(Constants.ZERO);
            w.setCreator(newModel.getCreator());
            w.setCreateDate(insurance.getCreateDate());
            w.setCreateDate(new Date());
            w.setDataType(insurance.getDataType());
            w.setStatus(Constants.ZERO);
            w.setVersion(insurance.getVersion());
            w.setSortnum(num++);
            worktypeMapper.insert(w);
            saveList.add(w);
//            worktypeMapper.insert(w);
            //历史版本的工种信息
@@ -117,8 +126,15 @@
            newType.setDataType(Constants.TWO);
            newType.setVersion(newModel.getVersion());
            w.setSortnum(num++);
            worktypeMapper.insert(newType);
            saveList.add(newType);
//            worktypeMapper.insert(newType);
        }
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(saveList)){
            worktypeJoinMapper.insertBatchSomeColumn(saveList);
        }
    }
    private void initCreateParam(Insurance insurance) {
@@ -194,6 +210,105 @@
        insuranceMapper.deleteBatchIds(ids);
    }
    /*@Override
    public void updateById(Insurance insurance) {
        Insurance model = findById(insurance.getId());
        if(model == null  || !Constants.equalsInteger(model.getIsdeleted(),Constants.ZERO)
                || !Constants.equalsInteger(model.getDataType(),Constants.ZERO)){
            throw  new BusinessException(ResponseStatus.DATA_EMPTY );
        }
        //数据有效性校验
        initCreateParam(insurance);
        if(insuranceMapper.selectCount(new QueryWrapper<Insurance>().lambda().eq(Insurance::getName,insurance.getName())
                .eq(Insurance::getIsdeleted,Constants.ZERO)
                .eq(Insurance::getDataType,Constants.ZERO)
                .ne(Insurance::getId,insurance.getId())
        )>Constants.ZERO){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"保险公司名称已存在");
        }
        LoginUserInfo user= (LoginUserInfo)SecurityUtils.getSubject().getPrincipal();
        Insurance updateModel = new Insurance();
        updateModel.setEditor(user.getId());
        updateModel.setName(insurance.getName());
        updateModel.setId(model.getId());
        updateModel.setVersion(UUID.randomUUID().toString());
        updateModel.setEditDate(new Date());
        updateModel.setRemark(insurance.getRemark());
        updateModel.setSortnum(insurance.getSortnum());
        updateModel.setLogo(insurance.getLogo());
        updateModel.setEnglishName(insurance.getEnglishName());
        updateModel.setLinkName(insurance.getLinkName());
        updateModel.setLinkPhone(insurance.getLinkPhone());
        updateModel.setPolicy(insurance.getPolicy());
        updateModel.setAgreement(insurance.getAgreement());
        updateModel.setClaimsInformation(insurance.getClaimsInformation());
        insuranceMapper.updateById(updateModel);
        //如果修改,则产生一个新的历史版本 ~
//        Insurance newModel = new Insurance();
//        BeanUtils.copyProperties(model,newModel);
//        newModel.setId(null);
//        newModel.setVersion(updateModel.getVersion());
//        newModel.setCreateDate(new Date());
//        newModel.setName(updateModel.getName());
//        newModel.setBaseId(insurance.getId());
//        newModel.setDataType(Constants.TWO);
//        newModel.setLogo(insurance.getLogo());
//        newModel.setEnglishName(insurance.getEnglishName());
//        newModel.setLinkName(insurance.getLinkName());
//        newModel.setLinkPhone(insurance.getLinkPhone());
//        newModel.setPolicy(insurance.getPolicy());
//        newModel.setAgreement(insurance.getAgreement());
//        newModel.setClaimsInformation(insurance.getClaimsInformation());
//        insuranceMapper.insert(newModel);
        Insurance useVersion = insuranceMapper.selectOne(new QueryWrapper<Insurance>().lambda()
                .eq(Insurance::getBaseId,insurance.getId())
                .eq(Insurance::getDataType,Constants.TWO)
                .last(" limit 1")
        );
        Insurance updateUsrModel = new Insurance();
        updateUsrModel.setEditor(user.getId());
        updateUsrModel.setName(insurance.getName());
        updateUsrModel.setId(useVersion.getId());
        updateUsrModel.setVersion(UUID.randomUUID().toString());
        updateUsrModel.setEditDate(new Date());
        updateUsrModel.setRemark(insurance.getRemark());
        updateUsrModel.setSortnum(insurance.getSortnum());
        updateUsrModel.setLogo(insurance.getLogo());
        updateUsrModel.setEnglishName(insurance.getEnglishName());
        updateUsrModel.setLinkName(insurance.getLinkName());
        updateUsrModel.setLinkPhone(insurance.getLinkPhone());
        updateUsrModel.setPolicy(insurance.getPolicy());
        updateUsrModel.setAgreement(insurance.getAgreement());
        updateUsrModel.setClaimsInformation(insurance.getClaimsInformation());
        //删除所有工种数据
        worktypeMapper.delete(new UpdateWrapper<Worktype>()
                .lambda()
                .in(Worktype::getInsuranceId,insurance.getId())
        );
//        insuranceMapper.update(null,new UpdateWrapper<Insurance>()
//                .lambda()
//                .eq(Insurance::getBaseId,insurance.getId())
//                .eq(Insurance::getDataType,Constants.TWO)
//                .ne(Insurance::getId,newModel.getId())
//                .set(Insurance::getDataType,Constants.ONE)
//        );
        worktypeMapper.update(null,new UpdateWrapper<Worktype>()
                .lambda()
                .eq(Worktype::getInsuranceId,useVersion.getId())
                .eq(Worktype::getDataType,Constants.TWO)
                .set(Worktype::getDataType,Constants.ONE)
        );
        //处理工作信息,新增最新的,同时产生历史版本
        dealWorkTypeData(updateModel,useVersion,insurance.getWorktypeList(),false);
    }*/
    @Override
    public void updateById(Insurance insurance) {
        Insurance model = findById(insurance.getId());
server/service/src/main/java/com/doumee/service/business/impl/SettleClaimsServiceImpl.java
@@ -1,7 +1,6 @@
package com.doumee.service.business.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.api.R;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
server/service/src/main/java/com/doumee/service/business/impl/SolutionsBaseServiceImpl.java
@@ -66,6 +66,7 @@
    private InsuranceApplyMapper insuranceApplyMapper;
    @Override
    @Transactional(rollbackFor = {BusinessException.class,Exception.class})
    public Integer create(SolutionsBase solutionsBase) {
        LoginUserInfo user= (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        initCreateParam(solutionsBase);
@@ -146,6 +147,7 @@
            newType.setSolutionId(newModel.getId());
            solutionWorktypeJoinMapper.insert(newType);
        }
    }
@@ -209,6 +211,7 @@
    }
    @Override
    @Transactional(rollbackFor = {BusinessException.class,Exception.class})
    public void updateById(SolutionsBase solutionsBase) {
        LoginUserInfo user= (LoginUserInfo)SecurityUtils.getSubject().getPrincipal();
        SolutionsBase model = findById(solutionsBase.getId());
@@ -248,6 +251,7 @@
            solutionsBase.setAddValidDays(solutionsBase.getDelValidDays());
        }
        solutionsBaseMapper.updateById(solutionsBase);
        SolutionsBase oldVersion = solutionsBaseMapper.selectOne(new QueryWrapper<SolutionsBase>()
                .lambda()
                .eq(SolutionsBase::getBaseId,solutionsBase.getId())
@@ -276,7 +280,6 @@
                .eq(SolutionWorktype::getType,Constants.ONE)
        );
        //删除父方案下所有子方案的工种数据
        solutionWorktypeJoinMapper.delete(new UpdateWrapper<SolutionWorktype>()
                .lambda()
                .eq(SolutionWorktype::getType,Constants.ZERO)
@@ -284,7 +287,6 @@
        );
        dealWorkTypeInsurance(solutionsBase,newModel,solutionsBase.getWorktypeIdList());
        solutionsBaseMapper.update(null,new UpdateWrapper<SolutionsBase>()
                .lambda()
server/service/src/main/java/com/doumee/service/business/impl/SolutionsServiceImpl.java
@@ -132,6 +132,7 @@
        file.setObjType(Constants.MultiFile.SOLUTIONS_CONFIRMATION_LATTER.getKey());
        file.setType(Constants.formatIntegerNum(file.getType()));
        multifileMapper.insert(file);
        file.setId(null);
        file.setObjId(newModel.getId());
        multifileMapper.insert(file);
        return solutions.getId();
server/service/src/main/java/com/doumee/service/business/impl/UnionApplyServiceImpl.java
@@ -817,7 +817,7 @@
        String notifyUrl = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.SIGN_DONE_NOTIFY_URL).getCode();
        notifyUrl = notifyUrl.replace("${type}","0").replace("${id}", unionApply.getId().toString());
        String applyNo = signService.applySign(company.getName(),url,company.getName(),company.getCode(),company.getEmail(),null,company.getSignId(),notifyUrl);
        String applyNo = signService.applySignDoByParam(company.getName(),url,company.getName(),company.getCode(),company.getEmail(),null,company.getSignId(),notifyUrl,new Float(0.7));
        if(StringUtils.isBlank(applyNo) ){
            throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"对不起,获取在线签章地址失败,请稍后重试!");
server/service/src/main/java/com/doumee/service/business/impl/UnionChangeServiceImpl.java
@@ -1,7 +1,6 @@
package com.doumee.service.business.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.api.R;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.annotation.excel.ExcelExporter;
import com.doumee.core.constants.ResponseStatus;
@@ -374,25 +373,25 @@
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到保险方案");
        }
        if(saveUnionChangeDTO.getBusinessType().equals(Constants.ZERO)){
            saveUnionChangeDTO.setApplyDate(unionApply.getStartTime());
//            saveUnionChangeDTO.setApplyDate(unionApply.getStartTime());
            saveUnionChangeDTO.setAddValidDate(saveUnionChangeDTO.getApplyDate());
            saveUnionChangeDTO.setDelValidDate(saveUnionChangeDTO.getApplyDate());
            //根据申请日期 å¤„理加减保的 å®žé™…生效日期
//            if(Objects.nonNull(solutions.getAddValidDays())){
//                saveUnionChangeDTO.setAddValidDate(
//                        DateUtil.afterDateByType(saveUnionChangeDTO.getApplyDate(),0,solutions.getAddValidDays())
//                );
//            }else{
//                saveUnionChangeDTO.setAddValidDate(saveUnionChangeDTO.getApplyDate());
//            }
//            if(Objects.nonNull(solutions.getDelValidDays())){
//                saveUnionChangeDTO.setDelValidDate(
//                        DateUtil.afterDateByType(saveUnionChangeDTO.getApplyDate(),0,solutions.getDelValidDays())
//                );
//            }else{
//                saveUnionChangeDTO.setDelValidDate(saveUnionChangeDTO.getApplyDate());
//            }
            if(Objects.nonNull(solutions.getAddValidDays())){
                saveUnionChangeDTO.setAddValidDate(
                        DateUtil.afterDateByType(saveUnionChangeDTO.getApplyDate(),0,solutions.getAddValidDays())
                );
            }else{
                saveUnionChangeDTO.setAddValidDate(saveUnionChangeDTO.getApplyDate());
            }
            if(Objects.nonNull(solutions.getDelValidDays())){
                saveUnionChangeDTO.setDelValidDate(
                        DateUtil.afterDateByType(saveUnionChangeDTO.getApplyDate(),0,solutions.getDelValidDays())
                );
            }else{
                saveUnionChangeDTO.setDelValidDate(saveUnionChangeDTO.getApplyDate());
            }
            //判断批单日期 åˆå¹¶å•的批单生效期在为 ä¿å•起期的次日 åˆ°ä¿å•止期
            //获取开始日期次日
            if(saveUnionChangeDTO.getAddValidDate().getTime()<unionApply.getStartTime().getTime()
@@ -665,8 +664,8 @@
        notifyUrl = notifyUrl.replace("${type}","0").replace("${id}",unionChange.getId().toString());
//        String applyNo = signService.applySignLocalFile(company.getName(),company.getName(),fileUrl,company.getCode(),company.getEmail(),"合并单(加减保/换厂)申请签署",company.getSignId(),notifyUrl);
        //临时使用
        fileUrl =    "https://yybred.oss-cn-hangzhou.aliyuncs.com/apply/20241120/1c80f0d7-ab35-4355-b9fe-944464643115.pdf";
        String applyNo = signService.applySign(companyName,fileUrl,companyName,creditCode,email,"人员名单签章",null,notifyUrl);
        fileUrl =    "https://yybred.oss-cn-hangzhou.aliyuncs.com/apply/20241230/a0d128f2-ba6c-4ad4-b86b-b2610a513d41.pdf";
        String applyNo = signService.applySignWidthQifengSet(companyName,fileUrl,companyName,creditCode,email,"人员名单签章",null,notifyUrl,new Float(0.7));
        if(StringUtils.isBlank(applyNo) ){
            throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"对不起,获取在线签章地址失败,请稍后重试!");
        }
server/service/src/main/java/com/doumee/service/business/impl/WorktypeServiceImpl.java
@@ -221,7 +221,7 @@
    @Override
    public Set<Integer> importBatchForSolutions(MultipartFile file , Integer insuranceId){
    public Set<Map<String,Object>> importBatchForSolutions(MultipartFile file , Integer insuranceId){
        ExcelImporter ie = null;
        List<WorktypeImport> dataList =null;
        try {
@@ -233,11 +233,12 @@
        if(dataList == null || dataList.size() ==0){
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,录入数据为空!");
        }
        List<Integer> result = new ArrayList<>();
        List<Map<String,Object>> result = new ArrayList<>();
        List<Worktype> inWorkTypeList = null;
        if(Objects.nonNull(insuranceId)){
            inWorkTypeList = worktypeMapper.selectList(new QueryWrapper<Worktype>().lambda().eq(Worktype::getIsdeleted,Constants.ZERO)
                    .eq(Worktype::getInsuranceId,insuranceId).eq(Worktype::getDataType,Constants.TWO)
                    .eq(Worktype::getInsuranceId,insuranceId)
                    .eq(Worktype::getDataType,Constants.TWO)
            );
        }
        for(WorktypeImport model : dataList){
@@ -247,11 +248,14 @@
            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(inWorkTypeList)){
                Integer workTypeId = getHasWorkTypeByName(model.getName(),inWorkTypeList);
                if(Objects.nonNull(workTypeId)){
                    result.add(workTypeId);
                    Map<String,Object> map = new HashMap<>();
                    map.put("id",workTypeId);
                    map.put("name",model.getName());
                    result.add(map);
                }
            }
        }
        Set<Integer> resultSet = new HashSet<>(result);
        Set<Map<String,Object>> resultSet = new HashSet<>(result);
        return resultSet;
    }
server/service/src/main/java/com/doumee/service/business/third/SignService.java
@@ -262,7 +262,31 @@
     * @param email
     * @param postionJson
     */
    public String applySignWidthQifengSet(String name,String fileUrl,String fullname,String creditCoe,String email,String postionJson,String singId,String notifyUrl,Float qifengSet){
      return  applySignDoByParam(name,fileUrl,fullname,creditCoe,email,postionJson,singId,notifyUrl,qifengSet);
    }
    /**
     * å‘起签约
     * @param name
     * @param fileUrl
     * @param fullname
     * @param creditCoe
     * @param email
     * @param postionJson
     */
    public String applySign(String name,String fileUrl,String fullname,String creditCoe,String email,String postionJson,String singId,String notifyUrl){
      return  applySignDoByParam(name,fileUrl,fullname,creditCoe,email,postionJson,singId,notifyUrl,null);
    }
    /**
     * å‘起签约
     * @param name
     * @param fileUrl
     * @param fullname
     * @param creditCoe
     * @param email
     * @param postionJson
     */
    public String applySignDoByParam(String name,String fileUrl,String fullname,String creditCoe,String email,String postionJson,String singId,String notifyUrl,Float qifengSet){
      try {
          initParams();
          String url=SERVICE_URL+"/v2/sign/applySign";
@@ -288,6 +312,7 @@
//          sReq.setSearchKey(postionJson);//关键字 å¯¹åº”positionType=2
          sReq.setSignId(singId);
          sReq.setNoNeedVerify(1);
          sReq.setQiFengOffset(qifengSet);
          signatories.add(sReq);
          params.put("signatories",signatories.toJSONString());
          System.out.println("================"+JSONObject.toJSONString(params));
server/service/src/main/java/com/doumee/service/system/impl/SystemDataPermissionServiceImpl.java
@@ -153,6 +153,7 @@
            boolean depart=false;
            boolean departAndLeaf=false;
            boolean custom=false;
            boolean self=false;
            String c = "";
            for(SystemDataPermissionListVO d : list){
                if(!all && Constants.equalsInteger(d.getType(),Constants.DATAPERMISSION_TYPE.all)){
@@ -171,6 +172,9 @@
                    custom =true;
                    c += StringUtils.defaultString(d.getCustomData(),"");
                }
                if(  Constants.equalsInteger(d.getType(),Constants.DATAPERMISSION_TYPE.self)){
                    self =true;
                }
            }
            CompanyDepartment department = new CompanyDepartment();
            department.setId(user.getDepartmentId());
@@ -185,6 +189,8 @@
            if(all){
                return  null;
            }else if(self){
                return  new ArrayList<>();
            }else{
                List<Integer> dList = new ArrayList<>();
                dList.add(-1);//虚拟部门,排查空集合
server/service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java
@@ -3,7 +3,6 @@
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.api.R;
import com.doumee.config.shiro.ShiroToken;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
server/service/src/main/java/com/doumee/service/system/impl/SystemUserServiceImpl.java
@@ -13,6 +13,8 @@
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.model.Company;
import com.doumee.dao.business.model.CompanyDepartment;
import com.doumee.dao.business.CompanyDepartmentMapper;
import com.doumee.dao.business.model.Company;
import com.doumee.dao.business.model.CompanyDepartment;
@@ -180,29 +182,25 @@
    @Override
    public PageData<SystemUserListVO> findPageCompany(PageWrap<QuerySystemUserDTO> pageWrap) {
        // æ ¹éƒ¨é—¨æ¡ä»¶å¤„理(需查询根部门下所有部门的用户)
        if (pageWrap.getModel().getRootDeptId() != null) {
//            pageWrap.getModel().setDepartmentIds(getDeptIds(pageWrap.getModel().getRootDeptId()));
        } else {
//            List<SystemDepartment> list = systemDepartmentService.findList(new QueryWrapper<>());
//            List<Integer> collect = list.stream().map(s -> s.getId()).collect(Collectors.toList());
//            pageWrap.getModel().setDepartmentIds(collect);
        }
        if (pageWrap.getModel().getCompanyId() == null) {
            pageWrap.getModel().setCompanyId(-1);
        }
        IPage<Company> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        Utils.MP.blankToNull(pageWrap.getModel());
        pageWrap.getModel().setType(Constants.UserType.COMPANY.getKey());//查询企业类型
        // æ‰§è¡ŒæŸ¥è¯¢
        PageHelper.startPage(pageWrap.getPage(), pageWrap.getCapacity());
        List<SystemUserListVO> userList = systemUserMapper.selectManageList(pageWrap.getModel(), pageWrap.getOrderByClause());
        String zhuboRoomUrl = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.ZHUBO_ROOM_URL).getCode();
        for (SystemUserListVO user : userList) {
            // æŸ¥è¯¢ç”¨æˆ·è§’色列表
            user.setRoles(systemRoleService.findByUserId(user.getId()));
            // æŸ¥è¯¢ç”¨æˆ·å²—位列表
//            user.setPositions(systemPositionService.findByUserId(user.getId()));
            user.setZhuboRoomUrl(zhuboRoomUrl);
        }
        return PageData.from(new PageInfo<>(userList));
        MPJLambdaWrapper<SystemUser> wrapper = new MPJLambdaWrapper<>();
        wrapper .selectAll(SystemUser.class)
                .select("(select count(distinct(a.company_id) from company_permisson a where a.user_id=t.id and a.ideleted=0 and a.type=1)",SystemUser::getAuthNum)
                .selectAs(Company::getName,SystemUser::getCompanyName)
                .selectAs(CompanyDepartment::getName,SystemUser::getDepartmentName)
                .leftJoin(Company.class,Company::getId,SystemUser::getCompanyId)
                .leftJoin(CompanyDepartment.class,CompanyDepartment::getId,SystemUser::getDepartmentId)
                .eq( pageWrap.getModel().getDepartmentId() !=null,SystemUser::getDepartmentId, pageWrap.getModel().getDepartmentId())
                .eq( pageWrap.getModel().getStatus() !=null,SystemUser::getStatus, pageWrap.getModel().getStatus())
                .like(StringUtils.isNotBlank(pageWrap.getModel().getMobile()),SystemUser::getMobile, pageWrap.getModel().getMobile())
                .like(StringUtils.isNotBlank(pageWrap.getModel().getRealname()),SystemUser::getRealname, pageWrap.getModel().getRealname())
                .like(StringUtils.isNotBlank(pageWrap.getModel().getUsername()),SystemUser::getUsername, pageWrap.getModel().getUsername())
                .like(StringUtils.isNotBlank(pageWrap.getModel().getCompanyName()),SystemUser::getCompanyName, pageWrap.getModel().getCompanyName());
        IPage<SystemUserListVO> result =  systemUserMapper.selectJoinPage(page,SystemUserListVO.class,wrapper);
        return  PageData.from(result);
    }
    @Override
@@ -271,14 +269,12 @@
        Utils.MP.blankToNull(pageWrap.getModel());
        queryWrapper.selectAll(SystemUser.class);
        queryWrapper.eq(SystemUser::getDeleted, Constants.ZERO);
        queryWrapper.and(StringUtils.isNotBlank(pageWrap.getModel().getUsername()),ms->ms.like(SystemUser::getUsername,pageWrap.getModel().getUsername())
        queryWrapper.and(StringUtils.isNotBlank(pageWrap.getModel().getUsername()),
                ms->ms.like(SystemUser::getUsername,pageWrap.getModel().getUsername())
        .or().like(SystemUser::getMobile,pageWrap.getModel().getUsername())
                .or().like(SystemUser::getRealname,pageWrap.getModel().getUsername())
        );
        queryWrapper.orderByDesc(SystemUser::getCreateTime);
        IPage<SystemUser> result = systemUserJoinMapper.selectJoinPage(page, SystemUser.class, queryWrapper);
        return PageData.from(result);