From 64269c4ee4f281f6f75b717340dad1fddc164bc2 Mon Sep 17 00:00:00 2001 From: mx <1289317512@qq.com> Date: Wed, 16 Oct 2024 18:19:24 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E5=85=AC=E5=8F=B8=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/report.ftl | 10 +- .../pusong/common/core/utils/DateUtils.java | 34 ++++- .../doc/util/itext7/PageEventHandler.java | 4 +- .../PsApproverRecordController.java | 37 +++-- .../controller/PsCompanyInfoController.java | 68 ++++++---- .../business/controller/PsTaskController.java | 25 ++-- .../business/domain/PsCompanyFollow.java | 46 +++++++ .../pusong/business/domain/PsCompanyInfo.java | 3 - .../business/domain/PsContractInfo.java | 48 ++++--- .../pusong/business/domain/PsTaskMain.java | 9 +- .../business/domain/bo/PsCompanyFollowBo.java | 31 +++++ .../business/domain/bo/PsCompanyInfoBo.java | 15 +-- .../business/domain/bo/PsTaskQueryBo.java | 13 +- .../domain/vo/PsApproverRecordVo.java | 26 ++-- .../business/domain/vo/PsCompanyInfoVo.java | 11 +- .../domain/vo/PsContractBusinessVo.java | 16 ++- .../business/domain/vo/PsContractInfoVo.java | 5 + .../mapper/PsCompanyFollowMapper.java | 17 +++ .../business/mapper/PsCompanyInfoMapper.java | 8 +- .../mapper/PsContractBusinessMapper.java | 7 + .../service/IPsApproverRecordService.java | 9 +- .../service/IPsCompanyInfoService.java | 15 ++- .../business/service/IPsTaskService.java | 10 +- .../impl/FreeApproverServiceImpl.java | 15 ++- .../impl/PsApproverRecordServiceImpl.java | 88 +++++++----- .../impl/PsCompanyInfoServiceImpl.java | 66 +++++++-- .../impl/PsContractInfoServiceImpl.java | 31 ++--- .../service/impl/PsTaskServiceImpl.java | 126 +++++++++++++++--- .../business/PsApproverRecordMapper.xml | 13 +- .../mapper/business/PsCompanyInfoMapper.xml | 9 ++ .../business/PsContractBusinessMapper.xml | 15 +++ 31 files changed, 577 insertions(+), 253 deletions(-) create mode 100644 pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/PsCompanyFollow.java create mode 100644 pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsCompanyFollowBo.java create mode 100644 pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsCompanyFollowMapper.java diff --git a/doc/report.ftl b/doc/report.ftl index dd2d96b..e107beb 100644 --- a/doc/report.ftl +++ b/doc/report.ftl @@ -204,7 +204,7 @@ ${contract.startServiceDate?string('yyyy年MM月dd日')}至${contract.endServiceDate?string('yyyy年MM月dd日')}。

-

本合同中的企业托管服务,在合同到期前 30 天,乙方有义务告知甲方。如果双方在合同期满前 30 天内未提出终止或变更要求,未办理交接手续,本合同将自行延期一年。如为其他业务,则与双方约定时间为准。

+

本合同中的企业托管服务,在合同到期前 30 天,乙方有义务告知甲方。如果双方在合同期满前 30 天内未提出终止或变更要求,未办理交接手续,本合同将自行延期一年。如是其他业务,则以双方约定时间为准。

二、甲方权利与义务

(一)甲方须按本合同约定,按时足额支付服务费用,否则乙方有权拒绝提供服务;

@@ -228,12 +228,12 @@

六、通知与送达

甲方确保其通信地址、联系人、联系电话的准确性及有效性,因乙方经努力而无法与甲方取得联系而引起的一切后果,由甲方承担;

(一)如果是专人送交,则在对方签收视为已送达。

-

(二)如用快递、传真发送,则在收到传输确认书的当天被视为送到,如果传输当天不是工作日,或传输时工作日已结束营业,则在下一个工作日被视作已送达日。

+

(二)如用快递、传真发送,则在收到传输确认书的当天被视为已送达,如果传输当天不是工作日,或传输时工作日已结束营业,则在下一个工作日被视作已送达日。

(三)以电子邮件、微信、QQ等社交软件发出的,则为发送人的邮件系统确认电子邮件发送至收件人的邮件接收系统后的当天为送达日。

(四)各方均应积极履行通知义务,且确保送达地址的有效及准确,任何一方不得以拒绝签收、无人签收、变更地址未收到等理由否定送达效力。

(五)乙方工商注册环节的企业营业执照、印章等物品的快递费用由乙方承担,注册企业之后所开具发票的快递(到付)费用由甲方自行承担。

七、合同份数及法律效力

-

本合同一式贰份,甲方持壹份,乙方持壹份,每份合同具有相同的法律效力。本合同自双方签署后生效。

+

本合同壹式贰份,甲方持壹份,乙方持壹份,每份合同具有相同的法律效力。本合同自双方签署后生效。

八、其他

(一)乙方出于宣传目的而采取发放宣传册、广告、网页推广、销售人员宣讲等方式展现的内容不具有合同效力,双方权利义务内容以本合同为准。

(二)乙方工作人员无权向甲方作出超出本合同内容的承诺以及代表乙方以个人形式签署任何文件,双方均应以加盖印章的文件作为双方权利义务约定的唯一形式。

@@ -270,9 +270,9 @@ 日-->

