diff --git a/doc/report.ftl b/doc/report.ftl index 1fa52b5..6225958 100644 --- a/doc/report.ftl +++ b/doc/report.ftl @@ -268,7 +268,7 @@

乙方名称(签章): ${main.name?if_exists}

乙方纳税人识别号: ${main.customer_num?if_exists}

-

联系人: ${user.nickname?if_exists}

+

联系人: ${user.nickName?if_exists}

联系方式: ${user.phonenumber?if_exists}

签约日期: ${contract.applyDate?string('yyyy年MM月dd日')} <#-- 年 diff --git a/pusong-admin/src/main/java/com/pusong/web/controller/AuthController.java b/pusong-admin/src/main/java/com/pusong/web/controller/AuthController.java index 3569ce4..f02d7a3 100644 --- a/pusong-admin/src/main/java/com/pusong/web/controller/AuthController.java +++ b/pusong-admin/src/main/java/com/pusong/web/controller/AuthController.java @@ -19,7 +19,6 @@ import com.pusong.common.core.domain.R; import com.pusong.common.core.domain.model.LoginBody; import com.pusong.common.core.domain.model.RegisterBody; import com.pusong.common.core.domain.model.SocialLoginBody; -import com.pusong.common.core.utils.*; import com.pusong.common.encrypt.annotation.ApiEncrypt; import com.pusong.common.json.utils.JsonUtils; import com.pusong.common.satoken.utils.LoginHelper; @@ -40,7 +39,6 @@ import com.pusong.web.domain.vo.LoginTenantVo; import com.pusong.web.domain.vo.LoginVo; import com.pusong.web.domain.vo.TenantListVo; import com.pusong.web.service.SysLoginService; -import com.pusong.common.core.utils.*; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -80,7 +78,7 @@ public class AuthController { * @param body 登录信息 * @return 结果 */ - @ApiEncrypt +// @ApiEncrypt @PostMapping("/login") public R login(@RequestBody String body) { LoginBody loginBody = JsonUtils.parseObject(body, LoginBody.class); @@ -100,6 +98,9 @@ public class AuthController { loginService.checkTenant(loginBody.getTenantId()); // 登录 LoginVo loginVo = IAuthStrategy.login(body, client, grantType); + if (loginVo.getOpenid() != null){ + return R.ok(loginVo); + } Long userId = LoginHelper.getUserId(); scheduledExecutorService.schedule(() -> { diff --git a/pusong-admin/src/main/java/com/pusong/web/domain/vo/LoginVo.java b/pusong-admin/src/main/java/com/pusong/web/domain/vo/LoginVo.java index 48348dc..9a0c83c 100644 --- a/pusong-admin/src/main/java/com/pusong/web/domain/vo/LoginVo.java +++ b/pusong-admin/src/main/java/com/pusong/web/domain/vo/LoginVo.java @@ -51,4 +51,9 @@ public class LoginVo { */ private String openid; + /** + * 1时需要后台开通 2需要手机号授权登录,null时登录成功 + */ + private Integer code; + } diff --git a/pusong-admin/src/main/java/com/pusong/web/service/impl/WxAuthStrategy.java b/pusong-admin/src/main/java/com/pusong/web/service/impl/WxAuthStrategy.java index df50132..46a27e0 100644 --- a/pusong-admin/src/main/java/com/pusong/web/service/impl/WxAuthStrategy.java +++ b/pusong-admin/src/main/java/com/pusong/web/service/impl/WxAuthStrategy.java @@ -11,6 +11,7 @@ import com.pusong.common.core.domain.model.LoginUser; import com.pusong.common.core.domain.model.WxLoginBody; import com.pusong.common.core.enums.LoginType; import com.pusong.common.core.enums.UserStatus; +import com.pusong.common.core.exception.ServiceException; import com.pusong.common.core.exception.user.CaptchaExpireException; import com.pusong.common.core.exception.user.UserException; import com.pusong.common.core.utils.MessageUtils; @@ -52,11 +53,17 @@ public class WxAuthStrategy implements IAuthStrategy { WxLoginBody loginBody = JsonUtils.parseObject(body, WxLoginBody.class); ValidatorUtils.validate(loginBody); String tenantId = loginBody.getTenantId(); - String loginCode = loginBody.getLoginCode(); - String phoneCode = loginBody.getPhoneCode(); +// String loginCode = loginBody.getLoginCode(); +// String phoneCode = loginBody.getPhoneCode(); // 通过邮箱查找用户 SysUserVo user = loadUserByWx(tenantId, loginBody); + if (user.getCode() != null){ + LoginVo loginVo = new LoginVo(); + loginVo.setOpenid(user.getOpenid()); + loginVo.setCode(user.getCode()); + return loginVo; + } // loginService.checkLogin(LoginType.EMAIL, tenantId, user.getUserName(), () -> !validateEmailCode(tenantId, email, emailCode)); // 此处可根据登录用户的数据不同 自行创建 loginUser 属性不够用继承扩展就行了 @@ -109,23 +116,30 @@ public class WxAuthStrategy implements IAuthStrategy { SysUserVo user = null; if (phoneNumber == null){ user = userMapper.selectVoOne(new LambdaQueryWrapper() - .eq(phoneNumber == null, SysUser::getOpenid, openid)); - if (user == null){ - return null; - } + .eq(SysUser::getOpenid, openid)); }else{ - + user = userMapper.selectVoOne(new LambdaQueryWrapper() + .eq(SysUser::getPhonenumber, phoneNumber)); + if (user != null){ + SysUser update = new SysUser(); + update.setUserId(user.getUserId()); + update.setOpenid(openid); + userMapper.updateOpenIdById(update); + }else{ + SysUserVo ret = new SysUserVo(); + ret.setCode(1); + return ret; + } } - - user = userMapper.selectVoOne(new LambdaQueryWrapper() - .eq(phoneNumber == null, SysUser::getOpenid, openid) - .eq(phoneNumber != null, SysUser::getPhonenumber, phoneNumber)) - ; if (ObjectUtil.isNull(user)) { - + SysUserVo ret = new SysUserVo(); + ret.setOpenid(openid); + ret.setCode(2); + return ret; } else if (UserStatus.DISABLE.getCode().equals(user.getStatus())) { - + log.info("登录用户:{} 已被停用."); + throw new UserException("user.blocked"); } return user; }); diff --git a/pusong-common/pusong-common-core/src/main/java/com/pusong/common/core/service/OssService.java b/pusong-common/pusong-common-core/src/main/java/com/pusong/common/core/service/OssService.java index bdf7c17..2251679 100644 --- a/pusong-common/pusong-common-core/src/main/java/com/pusong/common/core/service/OssService.java +++ b/pusong-common/pusong-common-core/src/main/java/com/pusong/common/core/service/OssService.java @@ -26,4 +26,6 @@ public interface OssService { * @return 列表 */ List selectByIds(String ossIds); + + OssDTO selectById(Long ossId); } diff --git a/pusong-common/pusong-common-doc/pom.xml b/pusong-common/pusong-common-doc/pom.xml index f820ebb..a755269 100644 --- a/pusong-common/pusong-common-doc/pom.xml +++ b/pusong-common/pusong-common-doc/pom.xml @@ -78,11 +78,11 @@ com.alibaba fastjson - - org.apache.tomcat.embed - tomcat-embed-core - 10.1.24 - + + + + + com.alibaba easyexcel-support diff --git a/pusong-common/pusong-common-doc/src/main/java/com/pusong/common/doc/util/PdfItext.java b/pusong-common/pusong-common-doc/src/main/java/com/pusong/common/doc/util/PdfItext.java index 40bb0c5..fc4c984 100644 --- a/pusong-common/pusong-common-doc/src/main/java/com/pusong/common/doc/util/PdfItext.java +++ b/pusong-common/pusong-common-doc/src/main/java/com/pusong/common/doc/util/PdfItext.java @@ -4,7 +4,6 @@ import com.itextpdf.html2pdf.ConverterProperties; import com.itextpdf.html2pdf.HtmlConverter; import com.itextpdf.html2pdf.resolver.font.DefaultFontProvider; import com.itextpdf.layout.font.FontProvider; -import org.apache.tomcat.util.http.fileupload.IOUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.core.io.ClassPathResource; @@ -19,7 +18,7 @@ import java.io.*; * @Description: */ public class PdfItext { - Logger log = LoggerFactory.getLogger(PdfItext.class); + static final Logger log = LoggerFactory.getLogger(PdfItext.class); /** * @param templatePath 模板全路径 @@ -54,8 +53,6 @@ public class PdfItext { public static void main(String[] args) throws Exception { //模板内容填充参数 Context context = new Context(); -// context.setVariable("name2", "晨曦话java"); -// context.setVariable("name1", "晨曦话三国"); PdfItext.htmlToPdf("C:\\Users\\Administrator\\Desktop\\aa.html", "C:\\Users\\Administrator\\Downloads\\", "temp.pdf", context); } @@ -110,10 +107,12 @@ public class PdfItext { outStream.write(buffer); return file.getAbsolutePath(); } finally { - IOUtils.closeQuietly(inputStream); + if (inputStream != null){ + inputStream.close(); + } } } catch (Exception e) { - System.out.println("FileUtil getFilePath Fail cause by:"+ e); + log.error("FileUtil getFilePath Fail cause by:", e); } return null; } diff --git a/pusong-common/pusong-common-websocket/src/main/java/com/pusong/common/websocket/handler/PlusWebSocketHandler.java b/pusong-common/pusong-common-websocket/src/main/java/com/pusong/common/websocket/handler/PlusWebSocketHandler.java index a5665f9..935a845 100644 --- a/pusong-common/pusong-common-websocket/src/main/java/com/pusong/common/websocket/handler/PlusWebSocketHandler.java +++ b/pusong-common/pusong-common-websocket/src/main/java/com/pusong/common/websocket/handler/PlusWebSocketHandler.java @@ -48,6 +48,7 @@ public class PlusWebSocketHandler extends AbstractWebSocketHandler { // 从WebSocket会话中获取登录用户信息 LoginUser loginUser = (LoginUser) session.getAttributes().get(WebSocketConstants.LOGIN_USER_KEY); + // 创建WebSocket消息DTO对象 WebSocketMessageDto webSocketMessageDto = new WebSocketMessageDto(); webSocketMessageDto.setSessionKeys(List.of(loginUser.getUserId())); diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/HomeController.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/HomeController.java index d022a63..cc10af9 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/HomeController.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/HomeController.java @@ -20,6 +20,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import java.util.Collection; import java.util.Map; import java.util.List; @@ -50,6 +51,14 @@ public class HomeController extends BaseController { return R.ok(homeService.selectMakeAmount(type)); } + /** + * 本月到期续费统计 + */ + @SaCheckPermission("business:salary:list") + @GetMapping("/renewal") + public R renewal(@RequestParam() Integer type) { + return R.ok(homeService.renewal(type)); + } /** * 首页大盘数据:回款情况 * @param type 1本月 2上月 3本季度 4本年 5所有 @@ -61,37 +70,7 @@ public class HomeController extends BaseController { return R.ok(homeService.returnMoney(type)); } - /** - * 首页大盘数据:人员成交数据列表 - * @param type 1本月 2上月 3本季度 4本年 5所有 - * @return - */ - @SaCheckPermission("business:salary:list") - @GetMapping("/getUserContractAmounts") - public R getUserContractAmounts(@RequestParam() Integer type, @RequestParam() Long deptId) { - return R.ok(homeService.getUserContractAmountsByDeptId(type,deptId)); - } - /** - * 首页大盘数据:人员转介绍成交数据列表 - * @param type 1本月 2上月 3本季度 4本年 5所有 - * @return - */ - @SaCheckPermission("business:salary:list") - @GetMapping("/getUserContractSourceAmounts") - public R getUserContractSourceAmounts(@RequestParam() Integer type, @RequestParam() Long deptId){ - return R.ok(homeService.getUserContractSourceAmountsByDeptId(type,deptId)); - } - - /** - * 首页大盘数据:人员成交数据饼图 - * @param type - * @return - */ - @GetMapping("/getUserContractAndPayInfo") - public R getUserContractAndPayInfo(@RequestParam() Integer type){ - return R.ok(homeService.getUserContractAndPayInfo(type)); - } /** * 首页大盘数据:各渠道成交(公司总数居) * @param type 1本月 2上月 3本季度 4本年 5所有 @@ -102,16 +81,57 @@ public class HomeController extends BaseController { public R byChannel(@RequestParam() Integer type) { return R.ok(homeService.byChannel(type,1)); } +// /** +// * 各渠道成交统计 +// */ +// @SaCheckPermission("business:salary:list") +// @GetMapping("/sourceData") +// public R sourceData(@RequestParam() Integer type) { +// return R.ok(homeService.returnMoney(type));? +// } + /** - * 首页大盘数据:销售个人数据 + * 首页大盘数据:人员成交数据饼图、列表 + * @param type + * @return + */ + @GetMapping("/getUserContractAndPayInfo") + public R> getUserContractAndPayInfo(@RequestParam() Integer type){ + return R.ok(homeService.getUserContractAndPayInfo(type)); + } +// /** +// * 首页大盘数据:人员成交数据列表 +// * @param type 1本月 2上月 3本季度 4本年 5所有 +// * @return +// */ +// @SaCheckPermission("business:salary:list") +// @GetMapping("/getUserContractAmounts") +// public R> getUserContractAmounts(@RequestParam() Integer type, @RequestParam() Long deptId) { +// return R.ok(homeService.getUserContractAmountsByDeptId(type,deptId));?//缺少已回款未回款金额 +// } + + /** + * 首页大盘数据:人员转介绍成交数据列表 * @param type 1本月 2上月 3本季度 4本年 5所有 * @return */ @SaCheckPermission("business:salary:list") - @GetMapping("/channelByUser") - public R channelByUser(@RequestParam() Integer type) { - return R.ok(homeService.byChannel(type,2)); + @GetMapping("/getUserContractSourceAmounts") + public R> getUserContractSourceAmounts(@RequestParam() Integer type, @RequestParam() Long deptId){ + return R.ok(homeService.getUserContractSourceAmountsByDeptId(type,deptId));//缺少已回款未回款金额 } + + +// /** +// * 首页大盘数据:销售个人数据 +// * @param type 1本月 2上月 3本季度 4本年 5所有 +// * @return +// */ +// @SaCheckPermission("business:salary:list") +// @GetMapping("/channelByUser") +// public R channelByUser(@RequestParam() Integer type) { +// return R.ok(homeService.byChannel(type,2)); +// } /** * 首页大盘数据:任务完成情况 * @param type 1本月 2上月 3本季度 4本年 5所有 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 d0e78c3..fcc3335 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 @@ -70,7 +70,7 @@ public class PsCompanyInfoController extends BaseController { return psCompanyInfoService.queryServiceCompany(queryBo, pageQuery); } - @SaCheckPermission("business:companyInfo:list") + @SaCheckPermission("business:companyInfo:followUsers") @Log(title = "分盘跟进人员" ) @GetMapping("/followUsers") public R followUsers(PsCompanyFollowBo queryBo) { 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 0dce850..59d7d05 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 @@ -2,16 +2,15 @@ package com.pusong.business.controller; import java.util.List; -import cn.dev33.satoken.annotation.SaIgnore; import com.pusong.business.domain.bo.PsContractInfoQueryBo; import com.pusong.business.domain.bo.PsInvoiceBo; import com.pusong.business.domain.vo.PsContractBusinessVo; -import com.pusong.business.domain.vo.PsSalaryContractVo; import com.pusong.business.domain.vo.ServiceScheduleVo; import com.pusong.business.service.IPsContractBusinessService; -import com.pusong.common.core.validate.QueryGroup; +import com.pusong.common.satoken.utils.LoginHelper; +import com.pusong.common.websocket.dto.WebSocketMessageDto; +import com.pusong.common.websocket.utils.WebSocketUtils; import lombok.RequiredArgsConstructor; -import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.constraints.*; import cn.dev33.satoken.annotation.SaCheckPermission; import org.springframework.web.bind.annotation.*; @@ -24,14 +23,11 @@ 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.PsContractInfoVo; import com.pusong.business.domain.bo.PsContractInfoBo; import com.pusong.business.service.IPsContractInfoService; import com.pusong.common.mybatis.core.page.TableDataInfo; -import javax.management.Query; - /** * 合同基本信息 * @@ -47,7 +43,6 @@ public class PsContractInfoController extends BaseController { private final IPsContractInfoService psContractInfoService; private final IPsContractBusinessService businessService; - /** * 生成合同 */ diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsCustomController.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsCustomController.java index d6607a0..0990045 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsCustomController.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsCustomController.java @@ -1,14 +1,15 @@ package com.pusong.business.controller; import cn.dev33.satoken.annotation.SaCheckPermission; -import com.pusong.business.domain.bo.PsCustomCallbackBo; -import com.pusong.business.domain.bo.PsCustomInfoBo; -import com.pusong.business.domain.bo.PsCustomPriceBo; -import com.pusong.business.domain.bo.PsCustomRecordQueryBo; +import cn.dev33.satoken.annotation.SaIgnore; +import com.pusong.business.domain.PsCustomInfo; +import com.pusong.business.domain.bo.*; import com.pusong.business.domain.vo.PsCustomInfoVo; import com.pusong.business.domain.vo.PsCustomerRecordVo; import com.pusong.business.service.IPsCustomInfoService; import com.pusong.common.core.domain.R; +import com.pusong.common.core.service.DictService; +import com.pusong.common.core.utils.MapstructUtils; import com.pusong.common.core.validate.AddGroup; import com.pusong.common.core.validate.EditGroup; import com.pusong.common.idempotent.annotation.RepeatSubmit; @@ -17,11 +18,15 @@ 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 com.pusong.system.RoleEnum; +import com.pusong.system.domain.bo.SysNoticeBo; +import com.pusong.system.service.ISysNoticeService; import jakarta.validation.constraints.NotNull; import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import java.util.Date; import java.util.List; import java.util.Map; @@ -36,8 +41,9 @@ import java.util.Map; @RestController @RequestMapping("/business/customInfo") public class PsCustomController extends BaseController { - + private final DictService dictService; private final IPsCustomInfoService psCustomInfoService; + private final ISysNoticeService noticeService; /** * 查询登陆人下所有的客户名称和id */ @@ -81,6 +87,35 @@ public class PsCustomController extends BaseController { public R add(@Validated(AddGroup.class) @RequestBody PsCustomInfoBo bo) { return R.ok(psCustomInfoService.insertByBo(bo)); } + /** + * 新增客户基本信息 + */ + @RepeatSubmit() + @PostMapping("/officialWebsiteAdd") + @SaIgnore + public R officialWebsiteAdd(@Validated(AddGroup.class) @RequestBody PsCustomInfoWebBo bo) { + PsCustomInfoBo add = new PsCustomInfoBo(); + add.setType(3); + add.setCustomSource("官网"); + add.setCustomLevel("2"); + add.setCreateTime(new Date()); + add.setCustomMobile(bo.getCustomMobile()); + add.setServiceType(bo.getServiceType()); + add.setTenantId("000000"); + psCustomInfoService.insertByBo(add); + + noticeService.sendNotice(SysNoticeBo.getGonghaiInstance()); + return R.ok(); + } + + @SaIgnore + @Log(title = "getAllServiceType", businessType = BusinessType.INSERT) + @RepeatSubmit() + @GetMapping("/getAllServiceType") + public R> getAllDictByDictType() { + Map allDictByDictType = dictService.getAllDictByDictType("contract_type"); + return R.ok(allDictByDictType); + } /** * 修改客户基本信息 @@ -90,6 +125,7 @@ public class PsCustomController extends BaseController { @RepeatSubmit() @PutMapping() public R edit(@Validated(EditGroup.class) @RequestBody PsCustomInfoBo bo) { + return toAjax(psCustomInfoService.updateByBo(bo)); } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsHomeController.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsHomeController.java index 244572e..41a23b2 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsHomeController.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsHomeController.java @@ -48,4 +48,11 @@ public class PsHomeController extends BaseController { // } + @RepeatSubmit() + @SaCheckPermission("business:statistics") + @GetMapping("/statistics") + public R> statistics() { + return R.ok(); + } + } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsTaskWorkRecordController.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsTaskWorkRecordController.java index 40b4dbc..9d1493b 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsTaskWorkRecordController.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsTaskWorkRecordController.java @@ -3,6 +3,7 @@ package com.pusong.business.controller; import java.util.List; import cn.dev33.satoken.annotation.SaIgnore; +import com.pusong.business.service.IPsTaskService; import lombok.RequiredArgsConstructor; import jakarta.validation.constraints.*; import cn.dev33.satoken.annotation.SaCheckPermission; @@ -66,6 +67,17 @@ public class PsTaskWorkRecordController extends BaseController { public R add(@Validated(AddGroup.class) @RequestBody PsTaskWorkRecordBo bo) { return toAjax(psTaskWorkRecordService.insertByBo(bo)); } + /** + * 外勤任务记录和上传公司资料 + */ + @SaCheckPermission("business:taskWorkRecord:add") + @Log(title = "外勤任务记录和上传公司资料", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping("addRecordAndSaveCompanyInfo") + public R addRecordAndSaveCompanyInfo(@Validated(AddGroup.class) @RequestBody PsTaskWorkRecordBo bo) { + psTaskWorkRecordService.insertAndMedia(bo); + return toAjax(true); + } // /** // * 导出外勤任务记录列表 diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/PsCustomInfo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/PsCustomInfo.java index 3ea9a5b..6db82e6 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/PsCustomInfo.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/PsCustomInfo.java @@ -94,4 +94,9 @@ public class PsCustomInfo extends TenantEntity { */ private Date acceptDate; + /** + * 服务类别 + */ + private String serviceType;; + } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsContractInfoQueryBo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsContractInfoQueryBo.java index 47ae831..4a9c1d8 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsContractInfoQueryBo.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsContractInfoQueryBo.java @@ -43,7 +43,7 @@ public class PsContractInfoQueryBo { private String customName; /** - * 合同id + * 客户id */ private Long customId; /** diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsCustomInfoBo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsCustomInfoBo.java index a796c8c..aafc8ed 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsCustomInfoBo.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsCustomInfoBo.java @@ -124,4 +124,16 @@ public class PsCustomInfoBo { @JsonFormat(pattern = "yyyy-MM-dd HH:mm") private Date createTime; + + /** + * 服务类别 + */ + private String serviceType;; + + private String tenantId; + + /** + * app 搜索时关键字,客户姓名,签约公司名称, 客户手机号后4位 + */ + private String appKeyWord; } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsCustomInfoWebBo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsCustomInfoWebBo.java new file mode 100644 index 0000000..daa239e --- /dev/null +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsCustomInfoWebBo.java @@ -0,0 +1,58 @@ +package com.pusong.business.domain.bo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.pusong.business.domain.PsCustomInfo; +import com.pusong.common.core.validate.AddGroup; +import com.pusong.common.core.validate.EditGroup; +import com.pusong.common.core.validate.QueryGroup; +import io.github.linpeilie.annotations.AutoMapper; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.hibernate.validator.constraints.Length; + +import java.util.Date; +import java.util.List; + +/** + * 客户基本信息业务对象 ps_custom_info + * + * @author Lion Li + * @date 2024-07-25 + */ +@Data +@EqualsAndHashCode +@AutoMapper(target = PsCustomInfo.class) +public class PsCustomInfoWebBo { + /** + * 类型 1客户列表 2黑名单 3公海 + */ + private Integer type; + + /** + * 客户来源 + */ + private String customSource; + + /** + * 客户级别 + */ + private String customLevel; + + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm") + private Date createTime; + + /** + * 服务类别 + */ + private String serviceType;; + /** + * 客户电话客户电话(多个用英文逗号分割) + */ + @NotBlank(message = "客户电话客户电话",groups = { EditGroup.class, AddGroup.class }) + @Length(max = 500) + private String customMobile; + +} 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 f071dfe..2c4791f 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 @@ -117,5 +117,9 @@ public class PsTaskQueryBo { */ private List extendList; + /** + * app 搜索时关键字,客户姓名,签约公司名称, 客户手机号后4位 + */ + private String appKeyWord; } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsTaskWorkRecordBo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsTaskWorkRecordBo.java index 5c50456..5bb2ca2 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsTaskWorkRecordBo.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsTaskWorkRecordBo.java @@ -9,6 +9,8 @@ import lombok.Data; import lombok.EqualsAndHashCode; import jakarta.validation.constraints.*; import java.util.Date; +import java.util.List; + import com.fasterxml.jackson.annotation.JsonFormat; /** @@ -76,4 +78,14 @@ public class PsTaskWorkRecordBo extends BaseEntity { private Date nextDate; + /** + * 资料信息 + */ + private List mediaBoList; + + private Long taskId; + +// private Long customerId; +// +// private Long companyId; } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsContractBusinessDetailVo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsContractBusinessDetailVo.java index 79aaa8b..cc80bb2 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsContractBusinessDetailVo.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsContractBusinessDetailVo.java @@ -72,4 +72,5 @@ public class PsContractBusinessDetailVo implements Serializable { private String extentInfo; + private Long companyId; } 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 3b23e2f..bfa574b 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 @@ -66,7 +66,7 @@ public class PsContractInfoVo implements Serializable { private BigDecimal contractAmount; /** - * 合同状态 + * 合同状态 ContractStatusEnum */ private String contractStatus; diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsCustomInfoVo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsCustomInfoVo.java index 84f9ab9..a2c770d 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsCustomInfoVo.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsCustomInfoVo.java @@ -183,4 +183,9 @@ public class PsCustomInfoVo implements Serializable { * 公司信息DTO */ private List psCompanyInfoVos; + + /** + * 服务类别 + */ + private String serviceType;; } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsTaskMainVo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsTaskMainVo.java index 19e81cc..632b473 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsTaskMainVo.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsTaskMainVo.java @@ -2,6 +2,7 @@ package com.pusong.business.domain.vo; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.fasterxml.jackson.annotation.JsonFormat; +import com.pusong.business.domain.PsContractBusiness; import com.pusong.business.domain.PsTaskMain; import com.pusong.common.translation.annotation.Translation; import com.pusong.common.translation.constant.TransConstant; @@ -167,5 +168,10 @@ public class PsTaskMainVo implements Serializable { * 是否代账 */ private String isProxy; + + /** + * 服务项目 + */ + List psContractBusinesses; } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/home/RenewalInfoVo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/home/RenewalInfoVo.java new file mode 100644 index 0000000..517276d --- /dev/null +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/home/RenewalInfoVo.java @@ -0,0 +1,52 @@ +package com.pusong.business.domain.vo.home; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +@Data +public class RenewalInfoVo { + /** + * 当前时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm") + private Date currentDate = new Date(); + /** + * 统计范围 + */ + private String dateStr; + /** + * 到期合同总数 + */ + private Integer contractNum; + + /** + * 已续费合同总数 + */ + private Integer renewalContractNum; + + /** + * 未续费合同总数 + */ + private Integer unRenewalContractNum; + + /** + * 已续费金额 + */ + private BigDecimal payMoney; + /** + * 当月未续费金额 + */ + private BigDecimal unPayMoney; + + /** + * 已回款金额占比 + */ + private String payMoneyPer; + /** + * 未回款金额占比 + */ + private String unPayMoneyPer; +} diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/home/UserContractAmountVo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/home/UserContractAmountVo.java index a32aec8..37147b2 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/home/UserContractAmountVo.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/home/UserContractAmountVo.java @@ -23,7 +23,7 @@ public class UserContractAmountVo { /** * 转介绍合同数量 */ - private Integer jieShaoContractNum=0; + private Integer jieShaoContractNum = 0; /** * 转介绍合同金额占比 */ @@ -31,27 +31,27 @@ public class UserContractAmountVo { /** * 用户所有合同总金额 */ - private BigDecimal sumAmount=new BigDecimal(0); + private BigDecimal sumAmount = new BigDecimal(0); /** * 托管类型合同总金额 类型号:4 */ - private BigDecimal tuoGuanAmount=new BigDecimal(0); + private BigDecimal tuoGuanAmount = new BigDecimal(0); /** * 续费类型合同总金额 */ - private BigDecimal xuFeiAmount=new BigDecimal(0); + private BigDecimal xuFeiAmount = new BigDecimal(0); /** * 软件定制类型合同总金额 类型号:9 */ - private BigDecimal softwareDevAmount=new BigDecimal(0); + private BigDecimal softwareDevAmount = new BigDecimal(0); /** * 其他类型合同总金额 */ - private BigDecimal otherAmount=new BigDecimal(0); + private BigDecimal otherAmount = new BigDecimal(0); /** * 转介绍的合同金额 */ - private BigDecimal jieShaoAmount=new BigDecimal(0); + private BigDecimal jieShaoAmount = new BigDecimal(0); public void addSumAmount(BigDecimal amount){ sumAmount=sumAmount.add(amount); 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 2881e9d..9dd1542 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 @@ -3,6 +3,7 @@ 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.PsContractBusinessDetailVo; import com.pusong.business.domain.vo.PsContractBusinessVo; import com.pusong.common.mybatis.core.mapper.BaseMapperPlus; import org.apache.ibatis.annotations.Param; @@ -25,4 +26,6 @@ public interface PsContractBusinessMapper extends BaseMapperPlus selectTuoGuanBusinessList(@Param(Constants.WRAPPER) Wrapper queryWrapper); + List selectListByContractCodeAndComanyId(@Param(Constants.WRAPPER) Wrapper queryWrapper); + } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsContractInfoMapper.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsContractInfoMapper.java index f01cc81..72554f3 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsContractInfoMapper.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsContractInfoMapper.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.pusong.business.domain.PsContractInfo; import com.pusong.business.domain.PsCustomInfo; import com.pusong.business.domain.PsSalaryContract; +import com.pusong.business.domain.vo.PsContractBusinessVo; import com.pusong.business.domain.vo.PsContractInfoVo; import com.pusong.business.domain.vo.PsCustomInfoVo; import com.pusong.business.domain.vo.PsSalaryContractVo; @@ -60,4 +61,8 @@ public interface PsContractInfoMapper extends BaseMapperPlus byChannelUser(@Param(Constants.WRAPPER) Wrapper queryWrapper); + + List selectRenewalContract(@Param(Constants.WRAPPER) Wrapper queryWrapper); + + } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/HomeService.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/HomeService.java index d86de51..1458811 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/HomeService.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/HomeService.java @@ -2,6 +2,7 @@ package com.pusong.business.service; import com.pusong.business.domain.vo.home.*; +import java.util.Collection; import java.util.Map; import java.util.List; @@ -14,9 +15,10 @@ public interface HomeService { MakeAmountVo selectMakeAmount(Integer type); ReturnMoneyInfoVo returnMoney(Integer type); - Object getUserContractSourceAmountsByDeptId(Integer type,Long deptId); - List getUserContractAmountsByDeptId(Integer type, Long deptId); - Object getUserContractAndPayInfo(Integer type); + RenewalInfoVo renewal(Integer type); + List getUserContractSourceAmountsByDeptId(Integer type,Long deptId); + List getUserContractAmountsByDeptId(Integer type, Long deptId); + Collection getUserContractAndPayInfo(Integer type); /** * 首页大盘数据:各渠道成交 * @param type 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 a3e2917..c793b89 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 @@ -4,6 +4,7 @@ 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.PsTaskMediaBo; import com.pusong.business.domain.bo.PsTaskQueryBo; import com.pusong.business.domain.vo.PsApproverRecordVo; import com.pusong.business.domain.vo.PsTaskAppointVo; @@ -87,6 +88,8 @@ public interface IPsTaskService { */ void saveInfo(MediaCompanySaveBo save); + void saveMedia(List mediaBoList, Long customerId, Long companyId); + /** * 任务委派 * diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsTaskWorkRecordService.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsTaskWorkRecordService.java index 223ba08..8e57cd3 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsTaskWorkRecordService.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsTaskWorkRecordService.java @@ -38,7 +38,7 @@ public interface IPsTaskWorkRecordService { * @return 是否新增成功 */ Boolean insertByBo(PsTaskWorkRecordBo bo); - + Boolean insertAndMedia(PsTaskWorkRecordBo bo); // /** // * 查询外勤任务记录 // * 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 ba68b3b..0d0a64f 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 @@ -9,6 +9,7 @@ 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.ApproverTypeEnum; import com.pusong.business.enums.PayStatusEnum; @@ -22,6 +23,8 @@ import com.pusong.business.service.IPsContractInfoService; import com.pusong.common.core.utils.DateUtils; import com.pusong.common.core.utils.StringUtils; import com.pusong.common.mybatis.core.page.PageQuery; +import com.pusong.system.domain.bo.SysNoticeBo; +import com.pusong.system.service.ISysNoticeService; import jakarta.annotation.Resource; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -47,6 +50,7 @@ public class FreeApproverServiceImpl extends ApproverAbstractServiceImpl { private final IPsCompanyInfoService companyInfoService; @Resource private PsApproverRecordMapper recordMapper; + private final ISysNoticeService noticeService; /** * 1 审批成功 * @param psApproverRecord 神瀑类 @@ -73,6 +77,9 @@ public class FreeApproverServiceImpl extends ApproverAbstractServiceImpl { // info.setContractCode(vo.getContractCode()); // contractInfoService.updateByCode(info); // } + noticeService.sendNotice(SysNoticeBo.getFreeTaskInstance(psApproverRecord.getCreateBy(), psCompanyInfoVo.getCompanyName())); + noticeService.sendNotice(SysNoticeBo.getFreeTaskToRoleInstance(psCompanyInfoVo.getCompanyName())); + } @@ -82,7 +89,8 @@ public class FreeApproverServiceImpl extends ApproverAbstractServiceImpl { */ @Override public void fail(PsApproverRecord psApproverRecord) { - + PsCompanyInfoVo psCompanyInfoVo = companyInfoService.queryById(Long.valueOf(psApproverRecord.getBusinessId())); +// noticeService.sendNotice(SysNoticeBo.getFreeTaskErrorInstance(psCompanyInfoVo.getCompanyName())); } /** diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/PayContractApproverServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/PayContractApproverServiceImpl.java index fb726f1..da533b7 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/PayContractApproverServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/PayContractApproverServiceImpl.java @@ -11,6 +11,8 @@ import com.pusong.business.service.IPsContractInfoService; import com.pusong.business.service.IPsContractPayService; import com.pusong.business.service.IPsTaskService; import com.pusong.common.core.utils.StringUtils; +import com.pusong.system.domain.bo.SysNoticeBo; +import com.pusong.system.service.ISysNoticeService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -29,6 +31,7 @@ public class PayContractApproverServiceImpl extends ApproverAbstractServiceImpl private final IPsContractInfoService psContractInfoService; private final IPsContractPayService payService; private final IPsTaskService taskMainService; + private final ISysNoticeService noticeService; @Override public String approverType() { return ApproverTypeEnum.PAY.getCode(); @@ -57,10 +60,9 @@ public class PayContractApproverServiceImpl extends ApproverAbstractServiceImpl updateInfo.setContractCode(info.getContractCode()); if("1".equals(info.getIsDue())){ if(StringUtils.equals(ContractStatusEnum.CREATE.getCode(), info.getContractStatus())){ - updateInfo.setContractStatus(ContractStatusEnum.EXECUTION.getCode()); + updateInfo.setContractStatus(ContractStatusEnum.SUCCESS.getCode()); psContractInfoService.updateByCode(updateInfo); } - return;//续费合同不生成任务直接return }else{ if(StringUtils.equals(ContractStatusEnum.CREATE.getCode(), info.getContractStatus())){ updateInfo.setContractStatus(ContractStatusEnum.RETURN.getCode()); @@ -73,7 +75,7 @@ public class PayContractApproverServiceImpl extends ApproverAbstractServiceImpl // log.info("查询回款记录数量{}任务状态{}", list.size(),info.getContractStatus()); List tasks = taskMainService.queryByContractCode(psApproverRecord.getContractCode()); - if(tasks.isEmpty() || tasks.get(0).getId() == null){ + if(!"1".equals(info.getIsDue()) && (tasks.isEmpty() || tasks.get(0).getId() == null)){ log.info("任务未初始化,初始化任务主表"); List psTaskMainList = new ArrayList<>(); for (PsCompanyInfoVo psCompanyInfoVo : info.getPsCompanySerivceVo()) { @@ -89,6 +91,16 @@ public class PayContractApproverServiceImpl extends ApproverAbstractServiceImpl taskMainService.insertBatch(psTaskMainList); } + psContractInfoService.fillMoney(info); + if (ContractStatusEnum.CREATE.getCode().equals(info.getContractStatus())){ + noticeService.sendNotice(SysNoticeBo.getFirstPayInstance(info.getCustomManager(), info.getPsCustomInfoVo().getCustomName())); + }else{ + if (info.getResidualMoney().doubleValue() > 0){ + noticeService.sendNotice(SysNoticeBo.getPayInstance(info.getCustomManager(), info.getPsCustomInfoVo().getCustomName())); + }else{ + noticeService.sendNotice(SysNoticeBo.getLastPayInstance(info.getCustomManager(), info.getPsCustomInfoVo().getCustomName())); + } + } } @Override @@ -98,6 +110,17 @@ public class PayContractApproverServiceImpl extends ApproverAbstractServiceImpl update.setPayStatus(PayStatusEnum.FILE.getCode()); payService.updateById(update); + PsContractInfoVo info = psContractInfoService.queryContractByCode(psApproverRecord.getContractCode()); + if (ContractStatusEnum.CREATE.getCode().equals(info.getContractStatus())){ + noticeService.sendNotice(SysNoticeBo.getFirstPayErrorInstance(info.getCustomManager(), info.getPsCustomInfoVo().getCustomName(), psApproverRecord.getApproverDesc())); + }else{ + if (info.getResidualMoney().doubleValue() > 0){ + noticeService.sendNotice(SysNoticeBo.getPayErrorInstance(info.getCustomManager(), info.getPsCustomInfoVo().getCustomName(), psApproverRecord.getApproverDesc())); + }else{ + noticeService.sendNotice(SysNoticeBo.getLastPayErrorInstance(info.getCustomManager(), info.getPsCustomInfoVo().getCustomName(), psApproverRecord.getApproverDesc())); + } + } + // //如果是修改不做处理 // if(StringUtils.isNotBlank(psApproverRecord.getUpdateData())){ // diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/PublicApproverServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/PublicApproverServiceImpl.java index c559dc6..ba8fd8e 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/PublicApproverServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/PublicApproverServiceImpl.java @@ -24,6 +24,8 @@ import com.pusong.common.core.service.UserService; import com.pusong.common.core.utils.DateUtils; import com.pusong.common.core.utils.StringUtils; import com.pusong.common.mybatis.core.page.PageQuery; +import com.pusong.system.domain.bo.SysNoticeBo; +import com.pusong.system.service.ISysNoticeService; import jakarta.annotation.Resource; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -49,6 +51,7 @@ public class PublicApproverServiceImpl extends ApproverAbstractServiceImpl { @Resource private final PsCompanyInfoMapper companyInfoMapper; private final UserService userService; + private final ISysNoticeService noticeService; /** * 1 审批成功 退款审批成功 * @param psApproverRecord 神瀑类 @@ -60,6 +63,7 @@ public class PublicApproverServiceImpl extends ApproverAbstractServiceImpl { info.setCustomManager(Long.valueOf(psApproverRecord.getUpdateData())); info.setAcceptDate(new Date()); customInfoMapper.updateById(info); + noticeService.sendNotice(SysNoticeBo.getGonghaiShenpiInstance(info.getCustomManager())); } /** @@ -72,6 +76,7 @@ public class PublicApproverServiceImpl extends ApproverAbstractServiceImpl { info.setCustomStatus(CustomerStatusEnum.PUBLIC.getCode()); info.setCustomManager(Long.valueOf(psApproverRecord.getUpdateData())); customInfoMapper.updateById(info); + noticeService.sendNotice(SysNoticeBo.getGonghaiZhipaiErrorInstance(info.getCustomManager(), psApproverRecord.getApproverDesc())); } /** diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/ReturnApproverServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/ReturnApproverServiceImpl.java index bce3d1c..1cf477b 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/ReturnApproverServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/ReturnApproverServiceImpl.java @@ -24,6 +24,8 @@ import com.pusong.business.service.IPsTaskService; import com.pusong.common.core.utils.DateUtils; import com.pusong.common.core.utils.StringUtils; import com.pusong.common.mybatis.core.page.PageQuery; +import com.pusong.system.domain.bo.SysNoticeBo; +import com.pusong.system.service.ISysNoticeService; import jakarta.annotation.Resource; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -51,6 +53,9 @@ public class ReturnApproverServiceImpl extends ApproverAbstractServiceImpl { @Resource private IPsCompanyInfoService companyInfoService; + private final ISysNoticeService noticeService; + private final IPsContractInfoService contractInfoService; + /** * 1 审批成功 退款审批成功 * @param psApproverRecord 神瀑类 @@ -60,6 +65,10 @@ public class ReturnApproverServiceImpl extends ApproverAbstractServiceImpl { PsContractPay info = baseMapper.selectById(psApproverRecord.getBusinessId()); info.setPayStatus(PayStatusEnum.PAYING.getCode()); baseMapper.updateById(info); + + PsContractInfoVo src = contractInfoService.queryContractByCode(psApproverRecord.getContractCode()); + noticeService.sendNotice(SysNoticeBo.getReturningPayToCaowuInstance(src.getPsCustomInfoVo().getCustomName())); + noticeService.sendNotice(SysNoticeBo.getReturnPayInstance(psApproverRecord.getCreateBy(), src.getPsCustomInfoVo().getCustomName())); } /** @@ -71,6 +80,9 @@ public class ReturnApproverServiceImpl extends ApproverAbstractServiceImpl { PsContractPay info = baseMapper.selectById(psApproverRecord.getBusinessId()); info.setPayStatus(PayStatusEnum.FILE.getCode()); baseMapper.updateById(info); + + PsContractInfoVo src = contractInfoService.queryContractByCode(psApproverRecord.getContractCode()); + noticeService.sendNotice(SysNoticeBo.getReturnPayErrorInstance(psApproverRecord.getCreateBy(), src.getPsCustomInfoVo().getCustomName(), psApproverRecord.getApproverDesc())); } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/RolbackApproverServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/RolbackApproverServiceImpl.java index 8a1dfc3..39edf13 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/RolbackApproverServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/RolbackApproverServiceImpl.java @@ -11,6 +11,8 @@ import com.pusong.business.enums.ApproverTypeEnum; import com.pusong.business.enums.CommonStatusEnum; import com.pusong.business.service.IPsContractBusinessService; import com.pusong.business.service.IPsContractInfoService; +import com.pusong.system.domain.bo.SysNoticeBo; +import com.pusong.system.service.ISysNoticeService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; @@ -32,7 +34,7 @@ public class RolbackApproverServiceImpl extends ApproverAbstractServiceImpl { } private final IPsContractBusinessService businessService; private final IPsContractInfoService contractInfoService; - + private final ISysNoticeService noticeService; /** * 1 审批成功修改回传状态,并把回传的合同ossid放入合同表 * @param psApproverRecord 神瀑类 @@ -45,6 +47,10 @@ public class RolbackApproverServiceImpl extends ApproverAbstractServiceImpl { psContractInfo.setRollBackStatus(CommonStatusEnum.SUCCESS.getCode()); psContractInfo.setRollBackPdf(Long.valueOf(psApproverRecord.getUpdateData())); contractInfoService.updateByCode(psContractInfo); + + PsContractInfoVo src = contractInfoService.queryContractByCode(psApproverRecord.getContractCode()); + noticeService.sendNotice(SysNoticeBo.getPdfRolbackInstance(src.getCustomManager(), src.getPsCustomInfoVo().getCustomName())); + } @Override @@ -53,5 +59,8 @@ public class RolbackApproverServiceImpl extends ApproverAbstractServiceImpl { info.setContractCode(psApproverRecord.getContractCode()); info.setRollBackStatus(CommonStatusEnum.FAIL.getCode()); contractInfoService.updateByCode(info); + + PsContractInfoVo src = contractInfoService.queryContractByCode(psApproverRecord.getContractCode()); + noticeService.sendNotice(SysNoticeBo.getPdfRolbackErrorInstance(src.getCustomManager(), src.getPsCustomInfoVo().getCustomName(), psApproverRecord.getApproverDesc())); } } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/SignApproverServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/SignApproverServiceImpl.java index 8ee6ae9..99e2a70 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/SignApproverServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/SignApproverServiceImpl.java @@ -13,6 +13,8 @@ import com.pusong.business.enums.ApproverTypeEnum; import com.pusong.business.enums.CommonStatusEnum; import com.pusong.business.service.IPsContractBusinessService; import com.pusong.business.service.IPsContractInfoService; +import com.pusong.system.domain.bo.SysNoticeBo; +import com.pusong.system.service.ISysNoticeService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; @@ -33,9 +35,9 @@ public class SignApproverServiceImpl extends ApproverAbstractServiceImpl { return ApproverTypeEnum.SIGN.getCode(); } private final IPsContractBusinessService businessService; + private final ISysNoticeService noticeService; private final IPsContractInfoService contractInfoService; - /** * 1 审批成功生成签章合同 修改签章状态 * @param psApproverRecord 神瀑类 @@ -95,6 +97,8 @@ public class SignApproverServiceImpl extends ApproverAbstractServiceImpl { contractInfoService.updateByCode(info); //生成合同 contractInfoService.makePdf(info, bo,true); + + noticeService.sendNotice(SysNoticeBo.getSignInstance(psApproverRecord.getCreateBy(), vo.getPsCustomInfoVo().getCustomName())); } //修改签章状态 @@ -104,6 +108,8 @@ public class SignApproverServiceImpl extends ApproverAbstractServiceImpl { info.setContractCode(psApproverRecord.getContractCode()); info.setSignStatus(CommonStatusEnum.FAIL.getCode()); contractInfoService.updateByCode(info); + PsContractInfoVo src = contractInfoService.queryContractByCode(psApproverRecord.getContractCode()); + noticeService.sendNotice(SysNoticeBo.getSignErrorInstance(psApproverRecord.getCreateBy(), src.getPsCustomInfoVo().getCustomName(), psApproverRecord.getApproverDesc())); } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/UpdateContractApproverServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/UpdateContractApproverServiceImpl.java index 66a0c65..76a3f64 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/UpdateContractApproverServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/UpdateContractApproverServiceImpl.java @@ -14,6 +14,8 @@ import com.pusong.business.service.IPsContractBusinessService; import com.pusong.business.service.IPsContractInfoService; import com.pusong.business.service.IPsTaskService; import com.pusong.common.core.utils.StringUtils; +import com.pusong.system.domain.bo.SysNoticeBo; +import com.pusong.system.service.ISysNoticeService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -35,7 +37,7 @@ public class UpdateContractApproverServiceImpl extends ApproverAbstractServiceIm private final PsTaskMainMapper taskMainMapper; private final PsTaskAppointMapper appointMapper; private final IPsCompanyInfoService companyInfoService; - + private final ISysNoticeService noticeService; /** * 1 审批成功 合同状态变为待派单 合同已派单:任务重置 * @@ -55,6 +57,7 @@ public class UpdateContractApproverServiceImpl extends ApproverAbstractServiceIm contractInfoService.update(src, bo); + noticeService.sendNotice(SysNoticeBo.getUpdateContractInstance(src.getCustomManager(), psApproverRecord.getApproverDesc())); //3.修改后操作 // afterUpdateOperate(bo, src); @@ -107,5 +110,8 @@ public class UpdateContractApproverServiceImpl extends ApproverAbstractServiceIm add.setContractCode(psApproverRecord.getContractCode()); add.setContractStatus(bo.getBeforeContractStatus()); contractInfoService.updateByCode(add); + + PsContractInfoVo src = contractInfoService.queryContractByCode(psApproverRecord.getContractCode()); + noticeService.sendNotice(SysNoticeBo.getUpdateContractErrorInstance(src.getCustomManager(), src.getPsCustomInfoVo().getCustomName(), psApproverRecord.getApproverDesc())); } } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/HomeServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/HomeServiceImpl.java index 6353936..c33be30 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/HomeServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/HomeServiceImpl.java @@ -5,19 +5,14 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.pusong.business.domain.PsContractInfo; -import com.pusong.business.domain.PsContractPay; -import com.pusong.business.domain.PsTaskAppoint; -import com.pusong.business.domain.PsTaskMain; +import com.pusong.business.domain.*; +import com.pusong.business.domain.vo.PsContractBusinessVo; import com.pusong.business.domain.vo.home.*; import com.pusong.business.enums.CommonStatusEnum; import com.pusong.business.enums.ContractStatusEnum; import com.pusong.business.enums.PayStatusEnum; import com.pusong.business.enums.TaskStatusEnum; -import com.pusong.business.mapper.PsContractInfoMapper; -import com.pusong.business.mapper.PsContractPayMapper; -import com.pusong.business.mapper.PsTaskAppointMapper; -import com.pusong.business.mapper.PsTaskMainMapper; +import com.pusong.business.mapper.*; import com.pusong.business.service.HomeService; import com.pusong.common.core.constant.CacheNames; import com.pusong.common.core.utils.DateUtils; @@ -51,6 +46,9 @@ public class HomeServiceImpl implements HomeService { private final ISysDictDataService dictDataService; + private final PsContractBusinessMapper psContractBusinessMapper; + + /** * 查询成交总金额 * @param type @@ -211,6 +209,47 @@ public class HomeServiceImpl implements HomeService { return res; } + @Cacheable(cacheNames = CacheNames.HOME_D, key = "#type") + public RenewalInfoVo renewal(Integer type){ + Map mapParam = this.getDate(type); + LocalDate startDate = (LocalDate)mapParam.get("startDate"); + LocalDate endDate = (LocalDate)mapParam.get("endDate"); + String date = (String)mapParam.get("date"); + + QueryWrapper wrapper = new QueryWrapper() + .eq("business_type", "2") + .between("end_date", startDate, endDate) + .groupBy("company_id") + .groupBy("contract_code"); + //到期的合同 + List expireContact = psContractBusinessMapper.selectList(wrapper); + List companyIds = expireContact.stream().map(PsContractBusiness::getCompanyId).toList(); + List contractCodeList = expireContact.stream().map(PsContractBusiness::getContractCode).toList(); + //总到期金额 + BigDecimal sumExpireAmount = expireContact.stream().map(PsContractBusiness::getBusinessAmount).reduce(BigDecimal::add).orElse(BigDecimal.ZERO); + + QueryWrapper contractWrapper = new QueryWrapper() + .between("apply_date", startDate, endDate) + .eq("con.is_due", 1) + .in("cc.company_id", companyIds) + .notIn("cc.contract_code", contractCodeList); + //已续费的合同 + List renewalContact = psContractInfoMapper.selectRenewalContract(contractWrapper); + //总已续费金额 + BigDecimal sumRenewalAmount = renewalContact.stream().map(PsContractBusinessVo::getBusinessAmount).reduce(BigDecimal::add).orElse(BigDecimal.ZERO); + + RenewalInfoVo renewalInfoVo = new RenewalInfoVo(); + renewalInfoVo.setContractNum(expireContact.size()); + renewalInfoVo.setRenewalContractNum(renewalContact.size()); + renewalInfoVo.setUnRenewalContractNum(contractCodeList.size() - renewalContact.size()); + renewalInfoVo.setPayMoney(sumRenewalAmount); + renewalInfoVo.setUnPayMoney(sumExpireAmount.subtract(sumRenewalAmount)); + renewalInfoVo.setDateStr(date); + renewalInfoVo.setPayMoneyPer(renewalInfoVo.getPayMoney().divide(sumExpireAmount, 2, BigDecimal.ROUND_UP).toString()); + renewalInfoVo.setUnPayMoneyPer(renewalInfoVo.getUnPayMoney().divide(sumExpireAmount, 2, BigDecimal.ROUND_UP).toString()); + return renewalInfoVo; + } + private String contractSource="转介绍"; /** * 按人员成交【转介绍】列表,根据部门获取 @@ -218,23 +257,23 @@ public class HomeServiceImpl implements HomeService { * @param deptId * @return */ - public Object getUserContractSourceAmountsByDeptId(Integer type,Long deptId){ + public List getUserContractSourceAmountsByDeptId(Integer type, Long deptId){ Map mapParam = this.getDate(type); LocalDate startDate = (LocalDate)mapParam.get("startDate"); LocalDate endDate = (LocalDate)mapParam.get("endDate"); String date = (String)mapParam.get("date"); - Map queryParam=new HashMap<>(); + Map queryParam = new HashMap<>(); queryParam.put("startDate",startDate); queryParam.put("endDate",endDate); queryParam.put("contractStatus",ContractStatusEnum.INIT.getCode()); queryParam.put("isCancel",CommonStatusEnum.SUCCESS.getCode()); queryParam.put("deptId",deptId); - List list=psContractInfoMapper.getUserContractSourceAmountsByDeptId(queryParam); - Map res=new HashMap<>(); + List list = psContractInfoMapper.getUserContractSourceAmountsByDeptId(queryParam); + Map res = new HashMap<>(); //记录合同编码,防止重复 - Map repeatContractCode=new HashMap<>(); + Map repeatContractCode = new HashMap<>(); for(UserContractAmountInfo obj:list){ UserContractAmountVo vo=res.get(obj.getUserId()); if(vo==null){ @@ -290,28 +329,28 @@ public class HomeServiceImpl implements HomeService { * @param deptId 部门id * @return */ - public List getUserContractAmountsByDeptId(Integer type,Long deptId) { + public List getUserContractAmountsByDeptId(Integer type,Long deptId) { Map mapParam = this.getDate(type); LocalDate startDate = (LocalDate)mapParam.get("startDate"); LocalDate endDate = (LocalDate)mapParam.get("endDate"); String date = (String)mapParam.get("date"); Map queryParam=new HashMap<>(); - queryParam.put("startDate",startDate); - queryParam.put("endDate",endDate); - queryParam.put("contractStatus",ContractStatusEnum.INIT.getCode()); - queryParam.put("isCancel",CommonStatusEnum.SUCCESS.getCode()); - queryParam.put("deptId",deptId); + queryParam.put("startDate", startDate); + queryParam.put("endDate", endDate); + queryParam.put("contractStatus", ContractStatusEnum.INIT.getCode()); + queryParam.put("isCancel", CommonStatusEnum.SUCCESS.getCode()); + queryParam.put("deptId", deptId); //查询各类合同总金额 - List list=psContractInfoMapper.getUserContractTypeAmountsByDeptId(queryParam); - Map res=new HashMap<>(); + List list = psContractInfoMapper.getUserContractTypeAmountsByDeptId(queryParam); + Map res = new HashMap<>(); //记录合同编码,防止重复 - Map repeatContractCode=new HashMap<>(); - for(UserContractAmountInfo obj:list){ - UserContractAmountVo vo=res.get(obj.getUserId()); + Map repeatContractCode = new HashMap<>(); + for(UserContractAmountInfo obj : list){ + UserContractAmountVo vo = res.get(obj.getUserId()); - if(vo==null){ - vo=new UserContractAmountVo(); + if(vo == null){ + vo = new UserContractAmountVo(); vo.setUserId(obj.getUserId()); vo.setNickName(obj.getNickName()); vo.setDateStr(date); @@ -323,15 +362,15 @@ public class HomeServiceImpl implements HomeService { } //托管合同金额累计 - if(obj.getBusinessType()!=null&&obj.getBusinessType().equals("4")){ + if(obj.getBusinessType() != null && obj.getBusinessType().equals("4")){ vo.addTuoGuanAmount(obj.getContractAmount()); } else //软件开发合同金额累计 - if (obj.getBusinessType()!=null&&obj.getBusinessType().equals("9")) { + if (obj.getBusinessType() != null && obj.getBusinessType().equals("9")) { vo.addSoftwareDevAmount(obj.getContractAmount()); } else //其他合同金额累计 - if(obj.getIsDue()==null||obj.getIsDue().equals("0")){ + if(obj.getIsDue() == null || obj.getIsDue().equals("0")){ vo.addOtherAmount(obj.getContractAmount()); } @@ -352,14 +391,14 @@ public class HomeServiceImpl implements HomeService { title.setXuFeiAmount(null); //按总金额降序处理 - List listData=res.values().stream().sorted( + List listData = res.values().stream().sorted( Comparator.comparing(UserContractAmountVo::getSumAmount,Comparator.reverseOrder())).collect(Collectors.toList()); - for (UserContractAmountVo v:listData) { + for (UserContractAmountVo v : listData) { title.addSumAmount(v.getSumAmount()); } //计算金额占比 - for (UserContractAmountVo v:listData) { + for (UserContractAmountVo v : listData) { if(!v.getSumAmount().equals(BigDecimal.ZERO)) { v.setAmountPer(v.getSumAmount().multiply(new BigDecimal("100.0")).divide(title.getSumAmount(), 2, RoundingMode.HALF_UP).toPlainString() + "%"); }else { @@ -367,7 +406,7 @@ public class HomeServiceImpl implements HomeService { } } - listData.add(0,title); + listData.add(0, title); return listData; } @@ -376,7 +415,7 @@ public class HomeServiceImpl implements HomeService { * @param type * @return */ - public Object getUserContractAndPayInfo(Integer type){ + public Collection getUserContractAndPayInfo(Integer type){ Map mapParam = this.getDate(type); LocalDate startDate = (LocalDate)mapParam.get("startDate"); LocalDate endDate = (LocalDate)mapParam.get("endDate"); 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 7e3eefb..5d3b385 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 @@ -110,7 +110,7 @@ public class PsApproverRecordServiceImpl implements IPsApproverRecordService { throw new ServiceException("操作失败:当前阶段总裁不能审批"); } } - + info.setApproverDesc(desc); ApproverService service = container.getService(info.getBusinessType()); if(StringUtils.equals(ApproverStatusEnum.SUCCESS.getCode(),operate)){ info.setApproverStatus(ApproverStatusEnum.SUCCESS.getCode()); @@ -122,7 +122,7 @@ public class PsApproverRecordServiceImpl implements IPsApproverRecordService { throw new ServiceException("操作失败:不支持的操作类型"); } info.setApproverDate(new Date()); - info.setApproverDesc(desc); + baseMapper.updateById(info); } // if(StringUtils.equals(info.getBusinessType(), ApproverTypeEnum.PAY.getCode())|| 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 909b630..3df5323 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 @@ -27,13 +27,18 @@ import com.pusong.common.mybatis.core.page.PageQuery; import com.pusong.common.mybatis.core.page.TableDataInfo; import com.pusong.common.satoken.utils.LoginHelper; import com.pusong.system.domain.SysDictData; +import com.pusong.system.domain.bo.SysNoticeBo; import com.pusong.system.domain.vo.SysOssVo; +import com.pusong.system.domain.vo.SysUserVo; +import com.pusong.system.mapper.SysUserMapper; import com.pusong.system.service.ISysDictDataService; +import com.pusong.system.service.ISysNoticeService; import com.pusong.system.service.ISysOssService; import jakarta.annotation.Resource; import jodd.util.StringUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -69,8 +74,8 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService { private final IPsCustomInfoService customInfoService; @Resource private final ISysOssService ossService; - @Resource - private final IPsContractPayService contractPayService; + @Autowired + private IPsContractPayService contractPayService; @Resource private final ApproverContainer container; @@ -83,6 +88,9 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService { private final PsContractBusinessDetailMapper businessDetailMapper; private final ISysDictDataService dictDataService; private final IPsApproverRecordService approverRecordService; + private final PsCustomInfoMapper customInfoMapper; + private final SysUserMapper sysUserMapper; + private final ISysNoticeService noticeService; public static String getContractCode(){ Random random = new Random(); @@ -156,9 +164,17 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService { PsCustomInfo psCustomInfo = customInfoService.listById(bo.getCustomId()); add.setCustomManager(psCustomInfo.getCustomManager());//所属销售经理id + + if (type == 2){ + psCustomInfo.setCustomLevel("3"); + customInfoMapper.updateById(psCustomInfo); + } }else{ MapstructUtils.convert(bo, add); } + + + if (bo.getFirstPartyType() == PsContractInfoBo.FIRSTPARTYTYPE.COMPANY.getType()) { add.setCompanyId(bo.getCompanyInfoBo().getId());//公司id } @@ -184,6 +200,12 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService { businessService.saveList(list, add.getContractCode()); //7.生成合同 makePdf(add, bo,true); + //生成合同改完重要客户 + if (type == 2){ + PsCustomInfo psCustomInfo = customInfoService.listById(bo.getCustomId()); + psCustomInfo.setCustomLevel("3"); + customInfoMapper.updateById(psCustomInfo); + } return add.getContractCode(); } /** @@ -652,8 +674,9 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService { //生成合同pdf PsCustomInfo customer = customInfoService.listById(add.getCustomId()); Map map = new HashMap<>(); - LoginUser user = LoginHelper.getLoginUser(); - map.put("user", user); +// LoginUser user = LoginHelper.getLoginUser(); + SysUserVo sysUserVo = sysUserMapper.selectVoById(customer.getCustomManager()); + map.put("user", sysUserVo); map.put("contract", add); map.put("business", detailBos); map.put("serviceCompany", bo.getServiceCompanyInfoList()); @@ -737,6 +760,9 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService { psTaskMain.setTaskStatus(TaskStatusEnum.INIT.getCode()); psTaskMain.setExtend(JSONObject.toJSONString(invoiceBo)); taskMainService.insert(psTaskMain); + + noticeService.sendNotice(SysNoticeBo.getFapiaoReqInstance(info.getPsCustomInfoVo().getCustomName())); + } /** * 免费工单 @@ -900,6 +926,7 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService { //删除标志 qw.eq( "info.del_flag", 0);//删除标志 //合同表条件 + qw.eq(bo.getCustomId() != null,"info.custom_id", bo.getCustomId()); qw.ne( "info.contract_status", ContractStatusEnum.INIT.getCode()); qw.eq( StringUtils.isNotBlank(bo.getContractStatus()),"info.contract_status", bo.getContractStatus()); qw.ne( StringUtils.isNotBlank(bo.getContractStatus()),"info.is_cancel", CommonStatusEnum.SUCCESS.getCode()); diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsContractPayServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsContractPayServiceImpl.java index 337f31c..3df955e 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsContractPayServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsContractPayServiceImpl.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.pusong.business.domain.PsContractPay; import com.pusong.business.domain.bo.PsContractPayBo; +import com.pusong.business.domain.vo.PsContractInfoVo; import com.pusong.business.domain.vo.PsContractPayVo; import com.pusong.business.domain.vo.PsRefundVo; import com.pusong.business.enums.ApproverTypeEnum; @@ -13,6 +14,7 @@ import com.pusong.business.enums.PayBuinessStatusEnum; import com.pusong.business.enums.PayStatusEnum; import com.pusong.business.mapper.PsContractPayMapper; import com.pusong.business.service.IPsApproverRecordService; +import com.pusong.business.service.IPsContractInfoService; import com.pusong.business.service.IPsContractPayService; import com.pusong.business.service.approver.ApproverContainer; import com.pusong.business.service.approver.ApproverService; @@ -21,10 +23,13 @@ import com.pusong.common.core.utils.MapstructUtils; import com.pusong.common.core.utils.StringUtils; import com.pusong.common.mybatis.core.page.PageQuery; import com.pusong.common.mybatis.core.page.TableDataInfo; +import com.pusong.system.domain.bo.SysNoticeBo; import com.pusong.system.domain.vo.SysOssVo; +import com.pusong.system.service.ISysNoticeService; import com.pusong.system.service.ISysOssService; import jakarta.annotation.Resource; import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; @@ -51,6 +56,9 @@ public class PsContractPayServiceImpl implements IPsContractPayService { @Resource private final ApproverContainer container; private final IPsApproverRecordService approverRecordService; +// @Autowired +// private IPsContractInfoService contractInfoService; + private final ISysNoticeService noticeService; /** * 查询合同回款记录列表 * @@ -226,6 +234,10 @@ public class PsContractPayServiceImpl implements IPsContractPayService { info.setPayCertification(StringUtils.join(payCertifications,",")); info.setPayStatus(PayStatusEnum.SUCCESS.getCode()); baseMapper.updateById(info); + +// PsContractInfoVo src = contractInfoService.queryContractByCode(info.getContractCode()); +// noticeService.sendNotice(SysNoticeBo.getReturnPayingInstance(info.getCreateBy(), src.getPsCustomInfoVo().getCustomName())); + return info.getContractCode(); } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsCustomInfoServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsCustomInfoServiceImpl.java index 18ed723..39c407c 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsCustomInfoServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsCustomInfoServiceImpl.java @@ -11,10 +11,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.pusong.business.domain.*; import com.pusong.business.domain.bo.*; import com.pusong.business.domain.vo.*; -import com.pusong.business.enums.ApproverTypeEnum; -import com.pusong.business.enums.CommonStatusEnum; -import com.pusong.business.enums.ContractStatusEnum; -import com.pusong.business.enums.CustomerStatusEnum; +import com.pusong.business.enums.*; import com.pusong.business.mapper.*; import com.pusong.business.service.IPsApproverRecordService; import com.pusong.business.service.IPsCompanyInfoService; @@ -28,6 +25,9 @@ import com.pusong.common.core.utils.StringUtils; import com.pusong.common.mybatis.core.page.PageQuery; import com.pusong.common.mybatis.core.page.TableDataInfo; import com.pusong.common.satoken.utils.LoginHelper; +import com.pusong.system.RoleEnum; +import com.pusong.system.domain.bo.SysNoticeBo; +import com.pusong.system.service.ISysNoticeService; import jakarta.annotation.Resource; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -57,7 +57,7 @@ public class PsCustomInfoServiceImpl implements IPsCustomInfoService { private final ApproverContainer approverContainer; private final IPsApproverRecordService approverRecordService; - + private final ISysNoticeService noticeService; /** * 根据id查询客户 * @return 客户id和姓名 @@ -65,7 +65,6 @@ public class PsCustomInfoServiceImpl implements IPsCustomInfoService { @Override public PsCustomInfo listById(Long id) { return baseMapper.selectById(id); - } /** @@ -230,6 +229,23 @@ public class PsCustomInfoServiceImpl implements IPsCustomInfoService { qw.exists(StringUtils.isNotBlank(bo.getCompanyName()), "select 1 from ps_company_info com where info.id = com.custom_id and company_type = '1' and del_flag = '0' and com.company_name like '%"+bo.getCompanyName()+"%'"); qw.exists(bo.getHaveContract() != null && bo.getHaveContract() == 1,"SELECT 1 FROM ps_contract_info psci WHERE psci.custom_id = info.id and psci.contract_status != '10' and psci.is_cancel != '03'"); qw.notExists(bo.getHaveContract() != null && bo.getHaveContract() == 0,"SELECT 1 FROM ps_contract_info psci WHERE psci.custom_id = info.id and psci.contract_status != '10' and psci.is_cancel != '03'"); + + + //app搜索 + qw.and(StringUtils.isNotBlank(bo.getAppKeyWord()), wrapper -> wrapper + .like("psinfo.custom_name", bo.getAppKeyWord()) + .or() + .likeLeft("info.custom_mobile", bo.getAppKeyWord()) + .or() + .exists("select 1 from ps_company_info com where info.id = com.custom_id and company_type = '1' and del_flag = '0' and com.company_name like '%"+bo.getAppKeyWord()+"%'") + ); + + //关联客户信息表条件 + qw.like(StringUtils.isNotBlank(bo.getCustomIntroducerName()), "psinfo.custom_name", bo.getCustomIntroducerName());//介绍人姓名 + //公司名称 + qw.exists(StringUtils.isNotBlank(bo.getCompanyName()), "select 1 from ps_company_info com where info.id = com.custom_id and company_type = '1' and del_flag = '0' and com.company_name like '%"+bo.getCompanyName()+"%'"); + qw.like(StringUtils.isNotBlank(bo.getCustomMobile()), "info.custom_mobile", bo.getCustomMobile());//客户手机号 + qw.orderByDesc("info.create_time");//创建时间排序 return qw; } @@ -295,7 +311,7 @@ public class PsCustomInfoServiceImpl implements IPsCustomInfoService { // .set("black", update.getBlack()) // .set("black_desc", update.getBlackDesc()) -// .set("color", update.getColor()) + .set("color", update.getColor()) // .set("history_custom_manager", update.getHistoryCustomManager()) // .set("del_flag", delFlag) // .set("accept_date", update.getAcceptDate()) @@ -371,6 +387,8 @@ public class PsCustomInfoServiceImpl implements IPsCustomInfoService { } wq.set(PsCustomInfo::getCustomManager,null); psCustomInfo.setCustomManager(null); + + noticeService.sendNotice(SysNoticeBo.getGonghaiInstance()); break; case 2://拉黑 psCustomInfo.setBlack(CommonStatusEnum.Y.getCode()); @@ -570,6 +588,7 @@ public class PsCustomInfoServiceImpl implements IPsCustomInfoService { psCustomInfo.setCustomManager(userId); psCustomInfo.setAcceptDate(new Date()); baseMapper.updateById(psCustomInfo); + noticeService.sendNotice(SysNoticeBo.getGonghaiZhipaiInstance(customerId)); } } 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 402ac26..7b0af40 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,10 +5,7 @@ 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.*; import com.pusong.business.domain.bo.AppointBo; import com.pusong.business.domain.bo.MediaCompanySaveBo; import com.pusong.business.domain.bo.PsTaskMediaBo; @@ -19,14 +16,8 @@ import com.pusong.business.enums.ContractStatusEnum; 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.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.mapper.*; +import com.pusong.business.service.*; import com.pusong.business.service.approver.ApproverContainer; import com.pusong.common.core.exception.ServiceException; import com.pusong.common.core.utils.DateUtils; @@ -34,7 +25,9 @@ import com.pusong.common.core.utils.StringUtils; import com.pusong.common.mybatis.core.page.PageQuery; import com.pusong.common.mybatis.core.page.TableDataInfo; import com.pusong.common.satoken.utils.LoginHelper; +import com.pusong.system.domain.bo.SysNoticeBo; import com.pusong.system.domain.vo.SysOssVo; +import com.pusong.system.service.ISysNoticeService; import com.pusong.system.service.ISysOssService; import jakarta.annotation.Resource; import lombok.RequiredArgsConstructor; @@ -73,6 +66,11 @@ public class PsTaskServiceImpl implements IPsTaskService { private final IPsApproverRecordService approverRecordService; @Autowired private PsApproverRecordMapper recordMapper; + @Autowired + private PsContractBusinessMapper businessMapper; + private final ISysNoticeService noticeService; +// private final IPsContractInfoService contractInfoService; + /** * 新增主任务 * @@ -120,7 +118,23 @@ public class PsTaskServiceImpl implements IPsTaskService { private void fillInfo(Page page) { String contractCode = null; - List serviceCompanyIdList = new ArrayList<>(); + if (page.getRecords().isEmpty()){ + return; + } + Map> busMap = new HashMap<>(); + List serviceCompanyIdList = page.getRecords().stream().map(PsTaskMainVo::getServiceCompanyId).toList(); + List contractCodeList = page.getRecords().stream().map(PsTaskMainVo::getContractCode).toList(); + + QueryWrapper objectQueryWrapper = new QueryWrapper() + .in("bus.contract_code", contractCodeList) + .in("bus.company_id", serviceCompanyIdList); + List psContractBusinesses = businessMapper.selectListByContractCodeAndComanyId(objectQueryWrapper); + + for (PsContractBusinessDetailVo psContractBusiness : psContractBusinesses) { + List psContractBusinesses1 = busMap.computeIfAbsent(psContractBusiness.getContractCode() + "_" + psContractBusiness.getCompanyId(), a -> new ArrayList<>()); + psContractBusinesses1.add(psContractBusiness); + } + for (PsTaskMainVo vo : page.getRecords()) { if(vo.getStartDate() != null){ vo.setNumOfDat(DateUtils.calWorkDate(vo.getStartDate(),new Date())); @@ -138,6 +152,8 @@ public class PsTaskServiceImpl implements IPsTaskService { if (vo.getTaskType().equals("2")){ vo.setBusinessTypeName(vo.getBusinessType()); } + + vo.setPsContractBusinesses(busMap.get(vo.getContractCode() + "_" + vo.getServiceCompanyId())); } //装填服务公司信息 @@ -170,7 +186,7 @@ public class PsTaskServiceImpl implements IPsTaskService { lqw.eq("appo.appoint_type",bo.getAppointType()); lqw.eq(id != null,"appo.id",id); lqw.eq(StringUtils.isNotBlank(bo.getAppointStatus()),"appo.appoint_status", bo.getAppointStatus()); - log.info(lqw.getCustomSqlSegment()); + Page page = baseMapper.queryChildTaskPageList(pageQuery.build(), lqw); fillInfo(page); @@ -296,11 +312,15 @@ public class PsTaskServiceImpl implements IPsTaskService { if(CollectionUtils.isEmpty(save.getMediaBoList())){ return; } + saveMedia(save.getMediaBoList(), customerId, companyId); + } + + public void saveMedia(List mediaBoList, Long customerId, Long companyId) { //2.1查询原始的合同资料信息 - List mediaList = mediaService.queryMediaList(customerId,companyId); + List mediaList = mediaService.queryMediaList(customerId, companyId); //此次需要保存的资料id(后续删除使用) List ossIdList = new ArrayList<>(); - save.getMediaBoList().forEach(item->{ + mediaBoList.forEach(item->{ item.setCustomId(customerId); item.setCompanyId(companyId); if(StringUtils.isNotBlank(item.getMediaOssId()) && !StringUtils.equals("-1",item.getMediaOssId())){ @@ -308,7 +328,7 @@ public class PsTaskServiceImpl implements IPsTaskService { } }); //2.2保存最新的合同资料信息 - mediaService.saveMediaList(save.getMediaBoList()); + mediaService.saveMediaList(mediaBoList); //把历史的资料id储存到list中 List list = mediaList.stream().filter(item -> StringUtils.isNotBlank(item.getMediaOssId())).map(item -> item.getMediaOssId().split(",")).flatMap(Arrays::stream).collect(Collectors.toList()); //去掉与本次保存重叠的资料,和-1 @@ -318,6 +338,7 @@ public class PsTaskServiceImpl implements IPsTaskService { ossService.deleteWithValidByIds(list.stream().map(Long::parseLong).collect(Collectors.toList()),false); } } + /** * 任务委派 * @@ -389,6 +410,10 @@ public class PsTaskServiceImpl implements IPsTaskService { main.setTaskStatus(TaskStatusEnum.FINISH.getCode()); main.setFinishDate(new Date()); baseMapper.updateById(main); + +// PsContractInfoVo contract = contractInfoService.queryContractByCode(main.getContractCode()); +// noticeService.sendNotice(SysNoticeBo.getTaskFinishInstance(contract.getCustomManager(), contract.getPsCustomInfoVo().getCustomName())); + return main.getContractCode(); } /** @@ -552,6 +577,16 @@ public class PsTaskServiceImpl implements IPsTaskService { //执行者姓名 lqw.exists(StringUtils.isNotBlank(bo.getExecutor()), "select 1 from ps_task_appoint appoint,sys_user su " + "where appoint.appoint_status != '50' and appoint.executor = su.user_id and appoint.task_id = main.id and su.nick_name like '%" + bo.getExecutor() + "%'"); + + //app搜索 + lqw.and(StringUtils.isNotBlank(bo.getAppKeyWord()), wrapper -> wrapper + .like("cus.custom_name", bo.getAppKeyWord()) + .or() + .likeLeft("cus.custom_mobile", bo.getAppKeyWord()) + .or() + .exists("com.company_name", bo.getAppKeyWord()) + ); + lqw.orderByDesc("main.create_time"); return lqw; } @@ -570,6 +605,9 @@ public class PsTaskServiceImpl implements IPsTaskService { info.setInvoice(vo.getOssId()+""); info.setTaskStatus(TaskStatusEnum.FINISH.getCode()); baseMapper.updateById(info); + +// PsContractInfoVo contract = contractInfoService.queryContractByCode(info.getContractCode()); +// noticeService.sendNotice(SysNoticeBo.getFapiaoInstance(contract.getCustomManager(), contract.getPsCustomInfoVo().getCustomName())); } /** * 任务暂停 diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsTaskWorkRecordServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsTaskWorkRecordServiceImpl.java index 85ba960..16c3242 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsTaskWorkRecordServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsTaskWorkRecordServiceImpl.java @@ -5,6 +5,7 @@ import com.pusong.business.domain.PsTaskAppoint; import com.pusong.business.domain.PsTaskMain; import com.pusong.business.mapper.PsTaskAppointMapper; import com.pusong.business.mapper.PsTaskMainMapper; +import com.pusong.business.service.IPsTaskService; import com.pusong.common.core.utils.MapstructUtils; import com.pusong.common.core.utils.StringUtils; import com.pusong.common.mybatis.core.page.TableDataInfo; @@ -19,6 +20,7 @@ import com.pusong.business.domain.vo.PsTaskWorkRecordVo; import com.pusong.business.domain.PsTaskWorkRecord; import com.pusong.business.mapper.PsTaskWorkRecordMapper; import com.pusong.business.service.IPsTaskWorkRecordService; +import org.springframework.transaction.annotation.Transactional; import java.util.*; import java.util.function.Function; @@ -37,7 +39,7 @@ public class PsTaskWorkRecordServiceImpl implements IPsTaskWorkRecordService { private final PsTaskWorkRecordMapper baseMapper; private final PsTaskAppointMapper appointMapper; private final PsTaskMainMapper taskMainMapper; - + private final IPsTaskService taskService; /** * 根据任务委派id查询工作进度列表 @@ -88,6 +90,25 @@ public class PsTaskWorkRecordServiceImpl implements IPsTaskWorkRecordService { return flag; } + /** + * 新增外勤任务记录 + * + * @param bo 外勤任务记录 + * @return 是否新增成功 + */ + @Override + @Transactional + public Boolean insertAndMedia(PsTaskWorkRecordBo bo) { + PsTaskMain taskMain = taskMainMapper.selectById(bo.getTaskId()); + if (taskMain == null){ + return false; + } + long customerId = taskMain.getCustomId(); + long companyId = taskMain.getServiceCompanyId(); + taskService.saveMedia(bo.getMediaBoList(), customerId, companyId); + insertByBo(bo); + return true; + } // /** // * 查询外勤任务记录 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 84d040b..dbb2b83 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 @@ -51,4 +51,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" inner join ps_contract_business bus on bus.contract_code = cc.contract_code and bus.company_id = cc.company_id and business_type = '2' where cc.company_id = ${companyId} + + diff --git a/pusong-modules/pusong-business/src/main/resources/mapper/business/PsContractInfoMapper.xml b/pusong-modules/pusong-business/src/main/resources/mapper/business/PsContractInfoMapper.xml index 85dd085..73d9a2f 100644 --- a/pusong-modules/pusong-business/src/main/resources/mapper/business/PsContractInfoMapper.xml +++ b/pusong-modules/pusong-business/src/main/resources/mapper/business/PsContractInfoMapper.xml @@ -221,4 +221,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ${ew.getCustomSqlSegment} + + + diff --git a/pusong-modules/pusong-business/src/main/resources/mapper/business/PsTaskMainMapper.xml b/pusong-modules/pusong-business/src/main/resources/mapper/business/PsTaskMainMapper.xml index 8e3f13e..86b77d7 100644 --- a/pusong-modules/pusong-business/src/main/resources/mapper/business/PsTaskMainMapper.xml +++ b/pusong-modules/pusong-business/src/main/resources/mapper/business/PsTaskMainMapper.xml @@ -135,6 +135,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" left join ps_company_info com on main.service_company_id = com.id left join ps_custom_info cus on main.custom_id = cus.id left join sys_user usr on cus.custom_manager = usr.user_id + -- left join ps_task_appoint appoint on appoint.task_id = main.id and appoint.appoint_status != '50' and appoint.del_flag = '0' ${ew.getCustomSqlSegment} diff --git a/pusong-modules/pusong-system/src/main/java/com/pusong/system/RoleEnum.java b/pusong-modules/pusong-system/src/main/java/com/pusong/system/RoleEnum.java new file mode 100644 index 0000000..571ae66 --- /dev/null +++ b/pusong-modules/pusong-system/src/main/java/com/pusong/system/RoleEnum.java @@ -0,0 +1,28 @@ +package com.pusong.system; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * sys_role表 角色 + */ +@Getter +@AllArgsConstructor +public enum RoleEnum { + + superadmin("superadmin","超级管理员"), + admin("admin","管理员"), + xiaoshou("xiaoshou","销售"), + zxzg("zxzg","执行主管"), + tqzxry("tqzxry","特勤执行人员"), + wqzxry("wqzxry","外勤执行人员"), + nqzxry("nqzxry","内勤执行人员"), + caiwu("caiwu","财务"), + zongcai("zongcai","总裁"), + topmanage("topmanage","总经理") + + + ; + private String code; + private String text; +} diff --git a/pusong-modules/pusong-system/src/main/java/com/pusong/system/controller/system/SysOssController.java b/pusong-modules/pusong-system/src/main/java/com/pusong/system/controller/system/SysOssController.java index 1106454..df497a9 100644 --- a/pusong-modules/pusong-system/src/main/java/com/pusong/system/controller/system/SysOssController.java +++ b/pusong-modules/pusong-system/src/main/java/com/pusong/system/controller/system/SysOssController.java @@ -5,6 +5,8 @@ import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaIgnore; import cn.hutool.core.util.ObjectUtil; import com.pusong.common.core.domain.R; +import com.pusong.common.core.domain.dto.OssDTO; +import com.pusong.common.core.service.OssService; import com.pusong.common.core.validate.QueryGroup; import com.pusong.common.web.core.BaseController; import com.pusong.common.log.annotation.Log; @@ -41,6 +43,9 @@ public class SysOssController extends BaseController { private final ISysOssService ossService; + private final OssService ossService2; + + /** * 查询OSS对象存储列表 */ @@ -95,6 +100,13 @@ public class SysOssController extends BaseController { ossService.download(ossId, response); } + @SaIgnore + @SaCheckPermission("system:oss:download") + @GetMapping("/getOss/{ossId}") + public R getOss(@PathVariable Long ossId, HttpServletResponse response) throws IOException { + return R.ok(ossService2.selectById(ossId)); + } + /** * 删除OSS对象存储 * diff --git a/pusong-modules/pusong-system/src/main/java/com/pusong/system/domain/SysNotice.java b/pusong-modules/pusong-system/src/main/java/com/pusong/system/domain/SysNotice.java index 225283a..6616b27 100644 --- a/pusong-modules/pusong-system/src/main/java/com/pusong/system/domain/SysNotice.java +++ b/pusong-modules/pusong-system/src/main/java/com/pusong/system/domain/SysNotice.java @@ -48,4 +48,21 @@ public class SysNotice extends TenantEntity { */ private String remark; + + /** + * 接收角色 + */ + private String recRole; + + /** + * 接收uid + */ + private Long recUid; + + /** + * 跳转类型 + */ + private int jumpType; + + } diff --git a/pusong-modules/pusong-system/src/main/java/com/pusong/system/domain/bo/SysNoticeBo.java b/pusong-modules/pusong-system/src/main/java/com/pusong/system/domain/bo/SysNoticeBo.java index eae25e6..a6c368c 100644 --- a/pusong-modules/pusong-system/src/main/java/com/pusong/system/domain/bo/SysNoticeBo.java +++ b/pusong-modules/pusong-system/src/main/java/com/pusong/system/domain/bo/SysNoticeBo.java @@ -1,5 +1,6 @@ package com.pusong.system.domain.bo; +import com.pusong.system.RoleEnum; import io.github.linpeilie.annotations.AutoMapper; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.Size; @@ -9,6 +10,8 @@ import com.pusong.common.core.xss.Xss; import com.pusong.common.mybatis.core.domain.BaseEntity; import com.pusong.system.domain.SysNotice; +import javax.management.relation.Role; + /** * 通知公告业务对象 sys_notice * @@ -58,4 +61,290 @@ public class SysNoticeBo extends BaseEntity { */ private String createByName; + /** + * 接收角色 + */ + private String recRole; + + /** + * 接收uid + */ + private Long recUid; + + /** + * 跳转类型 + */ + private int jumpType; + + + public static SysNoticeBo getGonghaiInstance(){ + SysNoticeBo noticeBo = new SysNoticeBo(); + noticeBo.setNoticeType("1"); + noticeBo.setNoticeTitle("通知"); + noticeBo.setStatus("0"); + noticeBo.setNoticeContent("\uD83C\uDF89【公海商机来袭!】\uD83C\uDF89,【公海】有新客户啦!速来认领,抢占先机!"); + noticeBo.setRecRole(RoleEnum.xiaoshou.getCode()); + noticeBo.setJumpType(0); + return noticeBo; + } + + /** + * 公海审批通过 + * @param uid + * @return + */ + public static SysNoticeBo getGonghaiShenpiInstance(long uid){ + SysNoticeBo noticeBo = new SysNoticeBo(); + noticeBo.setNoticeType("1"); + noticeBo.setNoticeTitle("通知"); + noticeBo.setStatus("0"); + noticeBo.setNoticeContent("认领客户【客户姓名】审批通过,客户已就绪,速速联系,把握良机!"); + noticeBo.setRecUid(uid); + noticeBo.setJumpType(0); + return noticeBo; + } + public static SysNoticeBo getGonghaiZhipaiInstance(long uid){ + SysNoticeBo noticeBo = new SysNoticeBo(); + noticeBo.setNoticeType("1"); + noticeBo.setNoticeTitle("通知"); + noticeBo.setStatus("0"); + noticeBo.setNoticeContent("\uD83D\uDCAA客户【客户姓名】已派至名下,把握良机,全力出击,成交在望,动起来!"); + noticeBo.setRecUid(uid); + noticeBo.setJumpType(0); + return noticeBo; + } + public static SysNoticeBo getGonghaiZhipaiErrorInstance(long uid, String desc){ + SysNoticeBo noticeBo = new SysNoticeBo(); + noticeBo.setNoticeType("1"); + noticeBo.setNoticeTitle("通知"); + noticeBo.setStatus("0"); + noticeBo.setNoticeContent("认领客户【客户姓名】审批未过,另选良缘,销售英雄,再攀高峰!拒绝原因:" + desc); + noticeBo.setRecUid(uid); + noticeBo.setJumpType(0); + return noticeBo; + } + public static SysNoticeBo getFirstPayInstance(long uid, String coustomName){ + SysNoticeBo noticeBo = new SysNoticeBo(); + noticeBo.setNoticeType("1"); + noticeBo.setNoticeTitle("通知"); + noticeBo.setStatus("0"); + noticeBo.setNoticeContent("【"+ coustomName +"】的首笔回款也已成功入账,辛勤耕耘终获硕果,再接再厉,未来更可期!"); + noticeBo.setRecUid(uid); + noticeBo.setJumpType(0); + return noticeBo; + } + public static SysNoticeBo getFirstPayErrorInstance(long uid, String coustomName, String desc){ + SysNoticeBo noticeBo = new SysNoticeBo(); + noticeBo.setNoticeType("1"); + noticeBo.setNoticeTitle("通知"); + noticeBo.setStatus("0"); + noticeBo.setNoticeContent("【"+ coustomName +"】的首笔回款存在问题,请确认相关问题,拒绝原因:" + desc); + noticeBo.setRecUid(uid); + noticeBo.setJumpType(0); + return noticeBo; + } + public static SysNoticeBo getPayInstance(long uid, String coustomName){ + SysNoticeBo noticeBo = new SysNoticeBo(); + noticeBo.setNoticeType("1"); + noticeBo.setNoticeTitle("通知"); + noticeBo.setStatus("0"); + noticeBo.setNoticeContent("【"+ coustomName +"】的回款也已成功入账,辛勤耕耘终获硕果,再接再厉,未来更可期!"); + noticeBo.setRecUid(uid); + noticeBo.setJumpType(0); + return noticeBo; + } + public static SysNoticeBo getPayErrorInstance(long uid, String coustomName, String desc){ + SysNoticeBo noticeBo = new SysNoticeBo(); + noticeBo.setNoticeType("1"); + noticeBo.setNoticeTitle("通知"); + noticeBo.setStatus("0"); + noticeBo.setNoticeContent("【"+ coustomName +"】的回款存在问题,请确认相关问题,拒绝原因:" + desc); + noticeBo.setRecUid(uid); + noticeBo.setJumpType(0); + return noticeBo; + } + public static SysNoticeBo getLastPayInstance(long uid, String coustomName){ + SysNoticeBo noticeBo = new SysNoticeBo(); + noticeBo.setNoticeType("1"); + noticeBo.setNoticeTitle("通知"); + noticeBo.setStatus("0"); + noticeBo.setNoticeContent("【"+ coustomName +"】的最后一笔回款已成功入账,佳绩在握!再接再厉,共创辉煌!"); + noticeBo.setRecUid(uid); + noticeBo.setJumpType(0); + return noticeBo; + } + public static SysNoticeBo getLastPayErrorInstance(long uid, String coustomName, String desc){ + SysNoticeBo noticeBo = new SysNoticeBo(); + noticeBo.setNoticeType("1"); + noticeBo.setNoticeTitle("通知"); + noticeBo.setStatus("0"); + noticeBo.setNoticeContent("【"+ coustomName +"】的最后一笔回款存在问题,请确认相关信息,拒绝原因:" + desc); + noticeBo.setRecUid(uid); + noticeBo.setJumpType(0); + return noticeBo; + } + public static SysNoticeBo getUpdateContractInstance(long uid, String coustomName){ + SysNoticeBo noticeBo = new SysNoticeBo(); + noticeBo.setNoticeType("1"); + noticeBo.setNoticeTitle("通知"); + noticeBo.setStatus("0"); + noticeBo.setNoticeContent("修改【"+ coustomName +"】的合同审批通过,请告知客户并确认回传合同。"); + noticeBo.setRecUid(uid); + noticeBo.setJumpType(0); + return noticeBo; + } + public static SysNoticeBo getUpdateContractErrorInstance(long uid, String coustomName, String desc){ + SysNoticeBo noticeBo = new SysNoticeBo(); + noticeBo.setNoticeType("1"); + noticeBo.setNoticeTitle("通知"); + noticeBo.setStatus("0"); + noticeBo.setNoticeContent("修改【"+ coustomName +"】的合同审批被拒绝,请检查并确认问题,拒绝原因:" + desc); + noticeBo.setRecUid(uid); + noticeBo.setJumpType(0); + return noticeBo; + } + public static SysNoticeBo getPdfRolbackInstance(long uid, String coustomName){ + SysNoticeBo noticeBo = new SysNoticeBo(); + noticeBo.setNoticeType("1"); + noticeBo.setNoticeTitle("通知"); + noticeBo.setStatus("0"); + noticeBo.setNoticeContent("回传【"+ coustomName +"】的合同审批通过,佳绩在握!再接再厉,共创辉煌!"); + noticeBo.setRecUid(uid); + noticeBo.setJumpType(0); + return noticeBo; + } + public static SysNoticeBo getPdfRolbackErrorInstance(long uid, String coustomName, String desc){ + SysNoticeBo noticeBo = new SysNoticeBo(); + noticeBo.setNoticeType("1"); + noticeBo.setNoticeTitle("通知"); + noticeBo.setStatus("0"); + noticeBo.setNoticeContent("回传【"+ coustomName +"】的合同审批被拒,请确认相关问题后重新回传,拒绝原因:拒绝原因说明" + desc); + noticeBo.setRecUid(uid); + noticeBo.setJumpType(0); + return noticeBo; + } + public static SysNoticeBo getReturnPayInstance(long uid, String coustomName){ + SysNoticeBo noticeBo = new SysNoticeBo(); + noticeBo.setNoticeType("1"); + noticeBo.setNoticeTitle("通知"); + noticeBo.setStatus("0"); + noticeBo.setNoticeContent("【"+ coustomName +"】的退款申请已审批通过,财务处理退款中,请继续跟进。"); + noticeBo.setRecUid(uid); + noticeBo.setJumpType(0); + return noticeBo; + } + public static SysNoticeBo getReturnPayingInstance(long uid, String coustomName){ + SysNoticeBo noticeBo = new SysNoticeBo(); + noticeBo.setNoticeType("1"); + noticeBo.setNoticeTitle("通知"); + noticeBo.setStatus("0"); + noticeBo.setNoticeContent("【"+ coustomName +"】的退款财务已完成退款,请告知客户确认退款是否到账。"); + noticeBo.setRecUid(uid); + noticeBo.setJumpType(0); + return noticeBo; + } + public static SysNoticeBo getReturnPayErrorInstance(long uid, String coustomName, String desc){ + SysNoticeBo noticeBo = new SysNoticeBo(); + noticeBo.setNoticeType("1"); + noticeBo.setNoticeTitle("通知"); + noticeBo.setStatus("0"); + noticeBo.setNoticeContent("【"+ coustomName +"】的退款申请被拒绝,请确认相关问题,拒绝原因:" + desc); + noticeBo.setRecUid(uid); + noticeBo.setJumpType(0); + return noticeBo; + } + public static SysNoticeBo getReturningPayToCaowuInstance(String coustomName){ + SysNoticeBo noticeBo = new SysNoticeBo(); + noticeBo.setNoticeType("1"); + noticeBo.setNoticeTitle("通知"); + noticeBo.setStatus("0"); + noticeBo.setNoticeContent("有一笔【"+ coustomName +"】的待处理的退款,请及时处理。"); + noticeBo.setRecRole(RoleEnum.caiwu.getCode()); + noticeBo.setJumpType(0); + return noticeBo; + } + + public static SysNoticeBo getSignInstance(long uid, String coustomName){ + SysNoticeBo noticeBo = new SysNoticeBo(); + noticeBo.setNoticeType("1"); + noticeBo.setNoticeTitle("通知"); + noticeBo.setStatus("0"); + noticeBo.setNoticeContent("【"+ coustomName +"】的申请盖章审批通过,胜利在望,再接再厉!"); + noticeBo.setRecUid(uid); + noticeBo.setJumpType(0); + return noticeBo; + } + public static SysNoticeBo getSignErrorInstance(long uid, String coustomName, String desc){ + SysNoticeBo noticeBo = new SysNoticeBo(); + noticeBo.setNoticeType("1"); + noticeBo.setNoticeTitle("通知"); + noticeBo.setStatus("0"); + noticeBo.setNoticeContent("【"+ coustomName +"】的申请盖章审批被拒,请确认相关问题后重新申请,拒绝原因:" + desc); + noticeBo.setRecUid(uid); + noticeBo.setJumpType(0); + return noticeBo; + } + + public static SysNoticeBo getFapiaoInstance(long uid, String coustomName){ + SysNoticeBo noticeBo = new SysNoticeBo(); + noticeBo.setNoticeType("1"); + noticeBo.setNoticeTitle("通知"); + noticeBo.setStatus("0"); + noticeBo.setNoticeContent("【"+ coustomName +"】的发票已上传,请到合同查看发票。合同圆满收尾,销售精英再创新高,继续加油!"); + noticeBo.setRecUid(uid); + noticeBo.setJumpType(0); + return noticeBo; + } + public static SysNoticeBo getFapiaoReqInstance(String coustomName){ + SysNoticeBo noticeBo = new SysNoticeBo(); + noticeBo.setNoticeType("1"); + noticeBo.setNoticeTitle("通知"); + noticeBo.setStatus("0"); + noticeBo.setNoticeContent("新增【"+ coustomName +"】的开票需求,请及时处理。"); + noticeBo.setRecRole(RoleEnum.caiwu.getCode()); + noticeBo.setJumpType(0); + return noticeBo; + } + + public static SysNoticeBo getTaskFinishInstance(long uid, String coustomName){ + SysNoticeBo noticeBo = new SysNoticeBo(); + noticeBo.setNoticeType("1"); + noticeBo.setNoticeTitle("通知"); + noticeBo.setStatus("0"); + noticeBo.setNoticeContent("【"+ coustomName +"】的合同任务已完成,请确认回款是否全部完成,回传合同是否上传,冲刺收官,共创佳绩!"); + noticeBo.setRecUid(uid); + noticeBo.setJumpType(0); + return noticeBo; + } + public static SysNoticeBo getFreeTaskInstance(long uid, String serviceCompanyName){ + SysNoticeBo noticeBo = new SysNoticeBo(); + noticeBo.setNoticeType("1"); + noticeBo.setNoticeTitle("通知"); + noticeBo.setStatus("0"); + noticeBo.setNoticeContent("【"+ serviceCompanyName +"】的免费工单已审批通过,免费工单任务已生成,请继续跟进。"); + noticeBo.setRecUid(uid); + noticeBo.setJumpType(0); + return noticeBo; + } + public static SysNoticeBo getFreeTaskToRoleInstance(String serviceCompanyName){ + SysNoticeBo noticeBo = new SysNoticeBo(); + noticeBo.setNoticeType("1"); + noticeBo.setNoticeTitle("通知"); + noticeBo.setStatus("0"); + noticeBo.setNoticeContent("【"+ serviceCompanyName +"】的免费工单已审批通过,免费工单任务已生成,请继续跟进。"); + noticeBo.setRecRole(RoleEnum.zxzg.getCode()); + noticeBo.setJumpType(0); + return noticeBo; + } + public static SysNoticeBo getFreeTaskErrorToUidInstance(long uid, String serviceCompanyName, String desc){ + SysNoticeBo noticeBo = new SysNoticeBo(); + noticeBo.setNoticeType("1"); + noticeBo.setNoticeTitle("通知"); + noticeBo.setStatus("0"); + noticeBo.setNoticeContent("【"+ serviceCompanyName +"】的免费工单已拒绝,请确认相关信息,拒绝原因:" + desc); + noticeBo.setRecUid(uid); + noticeBo.setJumpType(0); + return noticeBo; + } + } diff --git a/pusong-modules/pusong-system/src/main/java/com/pusong/system/domain/bo/SysUserBo.java b/pusong-modules/pusong-system/src/main/java/com/pusong/system/domain/bo/SysUserBo.java index b51c7ad..526ef4e 100644 --- a/pusong-modules/pusong-system/src/main/java/com/pusong/system/domain/bo/SysUserBo.java +++ b/pusong-modules/pusong-system/src/main/java/com/pusong/system/domain/bo/SysUserBo.java @@ -107,6 +107,11 @@ public class SysUserBo extends BaseEntity { */ private Long roleId; + /** + * 数据权限 当前角色key + */ + private String roleKey; + /** * 排除不查询的用户(工作流用) */ diff --git a/pusong-modules/pusong-system/src/main/java/com/pusong/system/domain/vo/SysUserVo.java b/pusong-modules/pusong-system/src/main/java/com/pusong/system/domain/vo/SysUserVo.java index 28f5fcf..cdc5fa3 100644 --- a/pusong-modules/pusong-system/src/main/java/com/pusong/system/domain/vo/SysUserVo.java +++ b/pusong-modules/pusong-system/src/main/java/com/pusong/system/domain/vo/SysUserVo.java @@ -139,4 +139,11 @@ public class SysUserVo implements Serializable { */ private Long roleId; + private String openid; + + /** + * 1时需要后台开通 2需要手机号授权登录, + */ + private Integer code; + } diff --git a/pusong-modules/pusong-system/src/main/java/com/pusong/system/mapper/SysUserMapper.java b/pusong-modules/pusong-system/src/main/java/com/pusong/system/mapper/SysUserMapper.java index e1ca4b8..c6e0d69 100644 --- a/pusong-modules/pusong-system/src/main/java/com/pusong/system/mapper/SysUserMapper.java +++ b/pusong-modules/pusong-system/src/main/java/com/pusong/system/mapper/SysUserMapper.java @@ -88,4 +88,5 @@ public interface SysUserMapper extends BaseMapperPlus { }) int updateById(@Param(Constants.ENTITY) SysUser user); + int updateOpenIdById(SysUser user); } diff --git a/pusong-modules/pusong-system/src/main/java/com/pusong/system/service/ISysNoticeService.java b/pusong-modules/pusong-system/src/main/java/com/pusong/system/service/ISysNoticeService.java index c392b87..e4e28ab 100644 --- a/pusong-modules/pusong-system/src/main/java/com/pusong/system/service/ISysNoticeService.java +++ b/pusong-modules/pusong-system/src/main/java/com/pusong/system/service/ISysNoticeService.java @@ -41,6 +41,7 @@ public interface ISysNoticeService { */ int insertNotice(SysNoticeBo bo); + int sendNotice(SysNoticeBo bo); /** * 修改公告 * diff --git a/pusong-modules/pusong-system/src/main/java/com/pusong/system/service/impl/SysNoticeServiceImpl.java b/pusong-modules/pusong-system/src/main/java/com/pusong/system/service/impl/SysNoticeServiceImpl.java index 90bbf85..6788e9f 100644 --- a/pusong-modules/pusong-system/src/main/java/com/pusong/system/service/impl/SysNoticeServiceImpl.java +++ b/pusong-modules/pusong-system/src/main/java/com/pusong/system/service/impl/SysNoticeServiceImpl.java @@ -4,21 +4,30 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.pusong.common.core.domain.R; +import com.pusong.common.core.service.DictService; import com.pusong.common.core.utils.MapstructUtils; import com.pusong.common.core.utils.StringUtils; import com.pusong.common.mybatis.core.page.PageQuery; import com.pusong.common.mybatis.core.page.TableDataInfo; +import com.pusong.common.websocket.dto.WebSocketMessageDto; +import com.pusong.common.websocket.holder.WebSocketSessionHolder; +import com.pusong.common.websocket.utils.WebSocketUtils; import com.pusong.system.domain.SysNotice; import com.pusong.system.domain.SysUser; import com.pusong.system.domain.bo.SysNoticeBo; +import com.pusong.system.domain.bo.SysUserBo; import com.pusong.system.domain.vo.SysNoticeVo; import com.pusong.system.domain.vo.SysUserVo; import com.pusong.system.mapper.SysNoticeMapper; import com.pusong.system.mapper.SysUserMapper; import com.pusong.system.service.ISysNoticeService; +import com.pusong.system.service.ISysUserService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import org.springframework.web.socket.WebSocketSession; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -33,6 +42,8 @@ public class SysNoticeServiceImpl implements ISysNoticeService { private final SysNoticeMapper baseMapper; private final SysUserMapper userMapper; + private final DictService dictService; + private final ISysUserService userService; @Override public TableDataInfo selectPageNoticeList(SysNoticeBo notice, PageQuery pageQuery) { @@ -87,7 +98,50 @@ public class SysNoticeServiceImpl implements ISysNoticeService { SysNotice notice = MapstructUtils.convert(bo, SysNotice.class); return baseMapper.insert(notice); } + @Override + public int sendNotice(SysNoticeBo bo) { + String type = dictService.getDictLabel("sys_notice_type", bo.getNoticeType()); + List insertData = new ArrayList<>(); + List uids = new ArrayList<>(); + if (bo.getRecRole() != null){ + SysUserBo query = new SysUserBo(); + query.setRoleKey(bo.getRecRole()); + PageQuery pageQuery = new PageQuery(); + pageQuery.setPageSize(999); + TableDataInfo sysUserVoTableDataInfo = userService.selectAllocatedList(query, pageQuery); + for (SysUserVo row : sysUserVoTableDataInfo.getRows()) { + uids.add(row.getUserId()); + SysNotice sysNoticeBo = MapstructUtils.convert(bo, SysNotice.class); + sysNoticeBo.setRecUid(row.getUserId()); + insertData.add(sysNoticeBo); + } + }else if (bo.getRecUid() != null){ + uids.add(bo.getRecUid()); + SysNotice sysNoticeBo = MapstructUtils.convert(bo, SysNotice.class); + sysNoticeBo.setRecUid(bo.getRecUid()); + insertData.add(sysNoticeBo); + }else{ + //全员 + SysUserBo user = new SysUserBo(); + PageQuery pageQuery = new PageQuery(); + pageQuery.setPageSize(100000); + TableDataInfo sysUserVoTableDataInfo = userService.selectPageUserList(user, pageQuery); + for (SysUserVo row : sysUserVoTableDataInfo.getRows()) { + uids.add(row.getUserId()); + SysNotice sysNoticeBo = MapstructUtils.convert(bo, SysNotice.class); + sysNoticeBo.setRecUid(row.getUserId()); + insertData.add(sysNoticeBo); + } + } + WebSocketMessageDto webSocketMessage = new WebSocketMessageDto(); + webSocketMessage.setMessage(bo.getNoticeContent()); + webSocketMessage.setSessionKeys(uids); + WebSocketUtils.publishMessage(webSocketMessage); + + baseMapper.insertBatch(insertData); + return 1; + } /** * 修改公告 * diff --git a/pusong-modules/pusong-system/src/main/java/com/pusong/system/service/impl/SysOssServiceImpl.java b/pusong-modules/pusong-system/src/main/java/com/pusong/system/service/impl/SysOssServiceImpl.java index e44522b..f0171db 100644 --- a/pusong-modules/pusong-system/src/main/java/com/pusong/system/service/impl/SysOssServiceImpl.java +++ b/pusong-modules/pusong-system/src/main/java/com/pusong/system/service/impl/SysOssServiceImpl.java @@ -134,6 +134,20 @@ public class SysOssServiceImpl implements ISysOssService, OssService { } return list; } + @Override + public OssDTO selectById(Long ossId) { + SysOssVo vo = SpringUtils.getAopProxy(this).getById(ossId); + if (ObjectUtil.isNotNull(vo)) { + try { + vo.setUrl(this.matchingUrl(vo).getUrl()); + return BeanUtil.toBean(vo, OssDTO.class); + } catch (Exception ignored) { + // 如果oss异常无法连接则将数据直接返回 + return BeanUtil.toBean(vo, OssDTO.class); + } + } + return null; + } private LambdaQueryWrapper buildQueryWrapper(SysOssBo bo) { Map params = bo.getParams(); diff --git a/pusong-modules/pusong-system/src/main/java/com/pusong/system/service/impl/SysUserServiceImpl.java b/pusong-modules/pusong-system/src/main/java/com/pusong/system/service/impl/SysUserServiceImpl.java index 3334af3..fb1587b 100644 --- a/pusong-modules/pusong-system/src/main/java/com/pusong/system/service/impl/SysUserServiceImpl.java +++ b/pusong-modules/pusong-system/src/main/java/com/pusong/system/service/impl/SysUserServiceImpl.java @@ -130,6 +130,7 @@ public class SysUserServiceImpl implements ISysUserService, UserService { QueryWrapper wrapper = Wrappers.query(); wrapper.eq("u.del_flag", UserConstants.USER_NORMAL) .eq(ObjectUtil.isNotNull(user.getRoleId()), "r.role_id", user.getRoleId()) + .eq(ObjectUtil.isNotNull(user.getRoleKey()), "r.role_key", user.getRoleKey().split(",")) .like(StringUtils.isNotBlank(user.getUserName()), "u.user_name", user.getUserName()) .eq(StringUtils.isNotBlank(user.getStatus()), "u.status", user.getStatus()) .like(StringUtils.isNotBlank(user.getPhonenumber()), "u.phonenumber", user.getPhonenumber()) diff --git a/pusong-modules/pusong-system/src/main/resources/mapper/system/SysUserMapper.xml b/pusong-modules/pusong-system/src/main/resources/mapper/system/SysUserMapper.xml index 67bae9b..f4521d8 100644 --- a/pusong-modules/pusong-system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/pusong-modules/pusong-system/src/main/resources/mapper/system/SysUserMapper.xml @@ -69,5 +69,11 @@ select count(*) from sys_user where del_flag = '0' and user_id = #{userId} - + + update sys_user + + openid = #{openid}, + + where user_id = #{userId} + diff --git a/script/sql/after.sql b/script/sql/after.sql index 9395611..55f696f 100644 --- a/script/sql/after.sql +++ b/script/sql/after.sql @@ -4,3 +4,9 @@ alter table ps_company_info add `contact_person_idcard` varchar(20) comment '联 alter table sys_user add `openid` varchar(30) comment '微信openid'; + +alter table ps_custom_info add `service_type` varchar(200) comment '服务类别'; + +alter table sys_notice add `rec_role` bigint(20) comment '接收角色'; +alter table sys_notice add `rec_uid` bigint(20) comment '接收用户'; +alter table sys_notice add `jump_type` int(2) comment '跳转类型';