diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/batch/CalSalaryBatch.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/batch/CalSalaryBatch.java index ea23da0..9b8c672 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/batch/CalSalaryBatch.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/batch/CalSalaryBatch.java @@ -4,16 +4,22 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.pusong.business.domain.PsContractInfo; +import com.pusong.business.domain.PsContractPay; import com.pusong.business.domain.PsSalary; import com.pusong.business.domain.PsSalaryConfig; import com.pusong.business.domain.vo.PsContractBusinessDetailVo; import com.pusong.business.domain.vo.PsContractBusinessVo; +import com.pusong.business.domain.vo.PsContractPayVo; +import com.pusong.business.enums.CommonStatusEnum; import com.pusong.business.enums.ContractStatusEnum; +import com.pusong.business.enums.PayStatusEnum; import com.pusong.business.mapper.PsContractInfoMapper; +import com.pusong.business.mapper.PsContractPayMapper; import com.pusong.business.mapper.PsSalaryConfigMapper; import com.pusong.business.mapper.PsSalaryMapper; import com.pusong.business.service.IPsContractBusinessService; import com.pusong.common.core.utils.DateUtils; +import com.pusong.common.core.utils.StringUtils; import com.pusong.system.domain.SysUser; import com.pusong.system.domain.SysUserPost; import com.pusong.system.mapper.SysUserMapper; @@ -31,7 +37,9 @@ import java.time.temporal.TemporalAdjusters; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.stream.Collectors; +import java.util.stream.Stream; @Component @@ -47,7 +55,10 @@ public class CalSalaryBatch { private SysUserPostMapper sysUserPostMapper; @Resource private PsSalaryConfigMapper psSalaryConfigMapper; + @Resource private PsSalaryMapper psSalaryMapper; + @Resource + private PsContractPayMapper payMapper; /** * 每月1日凌晨1点执行 */ @@ -65,21 +76,26 @@ public class CalSalaryBatch { log.info("查询本月所有已完成的合同"); List contractInfos = psContractInfoMapper.selectList(Wrappers.lambdaQuery() - .eq(PsContractInfo::getContractStatus, ContractStatusEnum.SUCCESS.getCode()) + .ne(PsContractInfo::getIsCancel, CommonStatusEnum.SUCCESS.getCode()) .between(PsContractInfo::getFinishDate, firstDayOfLastMonth, lastDayOfLastMonth)); - log.info("查询本月所有已完成的合同{}", contractInfos.size()); + log.info("查询本月所有的合同{}", contractInfos.size()); if(CollectionUtils.isEmpty(contractInfos)){ log.info("本月无已完成合同"); contractInfos = new ArrayList<>(); } - //转换 客户经理有的合同编码 - Map> map = contractInfos.stream().collect(Collectors.groupingBy(PsContractInfo::getCustomManager, - Collectors.mapping(PsContractInfo::getContractCode,Collectors.toList()))); + List finists = contractInfos.stream().filter(item -> StringUtils.equals(item.getContractStatus(), ContractStatusEnum.SUCCESS.getCode())).toList(); + List unfinists = contractInfos.stream().filter(item -> !StringUtils.equals(item.getContractStatus(), ContractStatusEnum.SUCCESS.getCode())).toList(); + log.info("本月已完成合同数量{},未完成数量{}", finists.size(),unfinists.size()); + //转换 客户经理有的合同编码 + Map> finistMap = finists.stream().collect(Collectors.groupingBy(PsContractInfo::getCustomManager,Collectors.toList())); + Map> unfinistMap = unfinists.stream().collect(Collectors.groupingBy(PsContractInfo::getCustomManager,Collectors.toList()));; //查询所有岗位配置信息 List configs = psSalaryConfigMapper.selectList(); Map> configMap = configs.stream().collect(Collectors.groupingBy(PsSalaryConfig::getPostId, Collectors.toMap(PsSalaryConfig::getServiceProject, PsSalaryConfig::getSalaryRatio))); + Map> costMap = configs.stream().collect(Collectors.groupingBy(PsSalaryConfig::getPostId, + Collectors.toMap(PsSalaryConfig::getServiceProject, PsSalaryConfig::getCost))); //循环计算每个员工的提成 for (SysUser user : list){ Long userId = user.getUserId(); @@ -89,9 +105,17 @@ public class CalSalaryBatch { if(post == null){continue;} log.info("查询员工岗位{}",post.getPostId()); //服务列表 - List busin = businessService.selectBusinessList(map.get(userId)); + List codeList = finistMap.get(userId).stream().map(PsContractInfo::getContractCode).toList(); + List busin = businessService.selectBusinessList(codeList); + //所有合同的退款列表 + codeList.addAll(unfinistMap.get(userId).stream().map(PsContractInfo::getContractCode).toList()); + log.info("进行计算提成计算"); - BigDecimal salary = calSalary(busin, configMap.get(post.getPostId())); + BigDecimal salary = calSalary(busin, configMap.get(post.getPostId()),costMap.get(post.getPostId())); + List payList = payMapper.selectList(Wrappers.lambdaQuery().in(PsContractPay::getContractCode, codeList). + eq(PsContractPay::getPayStatus, PayStatusEnum.SUCCESS.getCode()).eq(PsContractPay::getBusinessType,"2")); + //salary- 退费金额*服务项目最高提成 + salary = salary.subtract(this.calReturnSalary(payList,configMap.get(post.getPostId()))); log.info("进行计算提成计算{}",salary); log.info("进行存表"); PsSalary psSalary = new PsSalary(); @@ -100,37 +124,67 @@ public class CalSalaryBatch { psSalary.setSalaryDate(DateUtils.toDate(firstDayOfLastMonth)); psSalary.setPostId(post.getPostId()); psSalary.setUserId(userId); -// psSalaryMapper.insert(psSalary); + //已完成合同数量 + int finishNum = CollectionUtils.isEmpty(finistMap.get(userId))?0:finistMap.get(userId).size(); + //未完成合同数量 + int unFinishNum = CollectionUtils.isEmpty(unfinistMap.get(userId))?0:unfinistMap.get(userId).size(); + psSalary.setContractNum(finishNum+unFinishNum); + psSalary.setFinistContractNum(finishNum); + psSalary.setUnfinistContractNum(unFinishNum); + //已完成合同金额 + BigDecimal finishMoney = CollectionUtils.isEmpty(finistMap.get(userId))?BigDecimal.ZERO: + finistMap.get(userId).stream().map(PsContractInfo::getContractAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add); + //未完成合同金额 + BigDecimal unFinishMoney = CollectionUtils.isEmpty(unfinistMap.get(userId))?BigDecimal.ZERO: + unfinistMap.get(userId).stream().map(PsContractInfo::getContractAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);; + psSalary.setContractMoney(finishMoney.add(unFinishMoney)); + psSalary.setFinistContractMoney(finishMoney); + psSalary.setUnfinistContractMoney(unFinishMoney); + psSalaryMapper.insert(psSalary); } log.info("员工提成批处理结束"); } /** + * (服务项目1收费-服务项目1成本)*服务项目1提成比例+(服务项目2收费-服务项目2成本)*服务项目2提成比例 + * +(服务项目3收费-服务项目3成本)*服务项目3提成比例 * * @param businessVo 服务项目 * @param configMap 配置map + * @param costMap 成本map * @return */ - private BigDecimal calSalary(List businessVo,Map configMap){ + private BigDecimal calSalary(List businessVo,Map configMap, + Map costMap){ + String cbStr = "0.0"; + String rateStr = "0.1"; + BigDecimal salary = BigDecimal.ZERO; for(PsContractBusinessVo item : businessVo){ //如果详情没有填写金额的话按照详情中最低的提成比例进行计算(按照详情算) if(item.getDetailVoList().get(0).getAmount() == null || BigDecimal.ZERO.compareTo(item.getDetailVoList().get(0).getAmount()) == 0){ - BigDecimal rate = new BigDecimal("0.1"); + BigDecimal rate = new BigDecimal(cbStr); + BigDecimal cb = new BigDecimal(rateStr); for (PsContractBusinessDetailVo detail:item.getDetailVoList()){ BigDecimal rateConfig = configMap.get(detail.getBusinessProject()) == null?new BigDecimal("0.1"):configMap.get(detail.getBusinessProject()); - rate = rate.compareTo(rateConfig)>0?rate:rateConfig; + rate = rate.compareTo(rateConfig)<0?rate:rateConfig; + cb = cb.add(costMap.get(detail.getBusinessProject()) == null ? new BigDecimal(cbStr):costMap.get(detail.getBusinessProject())); } - //服务类型金额 - BigDecimal amount = item.getBusinessAmount(); + //服务类型金额 - 成本 + BigDecimal amount = item.getBusinessAmount().subtract(cb); + // ×比例 salary = salary.add(amount.multiply(rate)); }else{//(按照类型算) for (PsContractBusinessDetailVo detail:item.getDetailVoList()){ + //比例 BigDecimal rateConfig = configMap.get(detail.getBusinessProject()) == null?new BigDecimal("0.1"):configMap.get(detail.getBusinessProject()); - salary = salary.add(detail.getAmount().multiply(rateConfig)); + //成本 + BigDecimal rateCost = costMap.get(detail.getBusinessProject()) == null ? new BigDecimal(cbStr):costMap.get(detail.getBusinessProject()); + //(项目金额-成本)) *比例 + salary = salary.add(detail.getAmount().subtract(rateCost).multiply(rateConfig)); } } @@ -138,4 +192,28 @@ public class CalSalaryBatch { return salary; } + + /** + * 算退费金额 + * @param payList + * @param configMap + * @return + */ + private BigDecimal calReturnSalary(List payList,Map configMap){ + String cbStr = "0.0"; + BigDecimal retur = BigDecimal.ZERO; + if(CollectionUtils.isEmpty(payList)){return retur;} + for(PsContractPay pay : payList){ + List list = businessService.selectBusinessList(List.of(pay.getContractCode())); + BigDecimal rate = new BigDecimal(cbStr); + for(PsContractBusinessVo item : list){ + for (PsContractBusinessDetailVo detail:item.getDetailVoList()){ + BigDecimal rateConfig = configMap.get(detail.getBusinessProject()) == null?new BigDecimal("0.1"):configMap.get(detail.getBusinessProject()); + rate = rate.compareTo(rateConfig)>0?rate:rateConfig; + } + } + retur = retur.add(pay.getMoney().multiply(rate)); + } + return retur; + } } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsContractOperateController.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsContractOperateController.java index fa9ad37..d65105e 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsContractOperateController.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsContractOperateController.java @@ -87,6 +87,18 @@ public class PsContractOperateController extends BaseController { return R.ok(); } + /** + * 回传合同 + */ + @SaCheckPermission("business:contractOperate:confirm") + @PostMapping(value = "/confirm", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + public R confirm(@RequestPart("file") MultipartFile file,@NotBlank String contractCode )throws Exception { + operateService.confirm( file, contractCode); + return R.ok(); + } + + + // diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsHomeController.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsHomeController.java new file mode 100644 index 0000000..e25cfa2 --- /dev/null +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsHomeController.java @@ -0,0 +1,49 @@ +package com.pusong.business.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import com.pusong.business.domain.bo.PsCustomCallbackBo; +import com.pusong.business.domain.bo.PsCustomInfoBo; +import com.pusong.business.domain.bo.PsCustomPriceBo; +import com.pusong.business.domain.vo.PsCustomInfoVo; +import com.pusong.business.domain.vo.PsCustomerRecordVo; +import com.pusong.business.service.IPsCustomInfoService; +import com.pusong.common.core.domain.R; +import com.pusong.common.core.validate.AddGroup; +import com.pusong.common.core.validate.EditGroup; +import com.pusong.common.idempotent.annotation.RepeatSubmit; +import com.pusong.common.log.annotation.Log; +import com.pusong.common.log.enums.BusinessType; +import com.pusong.common.mybatis.core.page.PageQuery; +import com.pusong.common.mybatis.core.page.TableDataInfo; +import com.pusong.common.web.core.BaseController; +import jakarta.validation.constraints.NotNull; +import lombok.RequiredArgsConstructor; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 客户基本信息 + * + * @author Lion Li + * @date 2024-07-25 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/business/home") +public class PsHomeController extends BaseController { + + private final IPsCustomInfoService psCustomInfoService; + /** + * 查询登陆人下所有的客户名称和id + */ + @SaCheckPermission("business:customInfo:list") + @GetMapping("/listByLoginUser") + public R> listByLoginUser() { + return R.ok(psCustomInfoService.listByLoginUser()); + } + + +} diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsSalaryConfigController.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsSalaryConfigController.java index 4b7fdd8..251c829 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsSalaryConfigController.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsSalaryConfigController.java @@ -2,6 +2,7 @@ package com.pusong.business.controller; import java.util.List; +import com.pusong.business.domain.bo.PsSalaryConfigAddVo; import com.pusong.business.domain.vo.PsSalaryConfigInfoVo; import lombok.RequiredArgsConstructor; import jakarta.servlet.http.HttpServletResponse; @@ -56,6 +57,17 @@ public class PsSalaryConfigController extends BaseController { return R.ok(psSalaryConfigService.queryByTemplateCode(templateCode)); } + /** + * 新增提成配置 + */ + @Log(title = "新增提成配置") + @SaCheckPermission("business:salaryConfig:add") + @PostMapping("/add") + public R add(PsSalaryConfigAddVo addVo) { + psSalaryConfigService.add(addVo); + return R.ok(); + } + // /** diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsTaskController.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsTaskController.java index b37371a..3df3ed8 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsTaskController.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsTaskController.java @@ -10,6 +10,7 @@ import com.pusong.common.core.domain.R; import com.pusong.common.core.validate.QueryGroup; import com.pusong.common.log.annotation.Log; import com.pusong.common.log.enums.BusinessType; +import jakarta.validation.constraints.NotBlank; import lombok.RequiredArgsConstructor; import cn.dev33.satoken.annotation.SaCheckPermission; import org.jetbrains.annotations.NotNull; @@ -75,7 +76,7 @@ public class PsTaskController extends BaseController { @Log(title = "根据任务id查询任务的公司信息和资料信息") @SaCheckPermission("business:task:list") @GetMapping("/info") - public R info(@NotNull Long id) { + public R info(@NotBlank String id) { return R.ok(psTaskMainService.queryInfo(id)); } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/ServiceConfigController.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/ServiceConfigController.java index 0f1d5b5..2a2a667 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/ServiceConfigController.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/ServiceConfigController.java @@ -55,4 +55,12 @@ public class ServiceConfigController { configService.delete(dictCode); return R.ok(); } + + /** + * 根据合同编码查询资料配置信息 + */ + @PostMapping("/getByContractCode") + public R> getByContractCode(String contractCode) { + return R.ok(configService.getByContractCode(contractCode)); + } } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/PsContractInfo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/PsContractInfo.java index a68c9f3..ade76dc 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/PsContractInfo.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/PsContractInfo.java @@ -146,6 +146,9 @@ public class PsContractInfo extends TenantEntity { * 合同完成时间 */ private Date finishDate; - + /** + * 确认单 + */ + private Long confirmOssid; } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/PsSalaryConfig.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/PsSalaryConfig.java index b056143..bf2e707 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/PsSalaryConfig.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/PsSalaryConfig.java @@ -37,7 +37,10 @@ public class PsSalaryConfig extends TenantEntity { * 服务项目编码 */ private String serviceProject; - + /** + * 成本 + */ + private BigDecimal cost; /** * 提成比例 */ diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsSalaryConfigAddVo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsSalaryConfigAddVo.java new file mode 100644 index 0000000..cb1b194 --- /dev/null +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsSalaryConfigAddVo.java @@ -0,0 +1,36 @@ +package com.pusong.business.domain.bo; + +import com.pusong.business.domain.PsSalary; +import com.pusong.business.domain.PsSalaryConfig; +import io.github.linpeilie.annotations.AutoMapper; +import jakarta.validation.constraints.NotEmpty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; +import java.util.List; + +@Data +@EqualsAndHashCode +@AutoMapper(target = PsSalaryConfig.class) +public class PsSalaryConfigAddVo { + + /** + * 模板编码 + */ + private String templateCode; + /** + * 模板名称 + */ + private String templateName; + /** + * 岗位id + */ + private Long postId; + + /** + * 提成详细 + */ + @NotEmpty + private List salaryConfigVoList; +} diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/SalaryConfigVo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/SalaryConfigVo.java new file mode 100644 index 0000000..a63c418 --- /dev/null +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/SalaryConfigVo.java @@ -0,0 +1,27 @@ +package com.pusong.business.domain.bo; + +import com.pusong.business.domain.PsSalaryConfig; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; + +@Data +@EqualsAndHashCode +@AutoMapper(target = PsSalaryConfig.class) +public class SalaryConfigVo { + + /** + * 服务项目编码 + */ + private String serviceProject; + /** + * 成本 + */ + private BigDecimal cost; + /** + * 提成比例 + */ + private BigDecimal salaryRatio; +} diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsContractInfoVo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsContractInfoVo.java index cfa9a63..68aee27 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsContractInfoVo.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsContractInfoVo.java @@ -208,4 +208,10 @@ public class PsContractInfoVo implements Serializable { * 发票ossid */ private String invoiceOssid; + + /** + * 确认单 + */ + private Long confirmOssid; + } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsCustomerRecordVo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsCustomerRecordVo.java index 138ee02..1ec1db3 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsCustomerRecordVo.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsCustomerRecordVo.java @@ -10,6 +10,7 @@ import lombok.Data; import java.io.Serial; import java.io.Serializable; +import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -66,6 +67,7 @@ public class PsCustomerRecordVo implements Serializable { /** * 销售经理 */ + @Translation(type = TransConstant.USER_ID_TO_NICKNAME) private String customManager; /** * 所属区域 @@ -104,7 +106,7 @@ public class PsCustomerRecordVo implements Serializable { /** * 当前服务人名字 */ - @Translation(type = TransConstant.USER_ID_TO_NICKNAME,mapper = "executor") + @Translation(type = TransConstant.USER_ID_TO_NICKNAME,mapper = "executors") private String executorName; /** @@ -112,6 +114,24 @@ public class PsCustomerRecordVo implements Serializable { */ private String signDesc; + /** + * 合同完成日期 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm") + private Date finishDate; + /** + * 审批状态 + */ + private String approverStatus; + /** + * 客户创建时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm") + private Date createTime; + /** + * 合同总金额 + */ + private BigDecimal contractAmount; } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsSalaryConfigInfoVo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsSalaryConfigInfoVo.java index 3348413..17d9c2e 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsSalaryConfigInfoVo.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsSalaryConfigInfoVo.java @@ -57,5 +57,5 @@ public class PsSalaryConfigInfoVo implements Serializable { /** * 服务类型Map */ - private Map> serviceTypeMap; + private Map>> serviceTypeMap; } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsSalaryVo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsSalaryVo.java index 1dc8e89..72ba9cf 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsSalaryVo.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsSalaryVo.java @@ -6,6 +6,8 @@ import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; import com.pusong.common.excel.annotation.ExcelDictFormat; import com.pusong.common.excel.convert.ExcelDictConvert; +import com.pusong.common.translation.annotation.Translation; +import com.pusong.common.translation.constant.TransConstant; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; @@ -37,7 +39,13 @@ public class PsSalaryVo implements Serializable { /** * 员工id */ + @Translation(type = TransConstant.USER_ID_TO_NICKNAME) private Long userId; + /** + * 员工岗位 + */ + @Translation(type = TransConstant.POST_ID_TO_NAME) + private Long postId; /** * 员工提成金额 @@ -49,5 +57,28 @@ public class PsSalaryVo implements Serializable { */ private String salaryDate; - + /** + * 合同数量 + */ + private Integer contractNum; + /** + * 已完成数量 + */ + private Integer finistContractNum; + /** + * 未完成数量 + */ + private Integer unfinistContractNum; + /** + * 合同总金额 + */ + private BigDecimal contractMoney; + /** + * 已完成金额 + */ + private BigDecimal finistContractMoney; + /** + * 未完成金额 + */ + private BigDecimal unfinistContractMoney; } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsTaskMainVo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsTaskMainVo.java index 917226d..45a6d1b 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsTaskMainVo.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsTaskMainVo.java @@ -125,4 +125,9 @@ public class PsTaskMainVo implements Serializable { * 特勤是否派单1是0否 */ private String secAppo; + /** + * 任务备注 + */ + private String taskDesc; } + diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/enums/TaskStatusEnum.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/enums/TaskStatusEnum.java index 6bf2cd9..30eaded 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/enums/TaskStatusEnum.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/enums/TaskStatusEnum.java @@ -14,7 +14,7 @@ import java.util.List; public enum TaskStatusEnum { INIT("10","任务初始化(待派单)"), ING("20","进行中"), - OA("25","完成审批中"), +// OA("25","完成审批中"), FINISH("30","完成"), PAUSE("40","暂停"), CANCEL("50","作废"), @@ -56,7 +56,7 @@ public enum TaskStatusEnum { public static Boolean canFinish(String taskStatus){ //不能点:作废 完成 审批中 if(StringUtils.equals(taskStatus,CANCEL.getCode()) || StringUtils.equals(taskStatus,FINISH.getCode()) - || StringUtils.equals(taskStatus,OA.getCode())|| StringUtils.equals(taskStatus,CANCELAPPO.getCode())){ + || /*StringUtils.equals(taskStatus,OA.getCode())||*/ StringUtils.equals(taskStatus,CANCELAPPO.getCode())){ return false; } return true; @@ -70,6 +70,7 @@ public enum TaskStatusEnum { @AllArgsConstructor public enum AppointStatusEnum { ING("20","进行中"), + OA("25","完成审批中"), FINISH("30","完成"), PAUSE("40","暂停"), CANCEL("50","作废"); diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsSalaryMapper.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsSalaryMapper.java index 0d677c8..15618e0 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsSalaryMapper.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsSalaryMapper.java @@ -1,17 +1,8 @@ package com.pusong.business.mapper; -import com.baomidou.mybatisplus.core.conditions.Wrapper; -import com.baomidou.mybatisplus.core.toolkit.Constants; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.pusong.business.domain.PsContractInfo; import com.pusong.business.domain.PsSalary; -import com.pusong.business.domain.PsTaskMain; import com.pusong.business.domain.vo.PsSalaryVo; -import com.pusong.business.domain.vo.PsTaskMainVo; -import com.pusong.common.mybatis.annotation.DataColumn; -import com.pusong.common.mybatis.annotation.DataPermission; import com.pusong.common.mybatis.core.mapper.BaseMapperPlus; -import org.apache.ibatis.annotations.Param; /** * 员工提成提成Mapper接口 @@ -21,10 +12,4 @@ import org.apache.ibatis.annotations.Param; */ public interface PsSalaryMapper extends BaseMapperPlus { - @DataPermission({ - @DataColumn(key = "deptName", value = "use.create_dept"), - @DataColumn(key = "userName", value = "use.create_by") - }) - Page selectSalaryList(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper queryWrapper); - } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsContractOperateService.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsContractOperateService.java index cb1527e..c612db4 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsContractOperateService.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsContractOperateService.java @@ -33,4 +33,11 @@ public interface IPsContractOperateService { * @param contractCode 合同编码 */ void rollbackContract( MultipartFile file, String contractCode); + + /** + * 确认单 + * @param file 回传合同文件 + * @param contractCode 合同编码 + */ + void confirm( MultipartFile file, String contractCode); } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsSalaryConfigService.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsSalaryConfigService.java index ef9ef0e..cfa6aa1 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsSalaryConfigService.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsSalaryConfigService.java @@ -1,5 +1,6 @@ package com.pusong.business.service; +import com.pusong.business.domain.bo.PsSalaryConfigAddVo; import com.pusong.business.domain.vo.PsSalaryConfigInfoVo; import com.pusong.business.domain.vo.PsSalaryConfigVo; import com.pusong.business.domain.bo.PsSalaryConfigBo; @@ -35,6 +36,14 @@ public interface IPsSalaryConfigService { * @return PsSalaryConfigVo */ PsSalaryConfigInfoVo queryByTemplateCode(String templateCode); + + /** + * 查询提成配置详情 + * + * @param addVo 提成模板信息 + * @return PsSalaryConfigVo + */ + void add(PsSalaryConfigAddVo addVo); // /** // * 查询提成配置 // * diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsTaskService.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsTaskService.java index 0b49530..83444a4 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsTaskService.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsTaskService.java @@ -56,7 +56,7 @@ public interface IPsTaskService { * @param id 任务主表主键 * @return 公司及资料信息 */ - PsTaskMainVo queryInfo(Long id); + PsTaskMainVo queryInfo(String id); /** * 根据合同编码查询任务 * diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IServiceConfigService.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IServiceConfigService.java index 5e36aca..dc4914c 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IServiceConfigService.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IServiceConfigService.java @@ -40,4 +40,10 @@ public interface IServiceConfigService { * @return */ void delete(Long dictCode); + + /** + * 根据合同编码查询资料配置信息 + * @param contractCode + */ + List getByContractCode(String contractCode); } \ No newline at end of file diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/ApproverService.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/ApproverService.java index 12287a5..4621822 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/ApproverService.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/ApproverService.java @@ -15,7 +15,7 @@ public interface ApproverService { * @param desc 审批说明 * @param updateData 修改后的数据 */ - public void apply( String bussinessId,String contractCode, String desc, Object updateData); + public void apply( String bussinessId,String contractCode, String desc, String updateData); /** * 成功 */ diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/ApproverAbstractServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/ApproverAbstractServiceImpl.java index 32509c3..318a261 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/ApproverAbstractServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/ApproverAbstractServiceImpl.java @@ -50,7 +50,7 @@ public abstract class ApproverAbstractServiceImpl implements ApproverService { * @param desc * @param updateData */ - public void apply(String bussinessId,String contractCode, String desc, Object updateData){ + public void apply(String bussinessId,String contractCode, String desc, String updateData){ List list = approverRecordMapper.selectList(Wrappers.lambdaQuery().eq(PsApproverRecord::getDelFlag, "0") .eq(PsApproverRecord::getBusinessId, bussinessId).eq(PsApproverRecord::getBusinessType,approverType()) .eq(PsApproverRecord::getApproverStatus, ApproverStatusEnum.INIT.getCode())); @@ -63,7 +63,7 @@ public abstract class ApproverAbstractServiceImpl implements ApproverService { record.setContractCode(contractCode); record.setBusinessType(approverType()); record.setApplyDesc(desc); - record.setUpdateData(updateData == null?null:JSON.toJSONString(updateData)); + record.setUpdateData(updateData); record.setApplyDate(new Date()); record.setApproverStatus(ApproverStatusEnum.INIT.getCode()); approverRecordMapper.insert(record); @@ -83,6 +83,7 @@ public abstract class ApproverAbstractServiceImpl implements ApproverService { public Page queryList(PsApproverRecordBo bo, PageQuery pageQuery){ QueryWrapper lqw = Wrappers.query().eq("app.business_type",approverType()) .eq(bo.getId()!=null,"app.id",bo.getId()) + .eq("app.del_flag","0") .orderByAsc("app.approver_status").orderByAsc("app.approver_date"); Page res = recordMapper.selectPageApproverList(pageQuery.build(), lqw); if(CollectionUtils.isNotEmpty(res.getRecords())){ diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/TaskFinishApproverServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/TaskFinishApproverServiceImpl.java index bfa3395..52640b1 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/TaskFinishApproverServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/TaskFinishApproverServiceImpl.java @@ -2,10 +2,12 @@ package com.pusong.business.service.approver.impl; import com.pusong.business.domain.PsApproverRecord; import com.pusong.business.domain.PsContractInfo; +import com.pusong.business.domain.PsTaskAppoint; import com.pusong.business.domain.PsTaskMain; import com.pusong.business.enums.ApproverTypeEnum; import com.pusong.business.enums.ContractStatusEnum; import com.pusong.business.enums.TaskStatusEnum; +import com.pusong.business.mapper.PsTaskAppointMapper; import com.pusong.business.mapper.PsTaskMainMapper; import com.pusong.business.service.IPsContractInfoService; import com.pusong.business.service.impl.PsContractInfoServiceImpl; @@ -24,8 +26,8 @@ public class TaskFinishApproverServiceImpl extends ApproverAbstractServiceImpl { public String approverType() { return ApproverTypeEnum.TASKFINISH.getCode(); } - private final PsTaskMainMapper taskMainMapper; - private final IPsContractInfoService contractInfoService; + private final PsTaskAppointMapper taskAppointMapper; + /** * 1 审批成功 任务的状态变为成功 @@ -33,9 +35,9 @@ public class TaskFinishApproverServiceImpl extends ApproverAbstractServiceImpl { */ @Override public void success(PsApproverRecord psApproverRecord) { - PsTaskMain info = taskMainMapper.selectById(psApproverRecord.getBusinessId()); - info.setTaskStatus(TaskStatusEnum.FINISH.getCode()); - taskMainMapper.updateById(info); + PsTaskAppoint info = taskAppointMapper.selectById(psApproverRecord.getBusinessId()); + info.setAppointStatus(TaskStatusEnum.FINISH.getCode()); + taskAppointMapper.updateById(info); } /** @@ -44,8 +46,8 @@ public class TaskFinishApproverServiceImpl extends ApproverAbstractServiceImpl { */ @Override public void fail(PsApproverRecord psApproverRecord) { - PsTaskMain info = taskMainMapper.selectById(psApproverRecord.getBusinessId()); - info.setTaskStatus(TaskStatusEnum.ING.getCode()); - taskMainMapper.updateById(info); + PsTaskAppoint info = taskAppointMapper.selectById(psApproverRecord.getBusinessId()); + info.setAppointStatus(TaskStatusEnum.ING.getCode()); + taskAppointMapper.updateById(info); } } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/IPsContractOperateServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/IPsContractOperateServiceImpl.java index b8039d7..f339064 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/IPsContractOperateServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/IPsContractOperateServiceImpl.java @@ -75,7 +75,7 @@ public class IPsContractOperateServiceImpl implements IPsContractOperateService SysOssVo vo = ossService.upload(file); //发起回传合同审批 ApproverService service = container.getService(ApproverTypeEnum.ROLBACK.getCode()); - service.apply(contractCode,contractCode,null, vo.getOssId()); + service.apply(contractCode,contractCode,null, vo.getOssId()+""); //修改合同信息 PsContractInfo psContractInfo = new PsContractInfo(); psContractInfo.setContractCode(contractCode); @@ -92,5 +92,35 @@ public class IPsContractOperateServiceImpl implements IPsContractOperateService + } + + + + /** + * 确认单 + * @param file 确认单 + * @param contractCode 合同编码 + */ + @Transactional + public void confirm( MultipartFile file, String contractCode){ + PsContractInfoVo info = contractInfoService.queryContractByCode(contractCode); + //后续添加校验可再次添加 + SysOssVo vo = ossService.upload(file); + //修改合同信息 + PsContractInfo psContractInfo = new PsContractInfo(); + psContractInfo.setContractCode(contractCode); + psContractInfo.setConfirmOssid(vo.getOssId()); + contractInfoService.updateByCode(psContractInfo); + //若已存在确认单,则删除 + if(info.getRollBackPdf() != null){ + try{ + ossService.deleteWithValidByIds(List.of(info.getConfirmOssid()),null); + }catch (Exception e){ + log.error("删除确认单失败",e); + } + } + + + } } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/IServiceConfigServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/IServiceConfigServiceImpl.java index e597455..9c6a530 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/IServiceConfigServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/IServiceConfigServiceImpl.java @@ -189,14 +189,29 @@ public class IServiceConfigServiceImpl implements IServiceConfigService { if(CollectionUtils.isNotEmpty(list)){throw new ServiceException("服务子项目已使用不可修改");} } } - public static void main(String[] args) { - String a = "7_3"; - String b = "7"; - System.out.println(a.substring(b.length()+1)); - List list = List.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13); + /** + * 根据合同编码查询资料配置信息 + * @param contractCode + */ + public List getByContractCode(String contractCode){ + SysDictDataBo dictData = new SysDictDataBo(); + dictData.setInDictType(List.of(SERVICE_PROJECT)); + List configList = dictDataService.selectDictDataList(dictData); + //分组排序 + Map map = configList.stream().collect(Collectors.toMap(SysDictDataVo::getDictValue, SysDictDataVo::getRemark)); + PsContractBusinessDetailBo bo = new PsContractBusinessDetailBo(); + bo.setContractCode(contractCode); + List list = detailService.queryList(bo); + List restList = new ArrayList<>(); list.forEach(item ->{ - if (item==6){return;} - System.out.println(item); + String bp = map.get(item.getBusinessProject()); + if(StringUtils.isNotBlank(bp)){ + String cb = JSON.parseObject(bp).getString("cb"); + if(StringUtils.isNotBlank(cb)){ + restList.addAll(List.of(cb.split(","))); + } + } }); + return restList; } } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsContractBusinessDetailServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsContractBusinessDetailServiceImpl.java index 63b5c8d..2a80645 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsContractBusinessDetailServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsContractBusinessDetailServiceImpl.java @@ -72,6 +72,7 @@ public class PsContractBusinessDetailServiceImpl implements IPsContractBusinessD LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); lqw.eq(StringUtils.isNotBlank(bo.getBusinessProject()), PsContractBusinessDetail::getBusinessProject, bo.getBusinessProject()); lqw.like(StringUtils.isNotBlank(bo.getExtentInfo()), PsContractBusinessDetail::getExtentInfo, bo.getExtentInfo()); + lqw.eq(StringUtils.isNotBlank(bo.getContractCode()), PsContractBusinessDetail::getContractCode, bo.getContractCode()); lqw.eq(PsContractBusinessDetail::getDelFlag, "0"); return lqw; } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsContractPayServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsContractPayServiceImpl.java index 7afbe5f..105e6cf 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsContractPayServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsContractPayServiceImpl.java @@ -126,7 +126,7 @@ public class PsContractPayServiceImpl implements IPsContractPayService { baseMapper.insert(pay); //发起审批 ApproverService service = container.getService(ApproverTypeEnum.RETURN.getCode()); - service.apply(pay.getId()+"",pay.getContractCode(),payBo.getPayDesc(), pay.getMoney().stripTrailingZeros()); + service.apply(pay.getId()+"",pay.getContractCode(),payBo.getPayDesc(), pay.getMoney().stripTrailingZeros().toString()); } /** * 根据主键id查询回款记录 @@ -159,8 +159,8 @@ public class PsContractPayServiceImpl implements IPsContractPayService { */ @Override public TableDataInfo queryRefundList(PageQuery pageQuery,String payStatus){ - QueryWrapper qw = new QueryWrapper().in("pay.pay_stauts", List.of(PayStatusEnum.PAYING.getCode(),PayStatusEnum.SUCCESS.getCode())) - .eq(StringUtils.isNotBlank(payStatus), "pay.pay_stauts", payStatus); + QueryWrapper qw = new QueryWrapper().in("pay.pay_status", List.of(PayStatusEnum.PAYING.getCode(),PayStatusEnum.SUCCESS.getCode())) + .eq(StringUtils.isNotBlank(payStatus), "pay.pay_status", payStatus); Page list = baseMapper.queryRefundList(pageQuery.build(), qw); list.getRecords().forEach(info->{ List payList = queryListByContractCode(info.getContractCode(),null,PayStatusEnum.SUCCESS); diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsCustomInfoServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsCustomInfoServiceImpl.java index 72030e6..268661b 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsCustomInfoServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsCustomInfoServiceImpl.java @@ -418,7 +418,7 @@ public class PsCustomInfoServiceImpl implements IPsCustomInfoService { baseMapper.updateById(psCustomInfo); //发起审批 ApproverService service = approverContainer.getService(ApproverTypeEnum.PUBLIC.getCode()); - service.apply(customerId+"",null,null,LoginHelper.getUserId()); + service.apply(customerId+"",null,null,LoginHelper.getUserId()+""); } /** diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsSalaryConfigServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsSalaryConfigServiceImpl.java index 2e822e8..ad5f111 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsSalaryConfigServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsSalaryConfigServiceImpl.java @@ -2,6 +2,7 @@ package com.pusong.business.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.pusong.business.domain.bo.PsSalaryConfigAddVo; import com.pusong.business.domain.vo.PsSalaryConfigInfoVo; import com.pusong.common.core.utils.MapstructUtils; import com.pusong.common.mybatis.core.page.TableDataInfo; @@ -11,6 +12,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import com.pusong.business.domain.bo.PsSalaryConfigBo; import com.pusong.business.domain.vo.PsSalaryConfigVo; @@ -18,10 +21,7 @@ import com.pusong.business.domain.PsSalaryConfig; import com.pusong.business.mapper.PsSalaryConfigMapper; import com.pusong.business.service.IPsSalaryConfigService; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Collection; +import java.util.*; /** * 提成配置Service业务层处理 @@ -33,6 +33,7 @@ import java.util.Collection; @Service public class PsSalaryConfigServiceImpl implements IPsSalaryConfigService { + private static final Logger log = LoggerFactory.getLogger(PsSalaryConfigServiceImpl.class); private final PsSalaryConfigMapper baseMapper; @@ -69,7 +70,9 @@ public class PsSalaryConfigServiceImpl implements IPsSalaryConfigService { public PsSalaryConfigInfoVo queryByTemplateCode(String templateCode){ List list = baseMapper.selectList(Wrappers.lambdaQuery().eq(PsSalaryConfig::getTemplateCode, templateCode).eq(PsSalaryConfig::getDelFlag, 0)); PsSalaryConfigInfoVo vo = new PsSalaryConfigInfoVo(); - Map> map = new HashMap<>(); + //服务类型:服务项目:成本 + // :提成比例 + Map>> map = new HashMap<>(); list.forEach(item->{ //服务类型 String serviceType = item.getServiceProject().split("_")[0]; @@ -78,14 +81,38 @@ public class PsSalaryConfigServiceImpl implements IPsSalaryConfigService { //岗位id拼接 vo.setPostId((StringUtils.isBlank(vo.getPostId())?"":vo.getPostId()+",")+item.getPostId()); //服务项目:提成比例 - Map project = CollectionUtils.isNotEmpty(map.get(serviceType))?map.get(serviceType):new HashMap<>(); - project.put(item.getServiceProject(),item.getSalaryRatio().stripTrailingZeros().toString()); + Map> project = CollectionUtils.isNotEmpty(map.get(serviceType))?map.get(serviceType):new HashMap<>(); + Map data = new HashMap<>(); + data.put("cost",item.getCost().stripTrailingZeros().toString()); + data.put("salaryRatio",item.getSalaryRatio().stripTrailingZeros().toString()); + project.put(item.getServiceProject(),data); map.put(serviceType,project); }); + vo.setServiceTypeMap(map); vo.setTemplateCode(templateCode); vo.setTemplateName(list.get(0).getTemplateName()); return vo; } + + /** + * 新增或修改提成配置详情 + * + * @param addVo 提成模板信息 + */ + public void add(PsSalaryConfigAddVo addVo){ + List list = MapstructUtils.convert(addVo.getSalaryConfigVoList(), PsSalaryConfig.class); + String code = addVo.getTemplateCode() == null ? UUID.randomUUID().toString() : addVo.getTemplateCode(); + list.forEach(item->{ + item.setTemplateCode(code); + item.setTemplateName(addVo.getTemplateName()); + item.setPostId(addVo.getPostId()); + }); + if(StringUtils.isNotBlank(addVo.getTemplateCode())){//修改 + baseMapper.delete(Wrappers.lambdaQuery().eq(PsSalaryConfig::getTemplateCode, code)); + log.info("修改配置成功"); + } + baseMapper.insertBatch(list); + } // /** // * 查询提成配置 // * diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsSalaryServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsSalaryServiceImpl.java index c943862..e506d75 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsSalaryServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsSalaryServiceImpl.java @@ -41,15 +41,14 @@ public class PsSalaryServiceImpl implements IPsSalaryService { @Override public TableDataInfo queryPageList(PsSalaryBo bo, PageQuery pageQuery) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); - Page result = baseMapper.selectSalaryList(pageQuery.build(), lqw); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); return TableDataInfo.build(result); } private LambdaQueryWrapper buildQueryWrapper(PsSalaryBo bo) { - Map params = bo.getParams(); LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); -// lqw.eq(bo.getUserId() != null, PsSalary::getUserId, bo.getUserId()); -// lqw.eq(bo.getServiceProject() != null, PsSalary::getServiceProject, bo.getServiceProject()); -// lqw.eq(StringUtils.isNotBlank(bo.getSalaryRatio()), PsSalary::getSalaryRatio, bo.getSalaryRatio()); + lqw.le(bo.getEndDate() != null,PsSalary::getSalaryDate,bo.getEndDate()); + lqw.ge(bo.getStartDate() != null,PsSalary::getSalaryDate,bo.getStartDate()); + lqw.exists(StringUtils.isNotBlank(bo.getName()),"select 1 from sys_user su where su.user_id = ps_salary.user_id and su.nick_name like %"+bo.getName()+"%"); return lqw; } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsTaskServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsTaskServiceImpl.java index 3c3fbf3..768d739 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsTaskServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsTaskServiceImpl.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.pusong.business.domain.PsCompanyInfo; +import com.pusong.business.domain.PsContractInfo; import com.pusong.business.domain.PsTaskAppoint; import com.pusong.business.domain.bo.AppointBo; import com.pusong.business.domain.bo.MediaCompanySaveBo; @@ -18,6 +19,7 @@ import com.pusong.business.enums.TaskStatusEnum; import com.pusong.business.enums.TaskStatusEnum.*; import com.pusong.business.enums.TaskTypeEnum; import com.pusong.business.mapper.PsContractBusinessMapper; +import com.pusong.business.mapper.PsContractInfoMapper; import com.pusong.business.mapper.PsTaskAppointMapper; import com.pusong.business.service.IPsCompanyInfoService; import com.pusong.business.service.IPsContractInfoService; @@ -69,8 +71,8 @@ public class PsTaskServiceImpl implements IPsTaskService { private final ISysOssService ossService; @Resource private ApproverContainer approverContainer; - @Autowired - private InfoEndpoint infoEndpoint; + @Resource + private PsContractInfoMapper contractInfoMapper; /** * 新增主任务 @@ -113,6 +115,7 @@ public class PsTaskServiceImpl implements IPsTaskService { public TableDataInfo queryChildPageList(PsTaskQueryBo bo, PageQuery pageQuery){ QueryWrapper lqw = buildQueryWrapper(bo); lqw.eq("appo.appoint_type",bo.getAppointType()); + lqw.eq(bo.getId() != null,"appo.id",bo.getId()); Page page = baseMapper.queryChildTaskPageList(pageQuery.build(), lqw); for (PsTaskMainVo vo : page.getRecords()) { if(vo.getStartDate() != null){ @@ -150,13 +153,24 @@ public class PsTaskServiceImpl implements IPsTaskService { * @param id 任务主表主键 * @return 公司及资料信息 */ - public PsTaskMainVo queryInfo(Long id){ + public PsTaskMainVo queryInfo(String id){ //查询任务信息 PsTaskMain mainTask = baseMapper.selectById(id); + Long customId ; + Long companyId ; + if(mainTask == null){ + PsContractInfo con = contractInfoMapper.selectOne(Wrappers.lambdaQuery().eq(PsContractInfo::getContractCode, id)); + customId = con.getCustomId(); + companyId = con.getCompanyId(); + }else{ + customId = mainTask.getCustomId(); + companyId = mainTask.getCompanyId(); + } + //查询公司信息 - PsCompanyInfoVo companyInfoVo = companyInfoService.queryById(mainTask.getCompanyId()); + PsCompanyInfoVo companyInfoVo = companyInfoService.queryById(companyId); //查询资料信息 - List list = mediaService.queryMediaList(mainTask.getCustomId(),mainTask.getCompanyId()); + List list = mediaService.queryMediaList(customId,companyId); PsTaskMainVo psTaskMainVo = new PsTaskMainVo(); psTaskMainVo.setCompanyInfoVo(companyInfoVo); psTaskMainVo.setTaskMediaVoList(list); @@ -282,9 +296,8 @@ public class PsTaskServiceImpl implements IPsTaskService { if(CollectionUtils.isNotEmpty(list)){ throw new ServiceException("操作失败,子任务未完成"); } - ApproverService service = approverContainer.getService(ApproverTypeEnum.TASKFINISH.getCode()); - service.apply(id+"",main.getContractCode(),null,null); - main.setTaskStatus(TaskStatusEnum.OA.getCode()); + main.setTaskStatus(TaskStatusEnum.FINISH.getCode()); + baseMapper.updateById(main); } /** * 子任务完成 @@ -300,7 +313,9 @@ public class PsTaskServiceImpl implements IPsTaskService { if(!AppointStatusEnum.canFinish(appoint.getAppointStatus())){ throw new ServiceException("此任务无法执行此操作,请刷新页面后重新操作"); } - appoint.setAppointStatus(AppointStatusEnum.FINISH.getCode()); + ApproverService service = approverContainer.getService(ApproverTypeEnum.TASKFINISH.getCode()); + service.apply(id+"",appoint.getContractCode(),desc,appoint.getAppointType()); + appoint.setAppointStatus(AppointStatusEnum.OA.getCode()); appoint.setTaskDesc(desc); appointMapper.updateById(appoint); } @@ -359,7 +374,11 @@ public class PsTaskServiceImpl implements IPsTaskService { QueryWrapper lqw = new QueryWrapper(); lqw.eq("main.del_flag","0"); lqw.ne("main.task_status",TaskStatusEnum.CANCEL.getCode()); - lqw.eq(StringUtils.isNotBlank(bo.getType()),"main.task_type",bo.getType()); + if(StringUtils.equals(bo.getType(),"1")){ + lqw.in(StringUtils.isNotBlank(bo.getType()),"main.task_type",List.of("1","2")); + }else{ + lqw.eq(StringUtils.isNotBlank(bo.getType()),"main.task_type",bo.getType()); + } lqw.eq(bo.getId() != null,"main.id",bo.getId()); lqw.like(StringUtils.isNotBlank(bo.getCompanyName()), "com.company_name", bo.getCompanyName());//公司地址 lqw.like(StringUtils.isNotBlank(bo.getCustomerNum()), "com.customer_num", bo.getCustomerNum());//纳税人识别号 @@ -390,6 +409,7 @@ public class PsTaskServiceImpl implements IPsTaskService { } SysOssVo vo = ossService.upload(file); info.setInvoice(vo.getOssId()+""); + info.setTaskStatus(TaskStatusEnum.FINISH.getCode()); baseMapper.updateById(info); } /** diff --git a/pusong-modules/pusong-business/src/main/resources/mapper/business/PsApproverRecordMapper.xml b/pusong-modules/pusong-business/src/main/resources/mapper/business/PsApproverRecordMapper.xml index 24ae15f..bbf9835 100644 --- a/pusong-modules/pusong-business/src/main/resources/mapper/business/PsApproverRecordMapper.xml +++ b/pusong-modules/pusong-business/src/main/resources/mapper/business/PsApproverRecordMapper.xml @@ -15,6 +15,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" , cus.custom_name , cus.custom_mobile , info.roll_back_pdf + , info.contract_amount , (select GROUP_CONCAT(business.business_type SEPARATOR ',') from ps_contract_business business where business.contract_code = info.contract_code) as business_type_name , info.contract_amount diff --git a/pusong-modules/pusong-business/src/main/resources/mapper/business/PsCustomInfoMapper.xml b/pusong-modules/pusong-business/src/main/resources/mapper/business/PsCustomInfoMapper.xml index bd112a8..165fad3 100644 --- a/pusong-modules/pusong-business/src/main/resources/mapper/business/PsCustomInfoMapper.xml +++ b/pusong-modules/pusong-business/src/main/resources/mapper/business/PsCustomInfoMapper.xml @@ -33,7 +33,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select - ps.user_id, - ps.salary_money , - su.nick_name, - sp.post_name, - (select count(*) from ps_contract_info info where info.custom_manager = ps.user_id and info.contract_status != '10' and info.is_cancel != '03') all_contract, - (select count(*) from ps_contract_info inf where inf.custom_manager = ps.user_id and inf.contract_status == '50' and inf.is_cancel != '03') finish_contract, - (select count(*) from ps_contract_info pci where pci.custom_manager = ps.user_id and pci.contract_status not in ('10','50') and pci.is_cancel != '03') unfinish_contract - from ps_salary ps - left join sys_user su on su.user_id = ps.user_id - left join sys_post sp on ps.post_id = sp.post_id - ${ew.getCustomSqlSegment} - diff --git a/pusong-modules/pusong-business/src/main/resources/mapper/business/PsTaskMainMapper.xml b/pusong-modules/pusong-business/src/main/resources/mapper/business/PsTaskMainMapper.xml index a9541ac..071e2be 100644 --- a/pusong-modules/pusong-business/src/main/resources/mapper/business/PsTaskMainMapper.xml +++ b/pusong-modules/pusong-business/src/main/resources/mapper/business/PsTaskMainMapper.xml @@ -88,6 +88,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" appo.executor as executors, appo.appoint_status, appo.id, + appo.task_desc, (select GROUP_CONCAT(business.business_type SEPARATOR ',') from ps_contract_business business where business.contract_code = con.contract_code) as business_type_name from ps_task_appoint appo