-<#-- <#if isSign?? && isSign>--> + <#if isSign?? && isSign> -<#-- --> + diff --git a/pusong-common/pusong-common-core/src/main/java/com/pusong/common/core/utils/DateUtils.java b/pusong-common/pusong-common-core/src/main/java/com/pusong/common/core/utils/DateUtils.java index 14b01ff..4835e1b 100644 --- a/pusong-common/pusong-common-core/src/main/java/com/pusong/common/core/utils/DateUtils.java +++ b/pusong-common/pusong-common-core/src/main/java/com/pusong/common/core/utils/DateUtils.java @@ -3,6 +3,8 @@ package com.pusong.common.core.utils; import lombok.AccessLevel; import lombok.NoArgsConstructor; import org.apache.commons.lang3.time.DateFormatUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.lang.management.ManagementFactory; import java.text.ParseException; @@ -10,9 +12,8 @@ import java.text.SimpleDateFormat; import java.time.*; import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoUnit; -import java.util.ArrayList; +import java.util.Calendar; import java.util.Date; -import java.util.List; /** * 时间工具类 @@ -22,6 +23,7 @@ import java.util.List; @NoArgsConstructor(access = AccessLevel.PRIVATE) public class DateUtils extends org.apache.commons.lang3.time.DateUtils { + private static final Logger logger = LoggerFactory.getLogger(DateUtils.class); public static final String YYYY = "yyyy"; public static final String YYYY_MM = "yyyy-MM"; @@ -209,4 +211,32 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils { return ChronoUnit.MONTHS.between(startDate.withDayOfMonth(1), endDate.withDayOfMonth(1)); } + + public static Date getZeroTime(Date date){ + // 使用Calendar类设置时间为今日0点 + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + calendar.set(Calendar.HOUR_OF_DAY, 0); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.SECOND, 0); + calendar.set(Calendar.MILLISECOND, 0); + + // 获取今日0点的Date对象 + Date startOfDay = calendar.getTime(); + return startOfDay; + } + + public static int diffDay(Date startDate, Date endDate){ + if (endDate == null){ + return 0; + } + try { + long msNum = getZeroTime(endDate).getTime() - getZeroTime(startDate).getTime();//时间戳相差的毫秒数 + long dayNum = msNum / 86400000; //除以一天的毫秒数,得到相差天数(24 * 60 * 60 * 1000) + return (int)dayNum; + } catch (Exception e) { + logger.error("", e); + } + return 0; + } } diff --git a/pusong-common/pusong-common-doc/src/main/java/com/pusong/common/doc/util/itext7/PageEventHandler.java b/pusong-common/pusong-common-doc/src/main/java/com/pusong/common/doc/util/itext7/PageEventHandler.java index 9f1e43f..8f08988 100644 --- a/pusong-common/pusong-common-doc/src/main/java/com/pusong/common/doc/util/itext7/PageEventHandler.java +++ b/pusong-common/pusong-common-doc/src/main/java/com/pusong/common/doc/util/itext7/PageEventHandler.java @@ -69,7 +69,7 @@ public class PageEventHandler implements IEventHandler { public void sign(Canvas canvas, int pageNum, float right){ if (!isSign){ -// return; + return; } String psth; if(pageNum % 2 == 1){ @@ -81,7 +81,7 @@ public class PageEventHandler implements IEventHandler { try { ImageData image = ImageDataFactory.create(psth); PdfCanvas pdfCanvas = canvas.getPdfCanvas(); - float width = 75 * 0.72f; + float width = 75 * 0.73f; pdfCanvas.addImage(image,right - width,500, width, false); } catch (MalformedURLException e) { throw new RuntimeException(e); diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsApproverRecordController.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsApproverRecordController.java index 01270e9..0b74581 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsApproverRecordController.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsApproverRecordController.java @@ -1,28 +1,22 @@ package com.pusong.business.controller; -import java.util.List; - -import cn.dev33.satoken.annotation.SaIgnore; -import com.pusong.business.service.IPsContractInfoService; -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.PsApproverRecordVo; import com.pusong.business.domain.bo.PsApproverRecordBo; +import com.pusong.business.domain.vo.PsApproverRecordVo; import com.pusong.business.service.IPsApproverRecordService; +import com.pusong.business.service.IPsContractInfoService; +import com.pusong.common.core.domain.R; +import com.pusong.common.idempotent.annotation.RepeatSubmit; +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.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.RequiredArgsConstructor; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; /** * 审批记录 @@ -60,8 +54,9 @@ public class PsApproverRecordController extends BaseController { @RepeatSubmit() @GetMapping("/approver") public R approver(@NotBlank(message = "操作类型不能为空") String operate, - @NotNull(message = "数据id不能为空") Long id, String desc) { - contractInfoService.finish(psApproverRecordService.approver(operate, id, desc)); + @NotNull(message = "数据id不能为空") String id, String desc) { + String[] ids = id.split(","); + contractInfoService.finish(psApproverRecordService.approver(operate, ids, desc)); return R.ok(); } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsCompanyInfoController.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsCompanyInfoController.java index e0a395b..192258c 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsCompanyInfoController.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsCompanyInfoController.java @@ -1,33 +1,30 @@ package com.pusong.business.controller; -import java.util.List; - -import cn.dev33.satoken.annotation.SaIgnore; -import com.pusong.business.domain.bo.PsCompanyQueryBo; -import com.pusong.business.domain.bo.PsCustomRecordQueryBo; -import com.pusong.business.domain.vo.PsCompanyQueryVo; -import com.pusong.business.domain.vo.PsContractInfoVo; -import com.pusong.business.domain.vo.PsCustomerRecordVo; -import com.pusong.common.core.validate.QueryGroup; -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.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.pusong.business.domain.bo.PsCompanyFollowBo; +import com.pusong.business.domain.bo.PsCompanyInfoBo; +import com.pusong.business.domain.bo.PsCompanyQueryBo; +import com.pusong.business.domain.vo.PsApproverRecordVo; +import com.pusong.business.domain.vo.PsCompanyInfoVo; +import com.pusong.business.service.IPsCompanyInfoService; +import com.pusong.business.service.IPsTaskService; 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.core.validate.QueryGroup; +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.excel.utils.ExcelUtil; -import com.pusong.business.domain.vo.PsCompanyInfoVo; -import com.pusong.business.domain.bo.PsCompanyInfoBo; -import com.pusong.business.service.IPsCompanyInfoService; +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.NotEmpty; +import lombok.RequiredArgsConstructor; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; /** * 公司信息 @@ -42,13 +39,14 @@ import com.pusong.common.mybatis.core.page.TableDataInfo; public class PsCompanyInfoController extends BaseController { private final IPsCompanyInfoService psCompanyInfoService; - + private final IPsTaskService psTaskService; /** * 查询公司信息列表 */ @SaCheckPermission("business:companyInfo:list") @GetMapping("/list") public R> list(@Validated(QueryGroup.class) PsCompanyInfoBo bo) { + bo.setCompanyType("1"); return R.ok(psCompanyInfoService.queryList(bo)); } @@ -65,13 +63,29 @@ public class PsCompanyInfoController extends BaseController { /** * 服务公司列表 */ - @SaCheckPermission("business:customInfo:list") + @SaCheckPermission("business:companyInfo:list") @Log(title = "服务公司列表" ) @GetMapping("/serviceList") public TableDataInfo serviceList(PsCompanyQueryBo queryBo, PageQuery pageQuery) { return psCompanyInfoService.queryServiceCompany(queryBo, pageQuery); } - @SaCheckPermission("business:customInfo:list") + + @SaCheckPermission("business:companyInfo:list") + @Log(title = "分盘跟进人员" ) + @GetMapping("/followUsers") + public R followUsers(PsCompanyFollowBo queryBo) { + psCompanyInfoService.followUsers(queryBo); + return R.ok(); + } + + @SaCheckPermission("business:companyInfo:list") + @Log(title = "查看免费工单" ) + @GetMapping("/freeWork") + public Page freeWork(Long companyId) { + return psTaskService.freeWork(companyId); + } + + @SaCheckPermission("business:companyInfo:list") @Log(title = "服务公司列表" ) @GetMapping("/searchServiceCompany") public TableDataInfo searchServiceCompany(@RequestParam("keyWorld") String keyWorld) { @@ -81,7 +95,7 @@ public class PsCompanyInfoController extends BaseController { /** * 停止代账 */ - @SaCheckPermission("business:customInfo:list") + @SaCheckPermission("business:companyInfo:list") @Log(title = "停止代账" ) @GetMapping("/applyTerminationService") public R terminationService(PsCompanyQueryBo queryBo, PageQuery pageQuery) { @@ -109,7 +123,7 @@ public class PsCompanyInfoController extends BaseController { @RepeatSubmit() @PutMapping() public R edit(@Validated(EditGroup.class) @RequestBody PsCompanyInfoBo bo) { - return toAjax(psCompanyInfoService.saveBo(bo)); + return toAjax(psCompanyInfoService.update(bo)); } /** 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 b5e81f2..610cac7 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 @@ -1,33 +1,29 @@ package com.pusong.business.controller; -import cn.dev33.satoken.annotation.SaIgnore; -import com.pusong.business.domain.PsTaskAppoint; +import cn.dev33.satoken.annotation.SaCheckPermission; import com.pusong.business.domain.bo.AppointBo; import com.pusong.business.domain.bo.MediaCompanySaveBo; import com.pusong.business.domain.bo.PsTaskQueryBo; import com.pusong.business.domain.vo.PsTaskAppointVo; +import com.pusong.business.domain.vo.PsTaskMainVo; import com.pusong.business.domain.vo.TaskPlanVo; import com.pusong.business.service.IPsContractInfoService; +import com.pusong.business.service.IPsTaskService; import com.pusong.common.core.domain.R; import com.pusong.common.core.validate.QueryGroup; 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.NotBlank; import lombok.RequiredArgsConstructor; -import cn.dev33.satoken.annotation.SaCheckPermission; import org.jetbrains.annotations.NotNull; import org.springframework.http.MediaType; -import org.springframework.web.bind.annotation.*; import org.springframework.validation.annotation.Validated; -import com.pusong.common.mybatis.core.page.PageQuery; -import com.pusong.business.domain.vo.PsTaskMainVo; -import com.pusong.business.service.IPsTaskService; -import com.pusong.common.mybatis.core.page.TableDataInfo; +import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import java.util.List; import java.util.Map; /** @@ -159,8 +155,9 @@ public class PsTaskController extends BaseController { @SaCheckPermission("business:task:list") @GetMapping("/reset") @RepeatSubmit() - public R taskReset(@NotNull Long id,@NotNull Long executorId) { - psTaskMainService.taskReset(id, executorId); + public R taskReset(@NotNull Long id, @NotNull String executorIdStr) { + String[] executorIds = executorIdStr.split(","); + psTaskMainService.taskReset(id, executorIds); return R.ok(); } @@ -174,7 +171,7 @@ public class PsTaskController extends BaseController { @SaCheckPermission("business:task:list") @GetMapping("/cancel") @RepeatSubmit() - public R taskReset(@NotNull("任务id不能为空") Long id,@NotNull("作废原因不能为空") String desc) { + public R cancel(@NotNull("任务id不能为空") Long id,@NotNull("作废原因不能为空") String desc) { psTaskMainService.cancel(id, desc); return R.ok(); } @@ -189,7 +186,7 @@ public class PsTaskController extends BaseController { @SaCheckPermission("business:task:list") @PostMapping(value = "/invoice", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) @RepeatSubmit() - public R taskReset(@RequestPart("file") MultipartFile file, @NotNull Long id) { + public R invoice(@RequestPart("file") MultipartFile file, @NotNull Long id) { psTaskMainService.invoice(file,id); return R.ok(); } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/PsCompanyFollow.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/PsCompanyFollow.java new file mode 100644 index 0000000..576f67b --- /dev/null +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/PsCompanyFollow.java @@ -0,0 +1,46 @@ +package com.pusong.business.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.pusong.common.tenant.core.TenantEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; +/** + * 服务公司跟进人员 ps_company_info + * + * @author wls + * @date 2024-07-29 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("ps_company_follow") +public class PsCompanyFollow extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 公司ID + */ + @TableId(value = "id",type = IdType.AUTO) + private Long id; + /** + * 跟进人员 + */ + private Long userId; + + /** + * 公司id + */ + private Long companyId; + /** + * 2逻辑删除 0 默认有效 + */ + private Long delFlag; + + + +} diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/PsCompanyInfo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/PsCompanyInfo.java index 351407b..af75362 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/PsCompanyInfo.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/PsCompanyInfo.java @@ -159,9 +159,6 @@ public class PsCompanyInfo extends TenantEntity { */ private String companyType; - - - /** * 公司设立时间 */ 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 34ca933..85b9382 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 @@ -1,15 +1,15 @@ package com.pusong.business.domain; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; import com.pusong.common.tenant.core.TenantEntity; -import com.baomidou.mybatisplus.annotation.*; -import jakarta.validation.constraints.NotNull; import lombok.Data; import lombok.EqualsAndHashCode; -import java.math.BigDecimal; -import java.util.Date; -import com.fasterxml.jackson.annotation.JsonFormat; import java.io.Serial; +import java.math.BigDecimal; +import java.util.Date; /** * 合同基本信息对象 ps_contract_info @@ -81,10 +81,7 @@ public class PsContractInfo extends TenantEntity { */ private BigDecimal contractAmount; - /** - * 合同状态 - */ - private String contractStatus; + /** * 签约日期 @@ -130,19 +127,12 @@ public class PsContractInfo extends TenantEntity { * 2逻辑删除 0 默认有效 */ private Long delFlag; - /** - * 合同回传状态CommonStatusEnum - */ - private String rollBackStatus; + /** * 回传的合同文件ossid */ private Long rollBackPdf; - /** - * 合同签章状态CommonStatusEnum - */ - private String signStatus; /** * 服务周期开始时间 */ @@ -152,11 +142,6 @@ public class PsContractInfo extends TenantEntity { */ private Date endServiceDate; - /** - * 是否作废 - */ - private String isCancel; - /** * 合同完成时间 */ @@ -174,4 +159,23 @@ public class PsContractInfo extends TenantEntity { * 续费日期 */ private Date renewalDate; + + /** + * 合同状态,ContractStatusEnum 修改审批中 + */ + private String contractStatus; + + /** + * 合同回传状态CommonStatusEnum + */ + private String rollBackStatus; + /** + * 合同签章状态CommonStatusEnum + */ + private String signStatus; + + /** + * 是否作废CommonStatusEnum + */ + private String isCancel; } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/PsTaskMain.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/PsTaskMain.java index 665f667..73a9835 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/PsTaskMain.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/PsTaskMain.java @@ -1,13 +1,15 @@ package com.pusong.business.domain; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; import com.pusong.common.tenant.core.TenantEntity; -import com.baomidou.mybatisplus.annotation.*; import lombok.Data; import lombok.EqualsAndHashCode; -import java.util.Date; -import com.fasterxml.jackson.annotation.JsonFormat; import java.io.Serial; +import java.util.Date; /** * 主任务对象 ps_task_main @@ -86,6 +88,7 @@ public class PsTaskMain extends TenantEntity { /** * 扩展: 类型为开发票时 发票内容 + * 免费工单时为 工单id */ private String extend; diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsCompanyFollowBo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsCompanyFollowBo.java new file mode 100644 index 0000000..fd49a86 --- /dev/null +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsCompanyFollowBo.java @@ -0,0 +1,31 @@ +package com.pusong.business.domain.bo; + +import com.pusong.business.domain.PsCompanyFollow; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +/** + * 服务公司跟进人员 ps_company_info + * + * @author wls + * @date 2024-07-29 + */ +@Data +@EqualsAndHashCode +@AutoMapper(target = PsCompanyFollow.class) +public class PsCompanyFollowBo { + + /** + * 跟进人员 + */ + private List listUserId; + + /** + * 公司id + */ + private Long companyId; + +} diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsCompanyInfoBo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsCompanyInfoBo.java index 853120a..ffd90d8 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsCompanyInfoBo.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsCompanyInfoBo.java @@ -1,17 +1,14 @@ package com.pusong.business.domain.bo; -import com.alibaba.excel.annotation.ExcelProperty; import com.fasterxml.jackson.annotation.JsonFormat; import com.pusong.business.domain.PsCompanyInfo; -import com.pusong.common.core.validate.QueryGroup; -import com.pusong.common.mybatis.core.domain.BaseEntity; -import com.pusong.common.core.validate.AddGroup; import com.pusong.common.core.validate.EditGroup; import io.github.linpeilie.annotations.AutoMapper; import io.github.linpeilie.annotations.AutoMapping; +import jakarta.validation.constraints.NotNull; import lombok.Data; import lombok.EqualsAndHashCode; -import jakarta.validation.constraints.*; + import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -36,13 +33,11 @@ public class PsCompanyInfoBo { /** * 客户id */ - @NotNull(message = "客户id不能为空",groups = {EditGroup.class, AddGroup.class, QueryGroup.class}) private Long customId; /** * 公司名称 */ - @NotBlank(message = "公司名称不能为空",groups = {EditGroup.class, AddGroup.class}) private String companyName; /** @@ -166,7 +161,6 @@ public class PsCompanyInfoBo { /** * 合同服务类别 */ - @NotEmpty(message = "合同服务类别不能为空") private List businessList; @JsonFormat(pattern = "yyyy-MM-dd") @@ -238,6 +232,11 @@ public class PsCompanyInfoBo { */ private String remark; + /** + * 跟进人员 + */ + private List followUsers; + public BigDecimal getContractAmount(){ this.businessAmount = businessList == null ? new BigDecimal(0) : businessList.stream().map(PsContractBusinessBo::getBusinessAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add); diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsTaskQueryBo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsTaskQueryBo.java index 63af9e5..f071dfe 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsTaskQueryBo.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsTaskQueryBo.java @@ -1,12 +1,10 @@ package com.pusong.business.domain.bo; -import com.pusong.common.core.validate.AddGroup; -import com.pusong.common.core.validate.EditGroup; import com.pusong.common.core.validate.QueryGroup; +import jakarta.validation.constraints.NotBlank; import lombok.Data; import lombok.EqualsAndHashCode; -import jakarta.validation.constraints.*; -import java.util.Date; + import java.util.List; /** @@ -24,6 +22,7 @@ public class PsTaskQueryBo { */ private Long id; + /** * 公司名称 */ @@ -113,4 +112,10 @@ public class PsTaskQueryBo { */ private String appointStatus; + /** + * 免费工单的申请单 id, 对应extend + */ + private List extendList; + + } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsApproverRecordVo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsApproverRecordVo.java index b3c03d1..14a1ce4 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsApproverRecordVo.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsApproverRecordVo.java @@ -1,25 +1,16 @@ package com.pusong.business.domain.vo; -import java.math.BigDecimal; -import java.util.Date; - -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.annotation.FieldFill; -import com.baomidou.mybatisplus.annotation.TableField; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.fasterxml.jackson.annotation.JsonFormat; import com.pusong.business.domain.PsApproverRecord; -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 jakarta.validation.constraints.NotBlank; import lombok.Data; import java.io.Serial; import java.io.Serializable; +import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -63,7 +54,7 @@ public class PsApproverRecordVo implements Serializable { */ private String businessType; /** - * 关联业务id + * 关联业务id, 合同审批为合同号 */ private String businessId; /** @@ -232,7 +223,14 @@ public class PsApproverRecordVo implements Serializable { * 退款详细信息 */ private PsContractPayVo psContractPayVo; - public String getBusinessIdAndBusinessType(){ - return this.businessId + "_" + this.businessType; + + private PsTaskMainVo psTaskMainVo; + + public String getContractCodeAndBusinessType(){ + return this.contractCode + "_" + this.businessType; + } + + public String idStr(){ + return id.toString(); } } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsCompanyInfoVo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsCompanyInfoVo.java index 3309cb1..2b40b3c 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsCompanyInfoVo.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsCompanyInfoVo.java @@ -1,15 +1,8 @@ package com.pusong.business.domain.vo; -import java.math.BigDecimal; - -import com.baomidou.mybatisplus.annotation.FieldFill; -import com.baomidou.mybatisplus.annotation.TableField; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.fasterxml.jackson.annotation.JsonFormat; import com.pusong.business.domain.PsCompanyInfo; -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 com.pusong.system.domain.SysUser; @@ -18,6 +11,7 @@ import lombok.Data; import java.io.Serial; import java.io.Serializable; +import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -273,4 +267,5 @@ public class PsCompanyInfoVo implements Serializable { */ private String contractCode; + } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsContractBusinessVo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsContractBusinessVo.java index 4ead352..1cde4c3 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsContractBusinessVo.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsContractBusinessVo.java @@ -1,14 +1,8 @@ package com.pusong.business.domain.vo; -import java.math.BigDecimal; - -import com.baomidou.mybatisplus.annotation.TableId; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.fasterxml.jackson.annotation.JsonFormat; import com.pusong.business.domain.PsContractBusiness; -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; @@ -16,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; @@ -90,4 +85,11 @@ public class PsContractBusinessVo implements Serializable { @JsonFormat(pattern = "yyyy-MM-dd") private Date applyDate; + + private Long companyId; + + /** + * 剩余天数 + */ + private int remainingDay; } 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 8c1b3e6..6988dd5 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 @@ -267,6 +267,11 @@ public class PsContractInfoVo implements Serializable { */ private boolean taskNoFinish; + /** + * 最后一条申请 + */ + private List lastApprover; + /** * 服务项目里是否为 托管服务 * @return diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsCompanyFollowMapper.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsCompanyFollowMapper.java new file mode 100644 index 0000000..29bfc31 --- /dev/null +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsCompanyFollowMapper.java @@ -0,0 +1,17 @@ +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.PsApproverRecord; +import com.pusong.business.domain.PsCompanyFollow; +import com.pusong.business.domain.PsCompanyInfo; +import com.pusong.business.domain.vo.PsCompanyInfoVo; +import com.pusong.common.mybatis.core.mapper.BaseMapperPlus; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +public interface PsCompanyFollowMapper extends BaseMapperPlus { +} diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsCompanyInfoMapper.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsCompanyInfoMapper.java index 6e68f38..1321c2a 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsCompanyInfoMapper.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsCompanyInfoMapper.java @@ -5,9 +5,9 @@ import com.baomidou.mybatisplus.core.toolkit.Constants; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.pusong.business.domain.PsApproverRecord; import com.pusong.business.domain.PsCompanyInfo; -import com.pusong.business.domain.vo.PsApproverRecordVo; import com.pusong.business.domain.vo.PsCompanyInfoVo; -import com.pusong.business.domain.vo.PsCompanyQueryVo; +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; @@ -22,6 +22,10 @@ import java.util.List; public interface PsCompanyInfoMapper extends BaseMapperPlus { Page selectPageList(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper queryWrapper); + @DataPermission({ +// @DataColumn(key = "deptName", value = "appo.create_dept"), + @DataColumn(key = "userName", value = "usr.user_id") + }) Page selectPageList2(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper queryWrapper); List selectServiceCompanyList(@Param(Constants.WRAPPER) Wrapper queryWrapper); 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 28dfe0d..2881e9d 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 @@ -1,5 +1,6 @@ package com.pusong.business.mapper; +import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.toolkit.Constants; import com.pusong.business.domain.PsContractBusiness; import com.pusong.business.domain.vo.PsContractBusinessVo; @@ -18,4 +19,10 @@ public interface PsContractBusinessMapper extends BaseMapperPlus selectBusinessList(@Param("contractCode") List contractCode, @Param("serviceCompanyId")Long serviceCompanyId); + + List selectTuoGuanBusinessListByCompanyId(@Param("companyId") String companyId); + + List selectTuoGuanBusinessList(@Param(Constants.WRAPPER) Wrapper queryWrapper); + + } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsApproverRecordService.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsApproverRecordService.java index 332e4ad..7b924d8 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsApproverRecordService.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsApproverRecordService.java @@ -1,11 +1,10 @@ package com.pusong.business.service; -import com.pusong.business.domain.vo.PsApproverRecordVo; import com.pusong.business.domain.bo.PsApproverRecordBo; -import com.pusong.common.mybatis.core.page.TableDataInfo; +import com.pusong.business.domain.vo.PsApproverRecordVo; import com.pusong.common.mybatis.core.page.PageQuery; +import com.pusong.common.mybatis.core.page.TableDataInfo; -import java.util.Collection; import java.util.List; import java.util.Map; @@ -49,7 +48,7 @@ public interface IPsApproverRecordService { * @param id 审批表id * @return */ - String approver(String operate, Long id,String desc); + String approver(String operate, String [] id,String desc); /** * 根据条件查询最后一条审批失败的原因 @@ -58,6 +57,8 @@ public interface IPsApproverRecordService { String getLastFail(String businessId,String contractCode,List businessTypes); Map getLastFail(List businessIds, List businessTypes); + + Map> getLastRecord(List contractCodes, List businessTypes); // // /** // * 新增审批记录 diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsCompanyInfoService.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsCompanyInfoService.java index 1de6450..5ad7e14 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsCompanyInfoService.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsCompanyInfoService.java @@ -1,10 +1,13 @@ package com.pusong.business.service; -import com.pusong.business.domain.bo.PsCompanyQueryBo; -import com.pusong.business.domain.vo.PsCompanyInfoVo; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.pusong.business.domain.bo.PsCompanyFollowBo; import com.pusong.business.domain.bo.PsCompanyInfoBo; -import com.pusong.common.mybatis.core.page.TableDataInfo; +import com.pusong.business.domain.bo.PsCompanyQueryBo; +import com.pusong.business.domain.vo.PsApproverRecordVo; +import com.pusong.business.domain.vo.PsCompanyInfoVo; import com.pusong.common.mybatis.core.page.PageQuery; +import com.pusong.common.mybatis.core.page.TableDataInfo; import java.util.Collection; import java.util.List; @@ -50,6 +53,10 @@ public interface IPsCompanyInfoService { TableDataInfo queryServiceCompany(PsCompanyQueryBo bo, PageQuery pageQuery); + void followUsers(PsCompanyFollowBo bo); + + + TableDataInfo searchServiceCompany(String keyWorld); /** @@ -59,7 +66,7 @@ public interface IPsCompanyInfoService { * @return 是否新增成功 */ Boolean saveBo(PsCompanyInfoBo bo); - + int update(PsCompanyInfoBo bo); /** * 保存合同公司关联表 * @param list 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 10188a8..61eaaf4 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 @@ -1,15 +1,16 @@ package com.pusong.business.service; -import com.pusong.business.domain.PsTaskAppoint; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.pusong.business.domain.PsTaskMain; import com.pusong.business.domain.bo.AppointBo; import com.pusong.business.domain.bo.MediaCompanySaveBo; import com.pusong.business.domain.bo.PsTaskQueryBo; +import com.pusong.business.domain.vo.PsApproverRecordVo; import com.pusong.business.domain.vo.PsTaskAppointVo; import com.pusong.business.domain.vo.PsTaskMainVo; import com.pusong.business.domain.vo.TaskPlanVo; -import com.pusong.common.mybatis.core.page.TableDataInfo; import com.pusong.common.mybatis.core.page.PageQuery; +import com.pusong.common.mybatis.core.page.TableDataInfo; import org.jetbrains.annotations.NotNull; import org.springframework.web.multipart.MultipartFile; @@ -121,7 +122,7 @@ public interface IPsTaskService { * @param id 任务委派表id * @param executorId 任务新的执行者id */ - void taskReset(Long id,Long executorId); + void taskReset(Long id, String[] executorId); /** * 免费工单任务作废 * @param id 任务主表id @@ -189,4 +190,7 @@ public interface IPsTaskService { * @return 是否删除成功 *//* Boolean deleteWithValidByIds(Collection ids, Boolean isValid);*/ + + + Page freeWork(Long companyId); } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/FreeApproverServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/FreeApproverServiceImpl.java index 7385df1..ba68b3b 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/FreeApproverServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/FreeApproverServiceImpl.java @@ -5,15 +5,15 @@ 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.PsApproverRecord; -import com.pusong.business.domain.PsContractInfo; -import com.pusong.business.domain.PsTaskAppoint; import com.pusong.business.domain.PsTaskMain; import com.pusong.business.domain.bo.PsApproverRecordBo; import com.pusong.business.domain.vo.PsApproverRecordVo; import com.pusong.business.domain.vo.PsCompanyInfoVo; -import com.pusong.business.domain.vo.PsContractInfoVo; import com.pusong.business.domain.vo.PsContractPayVo; -import com.pusong.business.enums.*; +import com.pusong.business.enums.ApproverTypeEnum; +import com.pusong.business.enums.PayStatusEnum; +import com.pusong.business.enums.TaskStatusEnum; +import com.pusong.business.enums.TaskTypeEnum; import com.pusong.business.mapper.PsApproverRecordMapper; import com.pusong.business.mapper.PsTaskAppointMapper; import com.pusong.business.mapper.PsTaskMainMapper; @@ -65,6 +65,7 @@ public class FreeApproverServiceImpl extends ApproverAbstractServiceImpl { psTaskMain.setServiceCompanyId(psCompanyInfoVo.getId()); psTaskMain.setBusinessType(psApproverRecord.getUpdateData().split("@@")[0]); psTaskMain.setBusinessProject(psApproverRecord.getUpdateData().split("@@")[1]); + psTaskMain.setExtend(psApproverRecord.getId().toString()); taskMainMapper.insert(psTaskMain); // if(StringUtils.equals(vo.getSrcContractCode(), ContractStatusEnum.SUCCESS.getCode())){ // PsContractInfo info = new PsContractInfo(); @@ -89,14 +90,16 @@ public class FreeApproverServiceImpl extends ApproverAbstractServiceImpl { */ @Override public Page queryList(PsApproverRecordBo bo, PageQuery pageQuery){ - QueryWrapper lqw = Wrappers.query().eq("app.business_type", approverType()) - .eq(bo.getId()!=null,"app.id",bo.getId()) + QueryWrapper lqw = Wrappers.query() + .eq(StringUtils.isNotBlank(bo.getBusinessType()),"app.business_type", approverType()) + .eq(bo.getId() != null,"app.id",bo.getId()) .eq("app.del_flag","0") .eq(StringUtils.isNotBlank(bo.getApproverStatus()),"app.approver_status", bo.getApproverStatus()) .like(StringUtils.isNotBlank(bo.getCustomerName()),"cus.custom_name", bo.getCustomerName()) .like(StringUtils.isNotBlank(bo.getCompanyName()),"com.company_name", bo.getCompanyName()) //销售经理姓名 .exists(StringUtils.isNotBlank(bo.getCustomManagerName()),"select 1 from sys_user su where su.user_id = info.custom_manager and su.nick_name like '%"+bo.getCustomManagerName()+"%'") + .eq(StringUtils.isNotBlank(bo.getBusinessId()),"app.business_id", bo.getBusinessId()) .orderByAsc("app.approver_status").orderByDesc("app.apply_date"); Page res = recordMapper.selectPageFreeApproverList(pageQuery.build(), lqw); if(CollectionUtils.isNotEmpty(res.getRecords())){ diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsApproverRecordServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsApproverRecordServiceImpl.java index 7fb9f2c..dfa3dbc 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsApproverRecordServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsApproverRecordServiceImpl.java @@ -1,32 +1,28 @@ package com.pusong.business.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; -import com.pusong.business.domain.PsContractInfo; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.pusong.business.domain.PsApproverRecord; +import com.pusong.business.domain.bo.PsApproverRecordBo; +import com.pusong.business.domain.vo.PsApproverRecordVo; import com.pusong.business.enums.ApproverStatusEnum; import com.pusong.business.enums.ApproverTypeEnum; -import com.pusong.business.enums.TaskStatusEnum; +import com.pusong.business.mapper.PsApproverRecordMapper; +import com.pusong.business.service.IPsApproverRecordService; import com.pusong.business.service.approver.ApproverContainer; import com.pusong.business.service.approver.ApproverService; import com.pusong.common.core.exception.ServiceException; -import com.pusong.common.core.utils.MapstructUtils; import com.pusong.common.core.utils.StringUtils; -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 com.pusong.common.mybatis.core.page.TableDataInfo; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import com.pusong.business.domain.bo.PsApproverRecordBo; -import com.pusong.business.domain.vo.PsApproverRecordVo; -import com.pusong.business.domain.PsApproverRecord; -import com.pusong.business.mapper.PsApproverRecordMapper; -import com.pusong.business.service.IPsApproverRecordService; import org.springframework.transaction.annotation.Transactional; import java.util.*; -import java.util.stream.Collectors; /** * 审批记录Service业务层处理 @@ -93,32 +89,35 @@ public class PsApproverRecordServiceImpl implements IPsApproverRecordService { * 审批 * * @param operate (2 通过 3拒绝) - * @param id 审批表id + * @param ids 审批表id * @return */ @Transactional - public String approver(String operate, Long id,String desc){ - PsApproverRecord info = baseMapper.selectById(id); - if(!StringUtils.equals(ApproverStatusEnum.INIT.getCode(),info.getApproverStatus())){ - throw new ServiceException("操作失败:该审批状态已变更"); - } - ApproverService service = container.getService(info.getBusinessType()); - if(StringUtils.equals(ApproverStatusEnum.SUCCESS.getCode(),operate)){ - service.success(info); - info.setApproverStatus(ApproverStatusEnum.SUCCESS.getCode()); - }else if (StringUtils.equals(ApproverStatusEnum.FAIL.getCode(),operate)){ - service.fail(info); - info.setApproverStatus(ApproverStatusEnum.FAIL.getCode()); - }else{ - throw new ServiceException("操作失败:不支持的操作类型"); - } - info.setApproverDate(new Date()); - info.setApproverDesc(desc); - baseMapper.updateById(info); - if(StringUtils.equals(info.getBusinessType(),ApproverTypeEnum.PAY.getCode())|| - StringUtils.equals(info.getBusinessType(),ApproverTypeEnum.ROLBACK.getCode())|| - StringUtils.equals(info.getBusinessType(),ApproverTypeEnum.TASKFINISH.getCode())){ - return info.getContractCode(); + public String approver(String operate, String[] ids, String desc){ + for (String idStr : ids) { + Long id = Long.valueOf(idStr); + PsApproverRecord info = baseMapper.selectById(id); + if(!StringUtils.equals(ApproverStatusEnum.INIT.getCode(),info.getApproverStatus())){ + throw new ServiceException("操作失败:该审批状态已变更"); + } + ApproverService service = container.getService(info.getBusinessType()); + if(StringUtils.equals(ApproverStatusEnum.SUCCESS.getCode(),operate)){ + service.success(info); + info.setApproverStatus(ApproverStatusEnum.SUCCESS.getCode()); + }else if (StringUtils.equals(ApproverStatusEnum.FAIL.getCode(),operate)){ + service.fail(info); + info.setApproverStatus(ApproverStatusEnum.FAIL.getCode()); + }else{ + throw new ServiceException("操作失败:不支持的操作类型"); + } + info.setApproverDate(new Date()); + info.setApproverDesc(desc); + baseMapper.updateById(info); + if(StringUtils.equals(info.getBusinessType(),ApproverTypeEnum.PAY.getCode())|| + StringUtils.equals(info.getBusinessType(),ApproverTypeEnum.ROLBACK.getCode())|| + StringUtils.equals(info.getBusinessType(),ApproverTypeEnum.TASKFINISH.getCode())){ + return info.getContractCode(); + } } return null; } @@ -150,7 +149,7 @@ public class PsApproverRecordServiceImpl implements IPsApproverRecordService { Map map = new HashMap<>(); for (PsApproverRecordVo v : record) { if (StringUtils.equals(ApproverStatusEnum.FAIL.getCode(), v.getApproverStatus())){ - map.put(v.getBusinessIdAndBusinessType(), v.getApproverDesc()); + map.put(v.getContractCodeAndBusinessType(), v.getApproverDesc()); } } // Map map @@ -159,7 +158,22 @@ public class PsApproverRecordServiceImpl implements IPsApproverRecordService { // .collect(Collectors.toMap(PsApproverRecordVo::getBusinessIdAndBusinessType, v -> v.getApproverDesc())); return map; } + public Map> getLastRecord(List contractCodes, List businessTypes){ + if (contractCodes.isEmpty()){ + return new HashMap<>(); + } + QueryWrapper qw = Wrappers.query(); + qw.in("r.contract_code", contractCodes) + .in("r.business_type", businessTypes); + List record = baseMapper.getLastFail(qw); + Map> map = new HashMap<>(); + for (PsApproverRecordVo v : record) { + List psApproverRecordVos = map.computeIfAbsent(v.getContractCode(), s -> new ArrayList<>()); + psApproverRecordVos.add(v); + } + return map; + } // /** // * 新增审批记录 // * diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsCompanyInfoServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsCompanyInfoServiceImpl.java index 0356608..162ef2c 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsCompanyInfoServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsCompanyInfoServiceImpl.java @@ -5,21 +5,20 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 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.PsContractCompany; -import com.pusong.business.domain.PsContractInfo; +import com.pusong.business.domain.*; +import com.pusong.business.domain.bo.PsCompanyFollowBo; import com.pusong.business.domain.bo.PsCompanyInfoBo; import com.pusong.business.domain.bo.PsCompanyQueryBo; import com.pusong.business.domain.bo.PsContractBusinessBo; import com.pusong.business.domain.vo.PsCompanyInfoVo; +import com.pusong.business.domain.vo.PsContractBusinessVo; import com.pusong.business.enums.ApproverTypeEnum; -import com.pusong.business.mapper.PsCompanyInfoMapper; -import com.pusong.business.mapper.PsContractCompanyMapper; -import com.pusong.business.mapper.PsContractInfoMapper; +import com.pusong.business.mapper.*; import com.pusong.business.service.IPsCompanyInfoService; import com.pusong.business.service.approver.ApproverContainer; import com.pusong.business.service.approver.ApproverService; import com.pusong.common.core.exception.ServiceException; +import com.pusong.common.core.utils.DateUtils; import com.pusong.common.core.utils.MapstructUtils; import com.pusong.common.core.utils.StringUtils; import com.pusong.common.mybatis.core.page.PageQuery; @@ -30,9 +29,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; /** * 公司信息Service业务层处理 @@ -52,6 +50,12 @@ public class PsCompanyInfoServiceImpl implements IPsCompanyInfoService { @Resource private final ApproverContainer container; + private final PsContractBusinessMapper contractBusinessMapper; + + private final PsCompanyFollowMapper psCompanyFollowMapper; + @Resource + private PsApproverRecordMapper recordMapper; + /** * 查询公司信息 * @@ -143,9 +147,43 @@ public class PsCompanyInfoServiceImpl implements IPsCompanyInfoService { } lqw.exists(bo.getType() != 1, sql.toString()); Page result = baseMapper.selectPageList2(pageQuery.build(), lqw); + if (!result.getRecords().isEmpty()){ + //填充代账服务项目 + List companyIds = result.getRecords().stream().map(PsCompanyInfoVo::getId).collect(Collectors.toList()); + QueryWrapper queryParam = Wrappers.query(); + queryParam.in("cc.company_id", companyIds); + List psContractBusinessVos = contractBusinessMapper.selectTuoGuanBusinessList(queryParam); + Map> contractBusinessVoMap = psContractBusinessVos.stream().collect(Collectors.groupingBy(PsContractBusinessVo::getCompanyId, Collectors.toList())); + for (PsCompanyInfoVo record : result.getRecords()) { + record.setBusinessVoList(contractBusinessVoMap.get(record.getId())); + if (record.getBusinessVoList() == null){ + continue; + } + for (PsContractBusinessVo psContractBusinessVo : record.getBusinessVoList()) { + int diffDay = DateUtils.diffDay(new Date(), psContractBusinessVo.getEndDate()); + psContractBusinessVo.setRemainingDay(diffDay); + } + } + } + return TableDataInfo.build(result); } + public void followUsers(PsCompanyFollowBo bo){ + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(PsCompanyFollow::getCompanyId, bo.getCompanyId()); + psCompanyFollowMapper.delete(lqw); + + List listInsert = new ArrayList<>(); + for (Long followUser : bo.getListUserId()) { + PsCompanyFollow psCompanyFollow = new PsCompanyFollow(); + psCompanyFollow.setCompanyId(bo.getCompanyId()); + psCompanyFollow.setUserId(followUser); + listInsert.add(psCompanyFollow); + } + psCompanyFollowMapper.insertBatch(listInsert); + } + public TableDataInfo searchServiceCompany(String keyWorld){ if (keyWorld == null || keyWorld.equals("")){ return TableDataInfo.build(); @@ -158,9 +196,12 @@ public class PsCompanyInfoServiceImpl implements IPsCompanyInfoService { Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); return TableDataInfo.build(result); } + + private LambdaQueryWrapper buildQueryWrapper(PsCompanyInfoBo bo) { LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); lqw.eq(bo.getId() != null, PsCompanyInfo::getId, bo.getId()); + lqw.eq(bo.getCompanyType() != null, PsCompanyInfo::getCompanyType, bo.getCompanyType()); lqw.eq(bo.getCustomId() != null, PsCompanyInfo::getCustomId, bo.getCustomId()); lqw.eq(StringUtils.isNotBlank(bo.getCompanyName()), PsCompanyInfo::getCompanyName, bo.getCompanyName()); lqw.eq( PsCompanyInfo::getDelFlag, "0"); @@ -200,6 +241,11 @@ public class PsCompanyInfoServiceImpl implements IPsCompanyInfoService { } return flag; } + @Override + public int update(PsCompanyInfoBo bo) { + PsCompanyInfo add = MapstructUtils.convert(bo, PsCompanyInfo.class); + return baseMapper.updateById(add); + } /** * 保存公司合同关联表 @@ -323,6 +369,6 @@ public class PsCompanyInfoServiceImpl implements IPsCompanyInfoService { public void terminationService(Long serviceCompanyId) { //发起审批 ApproverService service = container.getService(ApproverTypeEnum.STOPACCOUNT.getCode()); - service.apply(serviceCompanyId + "", "",null, null); + service.apply(serviceCompanyId + "", "",null, "1"); } } 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 1db9ed3..97b6679 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 @@ -543,7 +543,9 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService { if (infoVo.getPayMoney().compareTo(BigDecimal.ZERO) == 0){ info.setIsCancel(CommonStatusEnum.SUCCESS.getCode()); }else{ - if(StringUtils.isBlank(desc)){throw new ServiceException("请填写作废原因");} + if(StringUtils.isBlank(desc)){ + throw new ServiceException("请填写作废原因"); + } //有收款:点击【作废】填写【作废原因】后发起【作废】审批 ApproverService service = container.getService(ApproverTypeEnum.CANCELLA.getCode()); service.apply(contractCode,contractCode,desc, null); @@ -713,7 +715,7 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService { * @param businessType 服务类别 * @param businessProject 服务项目 */ - public void freeWork(String serviceCompanyId,String businessType,String businessProject) { + public void freeWork(String serviceCompanyId, String businessType,String businessProject) { //发起审批 ApproverService service = container.getService(ApproverTypeEnum.FREE.getCode()); service.apply(serviceCompanyId, "",null, businessType+"@@"+businessProject); @@ -913,28 +915,15 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService { fillMoney(vos); - List businessIds = new ArrayList<>(); + List contractCodes = new ArrayList<>(); for (PsContractInfoVo vo : vos) { - //电子签章审批 - if(StringUtils.equals(CommonStatusEnum.FAIL.getCode(), vo.getSignStatus())){ -// signFail.add(vo.getContractCode()); - businessIds.add(vo.getContractCode()); - } - //回传合同审批 - if(StringUtils.equals(CommonStatusEnum.FAIL.getCode(), vo.getRollBackStatus())){ - businessIds.add(vo.getContractCode()); - } - //合同作废审批 - if(StringUtils.equals(CommonStatusEnum.FAIL.getCode(), vo.getIsCancel())){ - businessIds.add(vo.getContractCode()); - } + contractCodes.add(vo.getContractCode()); } - Map lastFailMap = approverRecordService.getLastFail(businessIds - , List.of(ApproverTypeEnum.SIGN.getCode(), ApproverTypeEnum.ROLBACK.getCode(), ApproverTypeEnum.CANCELLA.getCode())); + Map> lastFailMap = approverRecordService.getLastRecord(contractCodes + , List.of(ApproverTypeEnum.SIGN.getCode(), ApproverTypeEnum.ROLBACK.getCode() + , ApproverTypeEnum.UPDATE.getCode(), ApproverTypeEnum.RETURN.getCode(), ApproverTypeEnum.PAY.getCode())); for (PsContractInfoVo vo : vos) { - vo.setSignFailDesc(lastFailMap.get(vo.getContractCode() + "_" + ApproverTypeEnum.SIGN.getCode())); - vo.setRollBackFailDesc(lastFailMap.get(vo.getContractCode() + "_" + ApproverTypeEnum.ROLBACK.getCode())); - vo.setContractStatusDesc(lastFailMap.get(vo.getContractCode() + "_" + ApproverTypeEnum.CANCELLA.getCode())); + vo.setLastApprover(lastFailMap.get(vo.getContractCode())); } //装填服务公司信息 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 cd3d393..9a8f991 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 @@ -5,8 +5,10 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 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.PsApproverRecord; import com.pusong.business.domain.PsContractInfo; import com.pusong.business.domain.PsTaskAppoint; +import com.pusong.business.domain.PsTaskMain; import com.pusong.business.domain.bo.AppointBo; import com.pusong.business.domain.bo.MediaCompanySaveBo; import com.pusong.business.domain.bo.PsTaskMediaBo; @@ -15,13 +17,17 @@ import com.pusong.business.domain.vo.*; import com.pusong.business.enums.ApproverTypeEnum; import com.pusong.business.enums.ContractStatusEnum; import com.pusong.business.enums.TaskStatusEnum; -import com.pusong.business.enums.TaskStatusEnum.*; +import com.pusong.business.enums.TaskStatusEnum.AppointStatusEnum; import com.pusong.business.enums.TaskTypeEnum; +import com.pusong.business.mapper.PsApproverRecordMapper; import com.pusong.business.mapper.PsContractInfoMapper; import com.pusong.business.mapper.PsTaskAppointMapper; -import com.pusong.business.service.*; +import com.pusong.business.mapper.PsTaskMainMapper; +import com.pusong.business.service.IPsApproverRecordService; +import com.pusong.business.service.IPsCompanyInfoService; +import com.pusong.business.service.IPsTaskMediaService; +import com.pusong.business.service.IPsTaskService; import com.pusong.business.service.approver.ApproverContainer; -import com.pusong.business.service.approver.ApproverService; import com.pusong.common.core.exception.ServiceException; import com.pusong.common.core.utils.DateUtils; import com.pusong.common.core.utils.StringUtils; @@ -35,9 +41,8 @@ import lombok.RequiredArgsConstructor; import org.apache.ibatis.executor.BatchResult; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import com.pusong.business.domain.PsTaskMain; -import com.pusong.business.mapper.PsTaskMainMapper; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; @@ -66,6 +71,8 @@ public class PsTaskServiceImpl implements IPsTaskService { @Resource private PsContractInfoMapper contractInfoMapper; private final IPsApproverRecordService approverRecordService; + @Autowired + private PsApproverRecordMapper recordMapper; /** * 新增主任务 * @@ -344,9 +351,9 @@ public class PsTaskServiceImpl implements IPsTaskService { baseMapper.updateById(update); contractInfoMapper.update(Wrappers.lambdaUpdate().set(PsContractInfo::getContractStatus, ContractStatusEnum.EXECUTION.getCode()) .eq(PsContractInfo::getContractCode,mainTask.getContractCode()).eq(PsContractInfo::getDelFlag,0)); - } + List insertList = new ArrayList<>(); for (Long userId : bo.getUserIds()) { PsTaskAppoint psTaskAppoint = new PsTaskAppoint(); psTaskAppoint.setAppointStatus(AppointStatusEnum.ING.getCode()); @@ -355,8 +362,9 @@ public class PsTaskServiceImpl implements IPsTaskService { psTaskAppoint.setTaskId(mainTask.getId()); psTaskAppoint.setExecutor(userId); psTaskAppoint.setTaskContentDesc(bo.getTaskContentDesc()); - appointMapper.insert(psTaskAppoint); + insertList.add(psTaskAppoint); } + appointMapper.insert(insertList); } /** @@ -428,13 +436,46 @@ public class PsTaskServiceImpl implements IPsTaskService { * @param id 任务委派表id * @param executorId 任务新的执行者id */ - public void taskReset(Long id,Long executorId){ - PsTaskAppoint appoint = appointMapper.selectById(id); - if(!AppointStatusEnum.canReset(appoint.getAppointStatus())){ - throw new ServiceException("操作失败,子任务状态无法改派"); + public void taskReset(Long id, String[] executorIds){ + QueryWrapper lqw = new QueryWrapper<>(); + lqw.eq("task_id", id); + List appoints = appointMapper.selectList(lqw); + if (appoints.isEmpty()){ + throw new ServiceException("当前未指派任何人, 任务状态无法改派"); } - appoint.setExecutor(executorId); - appointMapper.updateById(appoint); + Set updateExecutorIdSet = new HashSet<>(Set.of(executorIds)); +// Map executorMap = appoints.stream().collect(Collectors.toMap(PsTaskAppoint::getExecutor, a -> a)); + List remove = new ArrayList<>(); + for (PsTaskAppoint existsTaskAppoint : appoints) { + if (!updateExecutorIdSet.contains(existsTaskAppoint.getExecutor().toString())){ + remove.add(existsTaskAppoint.getExecutor()); + }else{ + updateExecutorIdSet.remove(existsTaskAppoint.getExecutor().toString()); + } + } + +// if(!AppointStatusEnum.canReset(appoint.getAppointStatus())){ +// throw new ServiceException("操作失败,子任务状态无法改派"); +// } + + QueryWrapper removeParam = new QueryWrapper<>(); + removeParam.eq("task_id", id); + removeParam.in("executor", remove); + appointMapper.delete(removeParam); + + + List insertList = new ArrayList<>(); + for (String userIdStr : updateExecutorIdSet) { + PsTaskAppoint psTaskAppoint = new PsTaskAppoint(); + psTaskAppoint.setAppointStatus(AppointStatusEnum.ING.getCode()); + psTaskAppoint.setAppointType(appoints.get(0).getAppointType()); + psTaskAppoint.setContractCode(appoints.get(0).getContractCode()); + psTaskAppoint.setTaskId(appoints.get(0).getTaskId()); + psTaskAppoint.setExecutor(Long.valueOf(userIdStr)); + psTaskAppoint.setTaskContentDesc(appoints.get(0).getTaskContentDesc()); + insertList.add(psTaskAppoint); + } + appointMapper.insert(insertList); } /** * 免费工单任务作废 @@ -442,16 +483,32 @@ public class PsTaskServiceImpl implements IPsTaskService { * @param desc 作废原因 */ public void cancel(Long id, String desc){ +// PsTaskMain info = baseMapper.selectById(id); +// if(!StringUtils.equals(TaskTypeEnum.FREE.getCode(),info.getTaskType())){ +// throw new ServiceException("只有免费工单的任务可以作废"); +// } +// //发起审批 +// ApproverService service = approverContainer.getService(ApproverTypeEnum.TASKCANCE.getCode()); +// service.apply(id+"", info.getContractCode(),desc, info.getTaskStatus()); +// //修改状态为审批中 +// info.setTaskStatus(TaskStatusEnum.CANCELAPPO.getCode()); +// baseMapper.updateById(info); + //主任务作废 PsTaskMain info = baseMapper.selectById(id); - if(!StringUtils.equals(TaskTypeEnum.FREE.getCode(),info.getTaskType())){ - throw new ServiceException("只有免费工单的任务可以作废"); - } - //发起审批 - ApproverService service = approverContainer.getService(ApproverTypeEnum.TASKCANCE.getCode()); - service.apply(id+"", info.getContractCode(),desc, info.getTaskStatus()); - //修改状态为审批中 - info.setTaskStatus(TaskStatusEnum.CANCELAPPO.getCode()); + info.setTaskStatus(TaskStatusEnum.CANCEL.getCode()); + info.setComment(desc); baseMapper.updateById(info); + List list = appointMapper.selectList(Wrappers.lambdaQuery().eq(PsTaskAppoint::getTaskId, info.getId())); + + //子任务作废 + appointMapper.update(Wrappers.lambdaUpdate() + .set(PsTaskAppoint::getAppointStatus, TaskStatusEnum.AppointStatusEnum.CANCEL.getCode()) + .eq(PsTaskAppoint::getTaskId, info.getId())); + if(CollectionUtils.isNotEmpty(list)){ + List ids = list.stream().map(PsTaskAppoint::getId).map(Object::toString).toList(); + recordMapper.update(Wrappers.lambdaUpdate().set(PsApproverRecord::getDelFlag, "2").in(PsApproverRecord::getBusinessId, ids)); + } + } private QueryWrapper buildQueryWrapper(PsTaskQueryBo bo) { @@ -471,6 +528,7 @@ public class PsTaskServiceImpl implements IPsTaskService { lqw.eq(bo.getId() != null,"main.id",bo.getId()); + lqw.in(bo.getExtendList() != null,"main.extend", bo.getExtendList()); lqw.like(StringUtils.isNotBlank(bo.getContractCode()), "main.contract_code", bo.getContractCode()); lqw.like(StringUtils.isNotBlank(bo.getCompanyName()), "com.company_name", bo.getCompanyName());//公司名称 @@ -633,4 +691,30 @@ public class PsTaskServiceImpl implements IPsTaskService { // } // return baseMapper.deleteBatchIds(ids) > 0; // } + + + public Page freeWork(Long companyId){ + QueryWrapper lqw = Wrappers.query() + .eq("app.del_flag","0") + .eq("app.business_id", String.valueOf(companyId)) + .orderByAsc("app.approver_status") + .orderByDesc("app.apply_date"); + PageQuery pageQuery = new PageQuery(); + pageQuery.setPageSize(100); + Page res = recordMapper.selectPageFreeApproverList(pageQuery.build(), lqw); + List approverIds = res.getRecords().stream().map(PsApproverRecordVo::idStr).toList(); + + + PsTaskQueryBo psTaskQueryBo = new PsTaskQueryBo(); + psTaskQueryBo.setExtendList(approverIds); + + pageQuery.setPageSize(approverIds.size()); + TableDataInfo psTaskMainVoTableDataInfo = queryPageList(psTaskQueryBo, pageQuery); + Map approverIdMap = psTaskMainVoTableDataInfo.getRows().stream().collect(Collectors.toMap(PsTaskMainVo::getExtend, a -> a)); + + for (PsApproverRecordVo record : res.getRecords()) { + record.setPsTaskMainVo(approverIdMap.get(record.idStr())); + } + return res; + } } 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 39cec5c..a80927e 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 @@ -94,14 +94,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ${ew.getCustomSqlSegment} diff --git a/pusong-modules/pusong-business/src/main/resources/mapper/business/PsCompanyInfoMapper.xml b/pusong-modules/pusong-business/src/main/resources/mapper/business/PsCompanyInfoMapper.xml index d57f347..4814283 100644 --- a/pusong-modules/pusong-business/src/main/resources/mapper/business/PsCompanyInfoMapper.xml +++ b/pusong-modules/pusong-business/src/main/resources/mapper/business/PsCompanyInfoMapper.xml @@ -12,6 +12,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + + + @@ -23,6 +29,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -64,6 +71,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + +