From c688020cccb0f5418cc5e58192bf7e9c53faaae9 Mon Sep 17 00:00:00 2001 From: 1073413548 <14628403+gjb0917@user.noreply.gitee.com> Date: Fri, 23 Aug 2024 17:39:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E6=88=90=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pusong/business/batch/CalSalaryBatch.java | 115 +++++++++++++++ .../controller/PsContractInfoController.java | 2 +- .../controller/PsSalaryController.java | 105 ++++++++++++++ .../business/controller/PsTaskController.java | 2 +- .../business/domain/PsContractInfo.java | 7 + .../com/pusong/business/domain/PsSalary.java | 53 +++++++ .../domain/bo/MediaCompanySaveBo.java | 3 +- .../pusong/business/domain/bo/PsSalaryBo.java | 49 +++++++ .../domain/vo/PsSalaryConfigInfoVo.java | 4 +- .../pusong/business/domain/vo/PsSalaryVo.java | 57 ++++++++ .../mapper/PsContractBusinessMapper.java | 2 +- .../business/mapper/PsSalaryMapper.java | 15 ++ .../service/IPsContractBusinessService.java | 2 +- .../business/service/IPsSalaryService.java | 68 +++++++++ .../impl/PsContractBusinessServiceImpl.java | 4 +- .../impl/PsContractInfoServiceImpl.java | 3 +- .../impl/PsSalaryConfigServiceImpl.java | 16 ++- .../service/impl/PsSalaryServiceImpl.java | 131 ++++++++++++++++++ .../service/impl/PsTaskMediaServiceImpl.java | 6 + .../service/impl/PsTaskServiceImpl.java | 7 +- .../business/PsContractBusinessMapper.xml | 6 +- .../mapper/business/PsSalaryMapper.xml | 7 + 22 files changed, 642 insertions(+), 22 deletions(-) create mode 100644 pusong-modules/pusong-business/src/main/java/com/pusong/business/batch/CalSalaryBatch.java create mode 100644 pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsSalaryController.java create mode 100644 pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/PsSalary.java create mode 100644 pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsSalaryBo.java create mode 100644 pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsSalaryVo.java create mode 100644 pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsSalaryMapper.java create mode 100644 pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsSalaryService.java create mode 100644 pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsSalaryServiceImpl.java create mode 100644 pusong-modules/pusong-business/src/main/resources/mapper/business/PsSalaryMapper.xml 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 new file mode 100644 index 0000000..3f1b2cd --- /dev/null +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/batch/CalSalaryBatch.java @@ -0,0 +1,115 @@ +package com.pusong.business.batch; + +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.PsSalaryConfig; +import com.pusong.business.domain.vo.PsContractBusinessVo; +import com.pusong.business.enums.ContractStatusEnum; +import com.pusong.business.mapper.PsContractInfoMapper; +import com.pusong.business.mapper.PsSalaryConfigMapper; +import com.pusong.business.service.IPsContractBusinessService; +import com.pusong.business.service.impl.PsTaskServiceImpl; +import com.pusong.common.core.utils.DateUtils; +import com.pusong.system.domain.SysUser; +import com.pusong.system.domain.SysUserPost; +import com.pusong.system.mapper.SysUserMapper; +import com.pusong.system.mapper.SysUserPostMapper; +import jakarta.annotation.Resource; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.temporal.TemporalAdjusters; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.function.Function; +import java.util.stream.Collectors; + + +@Component +public class CalSalaryBatch { + private static final Logger log = LoggerFactory.getLogger(CalSalaryBatch.class); + @Resource + private SysUserMapper sysUserMapper; + @Resource + private PsContractInfoMapper psContractInfoMapper; + @Autowired + private IPsContractBusinessService businessService; + @Resource + private SysUserPostMapper sysUserPostMapper; + @Resource + private PsSalaryConfigMapper psSalaryConfigMapper; + /** + * 每月1日凌晨1点执行 + */ + @Scheduled(cron = "0 0 1 1 * ?") + public void excute(){ + log.info("员工提成批处理开始"); + LocalDate now = LocalDate.now(); + LocalDate lastDayOfLastMonth = now.with(TemporalAdjusters.firstDayOfMonth());//这个月第一天0分0秒 + LocalDate firstDayOfLastMonth = lastDayOfLastMonth.minusMonths(1);//上个月第一天0分0秒 + + DateUtils.toDate(firstDayOfLastMonth); + log.info("查询所有员工"); + List list = sysUserMapper.selectList(Wrappers.lambdaQuery().select(SysUser::getUserId).eq(SysUser::getStatus, 0)); + log.info("查询所有员工{}", list.size()); + + log.info("查询本月所有已完成的合同"); + List contractInfos = psContractInfoMapper.selectList(Wrappers.lambdaQuery() + .eq(PsContractInfo::getContractStatus, ContractStatusEnum.SUCCESS.getCode()) + .between(PsContractInfo::getFinishDate, firstDayOfLastMonth, lastDayOfLastMonth)); + 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 contractCodes = contractInfos.stream().map(PsContractInfo::getContractCode).toList(); + + //查询所有岗位配置信息 + List configs = psSalaryConfigMapper.selectList(); + Map> configMap = configs.stream().collect(Collectors.groupingBy(PsSalaryConfig::getPostId, + Collectors.toMap(PsSalaryConfig::getServiceProject, PsSalaryConfig::getSalaryRatio))); + //循环计算每个员工的提成 + for (SysUser user : list){ + Long userId = user.getUserId(); + //默认员工仅有一个岗位 + log.info("查询员工岗位{}",userId); + SysUserPost post = sysUserPostMapper.selectOne(new LambdaQueryWrapper().eq(SysUserPost::getUserId, userId)); + if(post == null){continue;} + log.info("查询员工岗位{}",post.getPostId()); + //服务列表 + List busin = businessService.selectBusinessList(map.get(userId)); + + calSalary(busin,post.getPostId(),configMap.get(post)); + + } + + log.info("员工提成批处理结束"); + } + + /** + * + * @param businessVo 合同信息 + * @param postId + * @return + */ + private BigDecimal calSalary(List businessVo,Long postId,Map map){ + BigDecimal salary = BigDecimal.ZERO; + businessVo.forEach(item->{ + item.getBusinessAmount(); + }); + return salary; + + } +} diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsContractInfoController.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsContractInfoController.java index 7c449d5..026c6e0 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsContractInfoController.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsContractInfoController.java @@ -146,7 +146,7 @@ public class PsContractInfoController extends BaseController { @RepeatSubmit() @GetMapping("/queryServiceByCode") public R> queryServiceByCode(@NotBlank String contractCode) { - return R.ok(businessService.selectBusinessList(contractCode)); + return R.ok(businessService.selectBusinessList(List.of(contractCode))); } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsSalaryController.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsSalaryController.java new file mode 100644 index 0000000..4ed617b --- /dev/null +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsSalaryController.java @@ -0,0 +1,105 @@ +package com.pusong.business.controller; + +import java.util.List; + +import lombok.RequiredArgsConstructor; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import com.pusong.common.idempotent.annotation.RepeatSubmit; +import com.pusong.common.log.annotation.Log; +import com.pusong.common.web.core.BaseController; +import com.pusong.common.mybatis.core.page.PageQuery; +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.log.enums.BusinessType; +import com.pusong.common.excel.utils.ExcelUtil; +import com.pusong.business.domain.vo.PsSalaryVo; +import com.pusong.business.domain.bo.PsSalaryBo; +import com.pusong.business.service.IPsSalaryService; +import com.pusong.common.mybatis.core.page.TableDataInfo; + +/** + * 员工提成提成 + * + * @author wls + * @date 2024-08-23 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/business/salary") +public class PsSalaryController extends BaseController { + + private final IPsSalaryService psSalaryService; + + /** + * 查询员工提成提成列表 + */ + @SaCheckPermission("business:salary:list") + @GetMapping("/list") + public TableDataInfo list(PsSalaryBo bo, PageQuery pageQuery) { + return psSalaryService.queryPageList(bo, pageQuery); + } + + /** + * 导出员工提成提成列表 + */ + @SaCheckPermission("business:salary:export") + @Log(title = "员工提成提成", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(PsSalaryBo bo, HttpServletResponse response) { + List list = psSalaryService.queryList(bo); + ExcelUtil.exportExcel(list, "员工提成提成", PsSalaryVo.class, response); + } + + /** + * 获取员工提成提成详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("business:salary:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(psSalaryService.queryById(id)); + } + + /** + * 新增员工提成提成 + */ + @SaCheckPermission("business:salary:add") + @Log(title = "员工提成提成", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody PsSalaryBo bo) { + return toAjax(psSalaryService.insertByBo(bo)); + } + + /** + * 修改员工提成提成 + */ + @SaCheckPermission("business:salary:edit") + @Log(title = "员工提成提成", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody PsSalaryBo bo) { + return toAjax(psSalaryService.updateByBo(bo)); + } + + /** + * 删除员工提成提成 + * + * @param ids 主键串 + */ + @SaCheckPermission("business:salary:remove") + @Log(title = "员工提成提成", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(psSalaryService.deleteWithValidByIds(List.of(ids), true)); + } +} 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 5337ed4..b37371a 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 @@ -85,7 +85,7 @@ public class PsTaskController extends BaseController { @Log(title = "上传资料和公司信息") @SaCheckPermission("business:task:list") @PostMapping("/saveInfo") - public R saveInfo( @RequestBody MediaCompanySaveBo save) { + public R saveInfo(@Validated @RequestBody MediaCompanySaveBo save) { psTaskMainService.saveInfo(save); return R.ok(); } 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 0fe7c34..a68c9f3 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 @@ -141,4 +141,11 @@ public class PsContractInfo extends TenantEntity { * 是否作废 */ private String isCancel; + + /** + * 合同完成时间 + */ + private Date finishDate; + + } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/PsSalary.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/PsSalary.java new file mode 100644 index 0000000..476d486 --- /dev/null +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/PsSalary.java @@ -0,0 +1,53 @@ +package com.pusong.business.domain; + +import com.pusong.common.tenant.core.TenantEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.math.BigDecimal; + +import java.io.Serial; + +/** + * 员工提成提成对象 ps_salary + * + * @author wls + * @date 2024-08-23 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("ps_salary") +public class PsSalary extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @TableId(value = "id") + private Long id; + + /** + * 员工id + */ + private Long userId; + + /** + * 员工提成金额 + */ + private BigDecimal serviceProject; + + /** + * 提成月份 + */ + private String salaryRatio; + + /** + * 2逻辑删除 0 默认有效 + */ + @TableLogic + private Long delFlag; + + +} diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/MediaCompanySaveBo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/MediaCompanySaveBo.java index 6d9613f..2ac42a2 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/MediaCompanySaveBo.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/MediaCompanySaveBo.java @@ -1,8 +1,9 @@ package com.pusong.business.domain.bo; +import jakarta.validation.constraints.NotNull; import lombok.Data; import lombok.EqualsAndHashCode; -import org.jetbrains.annotations.NotNull; + import java.util.List; diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsSalaryBo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsSalaryBo.java new file mode 100644 index 0000000..b0133dd --- /dev/null +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsSalaryBo.java @@ -0,0 +1,49 @@ +package com.pusong.business.domain.bo; + +import com.pusong.business.domain.PsSalary; +import com.pusong.common.core.validate.AddGroup; +import com.pusong.common.core.validate.EditGroup; +import com.pusong.common.mybatis.core.domain.BaseEntity; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; +import java.math.BigDecimal; + +/** + * 员工提成提成业务对象 ps_salary + * + * @author wls + * @date 2024-08-23 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = PsSalary.class, reverseConvertGenerate = false) +public class PsSalaryBo extends BaseEntity { + + /** + * 主键id + */ + @NotNull(message = "主键id不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 员工id + */ + @NotNull(message = "员工id不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long userId; + + /** + * 员工提成金额 + */ + @NotNull(message = "员工提成金额不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal serviceProject; + + /** + * 提成月份 + */ + @NotBlank(message = "提成月份不能为空", groups = { AddGroup.class, EditGroup.class }) + private String salaryRatio; + + +} 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 0599934..3348413 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 @@ -42,9 +42,9 @@ public class PsSalaryConfigInfoVo implements Serializable { private String postName; /** - * 服务类型id(多个用逗号分割) + * 服务类型(多个用逗号分割) */ - private String serviceTypeId; + private String serviceType; /** * 模板编码 */ 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 new file mode 100644 index 0000000..2969cad --- /dev/null +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsSalaryVo.java @@ -0,0 +1,57 @@ +package com.pusong.business.domain.vo; + +import java.math.BigDecimal; +import com.pusong.business.domain.PsSalary; +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 io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * 员工提成提成视图对象 ps_salary + * + * @author wls + * @date 2024-08-23 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = PsSalary.class) +public class PsSalaryVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @ExcelProperty(value = "主键id") + private Long id; + + /** + * 员工id + */ + @ExcelProperty(value = "员工id") + private Long userId; + + /** + * 员工提成金额 + */ + @ExcelProperty(value = "员工提成金额") + private BigDecimal serviceProject; + + /** + * 提成月份 + */ + @ExcelProperty(value = "提成月份") + private String salaryRatio; + + +} diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsContractBusinessMapper.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsContractBusinessMapper.java index 83a6d54..d8fe083 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsContractBusinessMapper.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsContractBusinessMapper.java @@ -17,5 +17,5 @@ import java.util.List; public interface PsContractBusinessMapper extends BaseMapperPlus { - List selectBusinessList(@Param("contractCode") String contractCode); + List selectBusinessList(@Param("contractCode") List contractCode); } 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 new file mode 100644 index 0000000..15618e0 --- /dev/null +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsSalaryMapper.java @@ -0,0 +1,15 @@ +package com.pusong.business.mapper; + +import com.pusong.business.domain.PsSalary; +import com.pusong.business.domain.vo.PsSalaryVo; +import com.pusong.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 员工提成提成Mapper接口 + * + * @author wls + * @date 2024-08-23 + */ +public interface PsSalaryMapper extends BaseMapperPlus { + +} diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsContractBusinessService.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsContractBusinessService.java index 6cff13e..59f4e27 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsContractBusinessService.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsContractBusinessService.java @@ -38,7 +38,7 @@ public interface IPsContractBusinessService { * @param contractCode * @return */ - List selectBusinessList(String contractCode); + List selectBusinessList(List contractCode); /** * 查询合同服务类别 * diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsSalaryService.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsSalaryService.java new file mode 100644 index 0000000..d624223 --- /dev/null +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsSalaryService.java @@ -0,0 +1,68 @@ +package com.pusong.business.service; + +import com.pusong.business.domain.vo.PsSalaryVo; +import com.pusong.business.domain.bo.PsSalaryBo; +import com.pusong.common.mybatis.core.page.TableDataInfo; +import com.pusong.common.mybatis.core.page.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 员工提成提成Service接口 + * + * @author wls + * @date 2024-08-23 + */ +public interface IPsSalaryService { + + /** + * 查询员工提成提成 + * + * @param id 主键 + * @return 员工提成提成 + */ + PsSalaryVo queryById(Long id); + + /** + * 分页查询员工提成提成列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 员工提成提成分页列表 + */ + TableDataInfo queryPageList(PsSalaryBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的员工提成提成列表 + * + * @param bo 查询条件 + * @return 员工提成提成列表 + */ + List queryList(PsSalaryBo bo); + + /** + * 新增员工提成提成 + * + * @param bo 员工提成提成 + * @return 是否新增成功 + */ + Boolean insertByBo(PsSalaryBo bo); + + /** + * 修改员工提成提成 + * + * @param bo 员工提成提成 + * @return 是否修改成功 + */ + Boolean updateByBo(PsSalaryBo bo); + + /** + * 校验并批量删除员工提成提成信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsContractBusinessServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsContractBusinessServiceImpl.java index 1ec6a96..a02aa49 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsContractBusinessServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsContractBusinessServiceImpl.java @@ -18,6 +18,7 @@ import com.pusong.business.domain.PsContractBusiness; import com.pusong.business.mapper.PsContractBusinessMapper; import com.pusong.business.service.IPsContractBusinessService; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Collection; @@ -90,7 +91,8 @@ public class PsContractBusinessServiceImpl implements IPsContractBusinessService * @param contractCode * @return */ - public List selectBusinessList(String contractCode) { + public List selectBusinessList(List contractCode) { + if(CollectionUtils.isEmpty(contractCode)){return new ArrayList<>();} return baseMapper.selectBusinessList(contractCode); } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsContractInfoServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsContractInfoServiceImpl.java index 67bf898..a0b92bc 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsContractInfoServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsContractInfoServiceImpl.java @@ -464,6 +464,7 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService { PsContractInfo psContractInfo = new PsContractInfo(); psContractInfo.setContractCode(contractCode); psContractInfo.setContractStatus(ContractStatusEnum.SUCCESS.getCode()); + psContractInfo.setFinishDate(new Date()); this.updateByCode(psContractInfo); } } @@ -504,7 +505,7 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService { } private PsContractInfoVo fillContractInfo(PsContractInfoVo vo){ //装填服务类型和服务项目信息 - List list = businessService.selectBusinessList(vo.getContractCode()); + List list = businessService.selectBusinessList(List.of(vo.getContractCode())); vo.setBusinessTypeName(StringUtils.join(list.stream().map(PsContractBusinessVo::getBusinessType).collect(Collectors.toList()), ",")); vo.setBusinessVoList(list); //装填回款记录 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 3b1a5bf..2e822e8 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 @@ -71,15 +71,19 @@ public class PsSalaryConfigServiceImpl implements IPsSalaryConfigService { PsSalaryConfigInfoVo vo = new PsSalaryConfigInfoVo(); Map> map = new HashMap<>(); list.forEach(item->{ -// if(vo.setServiceTypeId()); - -// item.getServiceProject() - -// vo.setPostId(); + //服务类型 + String serviceType = item.getServiceProject().split("_")[0]; + //服务类型code拼接逗号分割 + vo.setServiceType(StringUtils.isBlank(vo.getServiceType())?serviceType:vo.getServiceType()+","+serviceType); + //岗位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.put(serviceType,project); }); vo.setTemplateCode(templateCode); vo.setTemplateName(list.get(0).getTemplateName()); - return vo; } // /** 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 new file mode 100644 index 0000000..ed04fa1 --- /dev/null +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsSalaryServiceImpl.java @@ -0,0 +1,131 @@ +package com.pusong.business.service.impl; + +import com.pusong.common.core.utils.MapstructUtils; +import com.pusong.common.mybatis.core.page.TableDataInfo; +import com.pusong.common.mybatis.core.page.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +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.springframework.stereotype.Service; +import com.pusong.business.domain.bo.PsSalaryBo; +import com.pusong.business.domain.vo.PsSalaryVo; +import com.pusong.business.domain.PsSalary; +import com.pusong.business.mapper.PsSalaryMapper; +import com.pusong.business.service.IPsSalaryService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 员工提成提成Service业务层处理 + * + * @author wls + * @date 2024-08-23 + */ +@RequiredArgsConstructor +@Service +public class PsSalaryServiceImpl implements IPsSalaryService { + + private final PsSalaryMapper baseMapper; + + /** + * 查询员工提成提成 + * + * @param id 主键 + * @return 员工提成提成 + */ + @Override + public PsSalaryVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询员工提成提成列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 员工提成提成分页列表 + */ + @Override + public TableDataInfo queryPageList(PsSalaryBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的员工提成提成列表 + * + * @param bo 查询条件 + * @return 员工提成提成列表 + */ + @Override + public List queryList(PsSalaryBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + 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()); + return lqw; + } + + /** + * 新增员工提成提成 + * + * @param bo 员工提成提成 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(PsSalaryBo bo) { + PsSalary add = MapstructUtils.convert(bo, PsSalary.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改员工提成提成 + * + * @param bo 员工提成提成 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(PsSalaryBo bo) { + PsSalary update = MapstructUtils.convert(bo, PsSalary.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(PsSalary entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除员工提成提成信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } +} diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsTaskMediaServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsTaskMediaServiceImpl.java index 0f65948..3764ac4 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsTaskMediaServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsTaskMediaServiceImpl.java @@ -1,5 +1,6 @@ package com.pusong.business.service.impl; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.pusong.common.core.utils.MapstructUtils; import com.pusong.common.core.utils.StringUtils; import com.pusong.common.mybatis.core.page.TableDataInfo; @@ -56,7 +57,12 @@ public class PsTaskMediaServiceImpl implements IPsTaskMediaService { } public void saveMediaList(List voList){ + if(CollectionUtils.isEmpty(voList)){ + return; + } List save = MapstructUtils.convert(voList, PsTaskMedia.class); + baseMapper.delete(Wrappers.lambdaQuery().eq(PsTaskMedia::getCustomId, save.get(0).getCustomId()) + .eq(PsTaskMedia::getCompanyId, save.get(0).getCompanyId())); baseMapper.insertOrUpdateBatch(save); } // /** 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 617fa52..3c3fbf3 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 @@ -186,11 +186,8 @@ public class PsTaskServiceImpl implements IPsTaskService { log.error("任务已完成,无法修改"); throw new ServiceException("任务已完成,无法修改"); } - if(save.getPsCompanyInfo().getId() != null || !save.getPsCompanyInfo().getId().equals( taskMain.getCompanyId())){ - log.error("公司id不同或为空"); - throw new ServiceException("非法请求"); - } - if(CollectionUtils.isEmpty(save.getMediaBoList())){ + save.getPsCompanyInfo().setId(taskMain.getCompanyId()); + if(!CollectionUtils.isEmpty(save.getMediaBoList())){ boolean repetition = save.getMediaBoList().stream().map(PsTaskMediaBo::getMediaType) .collect(Collectors.groupingBy(Function.identity(), Collectors.counting())) .entrySet().stream().anyMatch(e -> e.getValue() > 1); diff --git a/pusong-modules/pusong-business/src/main/resources/mapper/business/PsContractBusinessMapper.xml b/pusong-modules/pusong-business/src/main/resources/mapper/business/PsContractBusinessMapper.xml index 99ba09a..b19ffdb 100644 --- a/pusong-modules/pusong-business/src/main/resources/mapper/business/PsContractBusinessMapper.xml +++ b/pusong-modules/pusong-business/src/main/resources/mapper/business/PsContractBusinessMapper.xml @@ -25,7 +25,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" left join ps_contract_business_detail detail on bus.id = detail.business_id where bus.del_flag = 0 and (detail.del_flag = 0 or detail.del_flag is null) - and bus.contract_code = #{contractCode} - + and bus.contract_code in + + #{code} + diff --git a/pusong-modules/pusong-business/src/main/resources/mapper/business/PsSalaryMapper.xml b/pusong-modules/pusong-business/src/main/resources/mapper/business/PsSalaryMapper.xml new file mode 100644 index 0000000..19fbde0 --- /dev/null +++ b/pusong-modules/pusong-business/src/main/resources/mapper/business/PsSalaryMapper.xml @@ -0,0 +1,7 @@ + + + + +