消息通知
This commit is contained in:
parent
223981e5e4
commit
9272f9a890
@ -268,7 +268,7 @@
|
||||
<div class="sign" >
|
||||
<p class="content">乙方名称(签章): ${main.name?if_exists}</p>
|
||||
<p class="content">乙方纳税人识别号: ${main.customer_num?if_exists}</p>
|
||||
<p class="content">联系人: ${user.nickname?if_exists}</p>
|
||||
<p class="content">联系人: ${user.nickName?if_exists}</p>
|
||||
<p class="content">联系方式: ${user.phonenumber?if_exists}</p>
|
||||
<p class="content">签约日期: ${contract.applyDate?string('yyyy年MM月dd日')}
|
||||
<#--<span style=" text-decoration:underline"> </span> 年
|
||||
|
@ -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<LoginVo> 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(() -> {
|
||||
|
@ -51,4 +51,9 @@ public class LoginVo {
|
||||
*/
|
||||
private String openid;
|
||||
|
||||
/**
|
||||
* 1时需要后台开通 2需要手机号授权登录,null时登录成功
|
||||
*/
|
||||
private Integer code;
|
||||
|
||||
}
|
||||
|
@ -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<SysUser>()
|
||||
.eq(phoneNumber == null, SysUser::getOpenid, openid));
|
||||
if (user == null){
|
||||
return null;
|
||||
}
|
||||
.eq(SysUser::getOpenid, openid));
|
||||
}else{
|
||||
|
||||
user = userMapper.selectVoOne(new LambdaQueryWrapper<SysUser>()
|
||||
.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<SysUser>()
|
||||
.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;
|
||||
});
|
||||
|
@ -26,4 +26,6 @@ public interface OssService {
|
||||
* @return 列表
|
||||
*/
|
||||
List<OssDTO> selectByIds(String ossIds);
|
||||
|
||||
OssDTO selectById(Long ossId);
|
||||
}
|
||||
|
@ -78,11 +78,11 @@
|
||||
<groupId>com.alibaba</groupId>
|
||||
<artifactId>fastjson</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.tomcat.embed</groupId>
|
||||
<artifactId>tomcat-embed-core</artifactId>
|
||||
<version>10.1.24</version>
|
||||
</dependency>
|
||||
<!-- <dependency>-->
|
||||
<!-- <groupId>org.apache.tomcat.embed</groupId>-->
|
||||
<!-- <artifactId>tomcat-embed-core</artifactId>-->
|
||||
<!-- <version>10.1.24</version>-->
|
||||
<!-- </dependency>-->
|
||||
<dependency>
|
||||
<groupId>com.alibaba</groupId>
|
||||
<artifactId>easyexcel-support</artifactId>
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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()));
|
||||
|
@ -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<RenewalInfoVo> 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<List> 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<Object> getUserContractSourceAmounts(@RequestParam() Integer type, @RequestParam() Long deptId){
|
||||
return R.ok(homeService.getUserContractSourceAmountsByDeptId(type,deptId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 首页大盘数据:人员成交数据饼图
|
||||
* @param type
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/getUserContractAndPayInfo")
|
||||
public R<Object> 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<ChannelAmountVo> byChannel(@RequestParam() Integer type) {
|
||||
return R.ok(homeService.byChannel(type,1));
|
||||
}
|
||||
// /**
|
||||
// * 各渠道成交统计
|
||||
// */
|
||||
// @SaCheckPermission("business:salary:list")
|
||||
// @GetMapping("/sourceData")
|
||||
// public R<ReturnMoneyInfoVo> sourceData(@RequestParam() Integer type) {
|
||||
// return R.ok(homeService.returnMoney(type));?
|
||||
// }
|
||||
|
||||
/**
|
||||
* 首页大盘数据:销售个人数据
|
||||
* 首页大盘数据:人员成交数据饼图、列表
|
||||
* @param type
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/getUserContractAndPayInfo")
|
||||
public R<Collection<UserAmountInfoVo>> 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<List<UserContractAmountVo>> 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<ChannelAmountVo> channelByUser(@RequestParam() Integer type) {
|
||||
return R.ok(homeService.byChannel(type,2));
|
||||
@GetMapping("/getUserContractSourceAmounts")
|
||||
public R<List<UserContractAmountVo>> 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<ChannelAmountVo> channelByUser(@RequestParam() Integer type) {
|
||||
// return R.ok(homeService.byChannel(type,2));
|
||||
// }
|
||||
/**
|
||||
* 首页大盘数据:任务完成情况
|
||||
* @param type 1本月 2上月 3本季度 4本年 5所有
|
||||
|
@ -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<Void> followUsers(PsCompanyFollowBo queryBo) {
|
||||
|
@ -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;
|
||||
|
||||
|
||||
/**
|
||||
* 生成合同
|
||||
*/
|
||||
|
@ -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<Long> add(@Validated(AddGroup.class) @RequestBody PsCustomInfoBo bo) {
|
||||
return R.ok(psCustomInfoService.insertByBo(bo));
|
||||
}
|
||||
/**
|
||||
* 新增客户基本信息
|
||||
*/
|
||||
@RepeatSubmit()
|
||||
@PostMapping("/officialWebsiteAdd")
|
||||
@SaIgnore
|
||||
public R<Long> 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<Map<String, String>> getAllDictByDictType() {
|
||||
Map<String, String> allDictByDictType = dictService.getAllDictByDictType("contract_type");
|
||||
return R.ok(allDictByDictType);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改客户基本信息
|
||||
@ -90,6 +125,7 @@ public class PsCustomController extends BaseController {
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody PsCustomInfoBo bo) {
|
||||
|
||||
return toAjax(psCustomInfoService.updateByBo(bo));
|
||||
}
|
||||
|
||||
|
@ -48,4 +48,11 @@ public class PsHomeController extends BaseController {
|
||||
// }
|
||||
|
||||
|
||||
@RepeatSubmit()
|
||||
@SaCheckPermission("business:statistics")
|
||||
@GetMapping("/statistics")
|
||||
public R<List<PsCustomInfoVo>> statistics() {
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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<Void> 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<Void> addRecordAndSaveCompanyInfo(@Validated(AddGroup.class) @RequestBody PsTaskWorkRecordBo bo) {
|
||||
psTaskWorkRecordService.insertAndMedia(bo);
|
||||
return toAjax(true);
|
||||
}
|
||||
|
||||
// /**
|
||||
// * 导出外勤任务记录列表
|
||||
|
@ -94,4 +94,9 @@ public class PsCustomInfo extends TenantEntity {
|
||||
*/
|
||||
private Date acceptDate;
|
||||
|
||||
/**
|
||||
* 服务类别
|
||||
*/
|
||||
private String serviceType;;
|
||||
|
||||
}
|
||||
|
@ -43,7 +43,7 @@ public class PsContractInfoQueryBo {
|
||||
private String customName;
|
||||
|
||||
/**
|
||||
* 合同id
|
||||
* 客户id
|
||||
*/
|
||||
private Long customId;
|
||||
/**
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
|
||||
}
|
@ -117,5 +117,9 @@ public class PsTaskQueryBo {
|
||||
*/
|
||||
private List<String> extendList;
|
||||
|
||||
/**
|
||||
* app 搜索时关键字,客户姓名,签约公司名称, 客户手机号后4位
|
||||
*/
|
||||
private String appKeyWord;
|
||||
|
||||
}
|
||||
|
@ -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<PsTaskMediaBo> mediaBoList;
|
||||
|
||||
private Long taskId;
|
||||
|
||||
// private Long customerId;
|
||||
//
|
||||
// private Long companyId;
|
||||
}
|
||||
|
@ -72,4 +72,5 @@ public class PsContractBusinessDetailVo implements Serializable {
|
||||
private String extentInfo;
|
||||
|
||||
|
||||
private Long companyId;
|
||||
}
|
||||
|
@ -66,7 +66,7 @@ public class PsContractInfoVo implements Serializable {
|
||||
private BigDecimal contractAmount;
|
||||
|
||||
/**
|
||||
* 合同状态
|
||||
* 合同状态 ContractStatusEnum
|
||||
*/
|
||||
private String contractStatus;
|
||||
|
||||
|
@ -183,4 +183,9 @@ public class PsCustomInfoVo implements Serializable {
|
||||
* 公司信息DTO
|
||||
*/
|
||||
private List<PsCompanyInfoVo> psCompanyInfoVos;
|
||||
|
||||
/**
|
||||
* 服务类别
|
||||
*/
|
||||
private String serviceType;;
|
||||
}
|
||||
|
@ -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<PsContractBusinessDetailVo> psContractBusinesses;
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
}
|
@ -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);
|
||||
|
@ -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<PsContractBusin
|
||||
List<PsContractBusinessVo> selectTuoGuanBusinessList(@Param(Constants.WRAPPER) Wrapper<PsContractBusiness> queryWrapper);
|
||||
|
||||
|
||||
List<PsContractBusinessDetailVo> selectListByContractCodeAndComanyId(@Param(Constants.WRAPPER) Wrapper<PsContractBusiness> queryWrapper);
|
||||
|
||||
}
|
||||
|
@ -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<PsContractInfo, PsC
|
||||
@DataColumn(key = "userName", value = "info.custom_manager")
|
||||
})
|
||||
List<ChannelPayInfo> byChannelUser(@Param(Constants.WRAPPER) Wrapper<PsContractInfo> queryWrapper);
|
||||
|
||||
List<PsContractBusinessVo> selectRenewalContract(@Param(Constants.WRAPPER) Wrapper<PsContractInfo> queryWrapper);
|
||||
|
||||
|
||||
}
|
||||
|
@ -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<UserContractAmountVo> getUserContractSourceAmountsByDeptId(Integer type,Long deptId);
|
||||
List<UserContractAmountVo> getUserContractAmountsByDeptId(Integer type, Long deptId);
|
||||
Collection<UserAmountInfoVo> getUserContractAndPayInfo(Integer type);
|
||||
/**
|
||||
* 首页大盘数据:各渠道成交
|
||||
* @param type
|
||||
|
@ -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<PsTaskMediaBo> mediaBoList, Long customerId, Long companyId);
|
||||
|
||||
/**
|
||||
* 任务委派
|
||||
*
|
||||
|
@ -38,7 +38,7 @@ public interface IPsTaskWorkRecordService {
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
Boolean insertByBo(PsTaskWorkRecordBo bo);
|
||||
|
||||
Boolean insertAndMedia(PsTaskWorkRecordBo bo);
|
||||
// /**
|
||||
// * 查询外勤任务记录
|
||||
// *
|
||||
|
@ -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()));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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<PsTaskMain> 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<PsTaskMain> 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())){
|
||||
//
|
||||
|
@ -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()));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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()));
|
||||
}
|
||||
|
||||
|
||||
|
@ -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()));
|
||||
}
|
||||
}
|
||||
|
@ -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()));
|
||||
}
|
||||
|
||||
|
||||
|
@ -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()));
|
||||
}
|
||||
}
|
||||
|
@ -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<String, Object> mapParam = this.getDate(type);
|
||||
LocalDate startDate = (LocalDate)mapParam.get("startDate");
|
||||
LocalDate endDate = (LocalDate)mapParam.get("endDate");
|
||||
String date = (String)mapParam.get("date");
|
||||
|
||||
QueryWrapper<PsContractBusiness> wrapper = new QueryWrapper<PsContractBusiness>()
|
||||
.eq("business_type", "2")
|
||||
.between("end_date", startDate, endDate)
|
||||
.groupBy("company_id")
|
||||
.groupBy("contract_code");
|
||||
//到期的合同
|
||||
List<PsContractBusiness> expireContact = psContractBusinessMapper.selectList(wrapper);
|
||||
List<Long> companyIds = expireContact.stream().map(PsContractBusiness::getCompanyId).toList();
|
||||
List<String> contractCodeList = expireContact.stream().map(PsContractBusiness::getContractCode).toList();
|
||||
//总到期金额
|
||||
BigDecimal sumExpireAmount = expireContact.stream().map(PsContractBusiness::getBusinessAmount).reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
|
||||
|
||||
QueryWrapper<PsContractInfo> contractWrapper = new QueryWrapper<PsContractInfo>()
|
||||
.between("apply_date", startDate, endDate)
|
||||
.eq("con.is_due", 1)
|
||||
.in("cc.company_id", companyIds)
|
||||
.notIn("cc.contract_code", contractCodeList);
|
||||
//已续费的合同
|
||||
List<PsContractBusinessVo> 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<UserContractAmountVo> getUserContractSourceAmountsByDeptId(Integer type, Long deptId){
|
||||
Map<String, Object> mapParam = this.getDate(type);
|
||||
LocalDate startDate = (LocalDate)mapParam.get("startDate");
|
||||
LocalDate endDate = (LocalDate)mapParam.get("endDate");
|
||||
String date = (String)mapParam.get("date");
|
||||
|
||||
Map<String,Object> queryParam=new HashMap<>();
|
||||
Map<String,Object> 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<UserContractAmountInfo> list=psContractInfoMapper.getUserContractSourceAmountsByDeptId(queryParam);
|
||||
Map<Long,UserContractAmountVo> res=new HashMap<>();
|
||||
List<UserContractAmountInfo> list = psContractInfoMapper.getUserContractSourceAmountsByDeptId(queryParam);
|
||||
Map<Long,UserContractAmountVo> res = new HashMap<>();
|
||||
//记录合同编码,防止重复
|
||||
Map<String,String> repeatContractCode=new HashMap<>();
|
||||
Map<String,String> 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<UserContractAmountVo> getUserContractAmountsByDeptId(Integer type,Long deptId) {
|
||||
Map<String, Object> mapParam = this.getDate(type);
|
||||
LocalDate startDate = (LocalDate)mapParam.get("startDate");
|
||||
LocalDate endDate = (LocalDate)mapParam.get("endDate");
|
||||
String date = (String)mapParam.get("date");
|
||||
|
||||
Map<String,Object> 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<UserContractAmountInfo> list=psContractInfoMapper.getUserContractTypeAmountsByDeptId(queryParam);
|
||||
Map<Long,UserContractAmountVo> res=new HashMap<>();
|
||||
List<UserContractAmountInfo> list = psContractInfoMapper.getUserContractTypeAmountsByDeptId(queryParam);
|
||||
Map<Long,UserContractAmountVo> res = new HashMap<>();
|
||||
//记录合同编码,防止重复
|
||||
Map<String,String> repeatContractCode=new HashMap<>();
|
||||
for(UserContractAmountInfo obj:list){
|
||||
UserContractAmountVo vo=res.get(obj.getUserId());
|
||||
Map<String,String> 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<UserContractAmountVo> listData=res.values().stream().sorted(
|
||||
List<UserContractAmountVo> 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<UserAmountInfoVo> getUserContractAndPayInfo(Integer type){
|
||||
Map<String, Object> mapParam = this.getDate(type);
|
||||
LocalDate startDate = (LocalDate)mapParam.get("startDate");
|
||||
LocalDate endDate = (LocalDate)mapParam.get("endDate");
|
||||
|
@ -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())||
|
||||
|
@ -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<String,Object> 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());
|
||||
|
@ -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();
|
||||
}
|
||||
|
||||
|
@ -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));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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<PsTaskMainVo> page) {
|
||||
String contractCode = null;
|
||||
List<Long> serviceCompanyIdList = new ArrayList<>();
|
||||
if (page.getRecords().isEmpty()){
|
||||
return;
|
||||
}
|
||||
Map<String, List<PsContractBusinessDetailVo>> busMap = new HashMap<>();
|
||||
List<Long> serviceCompanyIdList = page.getRecords().stream().map(PsTaskMainVo::getServiceCompanyId).toList();
|
||||
List<String> contractCodeList = page.getRecords().stream().map(PsTaskMainVo::getContractCode).toList();
|
||||
|
||||
QueryWrapper<PsContractBusiness> objectQueryWrapper = new QueryWrapper<PsContractBusiness>()
|
||||
.in("bus.contract_code", contractCodeList)
|
||||
.in("bus.company_id", serviceCompanyIdList);
|
||||
List<PsContractBusinessDetailVo> psContractBusinesses = businessMapper.selectListByContractCodeAndComanyId(objectQueryWrapper);
|
||||
|
||||
for (PsContractBusinessDetailVo psContractBusiness : psContractBusinesses) {
|
||||
List<PsContractBusinessDetailVo> 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<PsTaskMainVo> 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<PsTaskMediaBo> mediaBoList, Long customerId, Long companyId) {
|
||||
//2.1查询原始的合同资料信息
|
||||
List<PsTaskMediaVo> mediaList = mediaService.queryMediaList(customerId,companyId);
|
||||
List<PsTaskMediaVo> mediaList = mediaService.queryMediaList(customerId, companyId);
|
||||
//此次需要保存的资料id(后续删除使用)
|
||||
List<String> 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<String> 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()));
|
||||
}
|
||||
/**
|
||||
* 任务暂停
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
// /**
|
||||
// * 查询外勤任务记录
|
||||
|
@ -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}
|
||||
</select>
|
||||
|
||||
<select id="selectListByContractCodeAndComanyId" resultType="com.pusong.business.domain.vo.PsContractBusinessDetailVo">
|
||||
select
|
||||
detail.*,
|
||||
bus.company_id
|
||||
from ps_contract_business bus
|
||||
left join ps_contract_business_detail detail on bus.id = detail.business_id
|
||||
</select>
|
||||
</mapper>
|
||||
|
@ -221,4 +221,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
${ew.getCustomSqlSegment}
|
||||
</select>
|
||||
|
||||
|
||||
<select id="selectRenewalContract" resultType="com.pusong.business.domain.vo.PsContractBusinessVo">
|
||||
select
|
||||
bus.*
|
||||
from ps_contract_company cc
|
||||
left join ps_contract_info con on con.contract_code = cc.contract_code
|
||||
left join ps_contract_business bus on bus.contract_code = con.contract_code and bus.business_type = '2'
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
@ -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}
|
||||
|
@ -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;
|
||||
}
|
@ -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<OssDTO> getOss(@PathVariable Long ossId, HttpServletResponse response) throws IOException {
|
||||
return R.ok(ossService2.selectById(ossId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除OSS对象存储
|
||||
*
|
||||
|
@ -48,4 +48,21 @@ public class SysNotice extends TenantEntity {
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
|
||||
/**
|
||||
* 接收角色
|
||||
*/
|
||||
private String recRole;
|
||||
|
||||
/**
|
||||
* 接收uid
|
||||
*/
|
||||
private Long recUid;
|
||||
|
||||
/**
|
||||
* 跳转类型
|
||||
*/
|
||||
private int jumpType;
|
||||
|
||||
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -107,6 +107,11 @@ public class SysUserBo extends BaseEntity {
|
||||
*/
|
||||
private Long roleId;
|
||||
|
||||
/**
|
||||
* 数据权限 当前角色key
|
||||
*/
|
||||
private String roleKey;
|
||||
|
||||
/**
|
||||
* 排除不查询的用户(工作流用)
|
||||
*/
|
||||
|
@ -139,4 +139,11 @@ public class SysUserVo implements Serializable {
|
||||
*/
|
||||
private Long roleId;
|
||||
|
||||
private String openid;
|
||||
|
||||
/**
|
||||
* 1时需要后台开通 2需要手机号授权登录,
|
||||
*/
|
||||
private Integer code;
|
||||
|
||||
}
|
||||
|
@ -88,4 +88,5 @@ public interface SysUserMapper extends BaseMapperPlus<SysUser, SysUserVo> {
|
||||
})
|
||||
int updateById(@Param(Constants.ENTITY) SysUser user);
|
||||
|
||||
int updateOpenIdById(SysUser user);
|
||||
}
|
||||
|
@ -41,6 +41,7 @@ public interface ISysNoticeService {
|
||||
*/
|
||||
int insertNotice(SysNoticeBo bo);
|
||||
|
||||
int sendNotice(SysNoticeBo bo);
|
||||
/**
|
||||
* 修改公告
|
||||
*
|
||||
|
@ -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<SysNoticeVo> 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<SysNotice> insertData = new ArrayList<>();
|
||||
List<Long> uids = new ArrayList<>();
|
||||
if (bo.getRecRole() != null){
|
||||
SysUserBo query = new SysUserBo();
|
||||
query.setRoleKey(bo.getRecRole());
|
||||
PageQuery pageQuery = new PageQuery();
|
||||
pageQuery.setPageSize(999);
|
||||
TableDataInfo<SysUserVo> 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<SysUserVo> 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;
|
||||
}
|
||||
/**
|
||||
* 修改公告
|
||||
*
|
||||
|
@ -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<SysOss> buildQueryWrapper(SysOssBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
|
@ -130,6 +130,7 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
|
||||
QueryWrapper<SysUser> 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())
|
||||
|
@ -69,5 +69,11 @@
|
||||
select count(*) from sys_user where del_flag = '0' and user_id = #{userId}
|
||||
</select>
|
||||
|
||||
|
||||
<update id="updateOpenIdById" parameterType="SysUser">
|
||||
update sys_user
|
||||
<trim prefix="SET" suffixOverrides=",">
|
||||
<if test="openid != null">openid = #{openid},</if>
|
||||
</trim>
|
||||
where user_id = #{userId}
|
||||
</update>
|
||||
</mapper>
|
||||
|
@ -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 '跳转类型';
|
||||
|
Loading…
Reference in New Issue
Block a user