This commit is contained in:
mx 2024-11-18 16:38:59 +08:00
parent dd5adbeef5
commit 6bae31876c
14 changed files with 96 additions and 60 deletions

View File

@ -145,7 +145,7 @@ public class PsCustomInfoVo implements Serializable {
/**
* 历史的所属客户经理
*/
@Translation(type = TransConstant.USER_ID_TO_NICKNAME,mapper = "historyCustomManager")
// @Translation(type = TransConstant.USER_ID_TO_NICKNAME,mapper = "historyCustomManager")
private String historyCustomManagerName;
/**
* 是否已生成合同1是0否

View File

@ -26,6 +26,10 @@ public class UserContractAmountInfo {
* 合同类型
*/
private String businessType;
/**
* 服务类型金额
*/
private BigDecimal businessAmount;
/**
* 客户来源
*/

View File

@ -47,7 +47,7 @@ public class PayContractApproverServiceImpl extends ApproverAbstractServiceImpl
public void success(PsApproverRecord psApproverRecord) {
//查询合同信息
PsContractInfoVo info = psContractInfoService.queryContractByCode(psApproverRecord.getContractCode());
psContractInfoService.fillMoney(info);
//修改回款记录状态
PsContractPay update = new PsContractPay();
// if(StringUtils.isNotBlank(psApproverRecord.getUpdateData())){
@ -58,6 +58,8 @@ public class PayContractApproverServiceImpl extends ApproverAbstractServiceImpl
update.setPayStatus(PayStatusEnum.SUCCESS.getCode());
payService.updateById(update);
psContractInfoService.fillMoney(info);
PsContractInfo updateInfo = new PsContractInfo();
updateInfo.setContractCode(info.getContractCode());
if("1".equals(info.getIsDue())){

View File

@ -402,7 +402,7 @@ public class HomeServiceImpl implements HomeService {
* @param deptId 部门id
* @return
*/
public List<UserContractAmountVo> 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");
@ -418,7 +418,7 @@ public class HomeServiceImpl implements HomeService {
List<UserContractAmountInfo> list = psContractInfoMapper.getUserContractTypeAmountsByDeptId(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());
@ -429,13 +429,13 @@ public class HomeServiceImpl implements HomeService {
vo.setDateStr(date);
res.put(obj.getUserId(),vo);
}
if(repeatContractCode.get(obj.getContractCode())==null){
repeatContractCode.put(obj.getContractCode(),obj.getContractCode());
if(repeatContractCode.get(obj.getContractCode()) == null){
repeatContractCode.put(obj.getContractCode(), obj.getContractCode());
vo.addSumAmount(obj.getContractAmount());
}
//托管合同金额累计
if(obj.getBusinessType() != null && obj.getBusinessType().equals("4")){
if(obj.getBusinessType() != null && obj.getBusinessType().equals("2")){
vo.addTuoGuanAmount(obj.getContractAmount());
} else
//软件开发合同金额累计
@ -502,9 +502,15 @@ public class HomeServiceImpl implements HomeService {
queryParam.put("payStatus", PayStatusEnum.SUCCESS.getCode());
// LocalDateTime localDateTime2= LocalDateTime.parse("2024-11-07T14:04:00");
QueryWrapper<PsContractInfo> queryWrapper = new QueryWrapper<PsContractInfo>()
.in(tabType == 1, "role.role_key", Arrays.asList(RoleEnum.caiwu.getCode(), RoleEnum.cwzg.getCode()))
.in(tabType == 0, "role.role_key", Arrays.asList(RoleEnum.xiaoshou.getCode(), RoleEnum.xszg.getCode()) );
// .in(tabType == 1, "role.role_key", Arrays.asList(RoleEnum.caiwu.getCode(), RoleEnum.cwzg.getCode()))
// .in(tabType == 0, "role.role_key", Arrays.asList(RoleEnum.xiaoshou.getCode(), RoleEnum.xszg.getCode()) )
.exists(tabType == 1,"select 1 from sys_user_role ur inner join sys_role role on role.role_id = ur.role_id where ur.user_id = u.user_id and role.role_key in (" + RoleEnum.caiwu.getCode() + "," + RoleEnum.cwzg.getCode() + ")")
.exists(tabType == 1,"select 1 from sys_user_role ur inner join sys_role role on role.role_id = ur.role_id where ur.user_id = u.user_id and role.role_key in (" + RoleEnum.xiaoshou.getCode() + "," + RoleEnum.xszg.getCode() + ")")
;
List<UserContractAmountInfo> list = psContractInfoMapper.getUserContractAndPayInfo(queryParam, queryWrapper);
Map<Long, UserAmountInfoVo> resMap = new HashMap<>();
//记录合同编码防止重复
@ -535,25 +541,25 @@ public class HomeServiceImpl implements HomeService {
}
//托管合同金额累计
if(obj.getBusinessType() != null && obj.getBusinessType().equals("4")){
// vo.addTuoGuanAmount(obj.getContractAmount());
if("2".equals(obj.getBusinessType())){
vo.addTuoGuanAmount(obj.getBusinessAmount());
} else {
//软件开发合同金额累计
if (obj.getBusinessType() != null && obj.getBusinessType().equals("9")) {
if (obj.getContractAmount() != null) {
vo.addSoftwareDevAmount(obj.getContractAmount());
if (obj.getBusinessType() != null && obj.getBusinessType().equals("7")) {
if (obj.getBusinessAmount() != null) {
vo.addSoftwareDevAmount(obj.getBusinessAmount());
}
} else {
//其他合同金额累计
if (obj.getIsDue() == null || obj.getIsDue().equals("0")) {
if (obj.getContractAmount() != null){
vo.addOtherAmount(obj.getContractAmount());
if (obj.getBusinessAmount() != null){
vo.addOtherAmount(obj.getBusinessAmount());
}
}
}
}
//续签合同金额累计
if(obj.getIsDue()!=null&&obj.getIsDue().equals("1")){
if(obj.getIsDue() != null && obj.getIsDue().equals("1")){
if (obj.getContractAmount() != null) {
vo.addXuFeiAmount(obj.getContractAmount());
}
@ -609,9 +615,12 @@ public class HomeServiceImpl implements HomeService {
res.setDateStr(date);
log.info("查询日期:{}到{}",startDate,endDate);
QueryWrapper<PsContractInfo> wq = new QueryWrapper<PsContractInfo>()
.ne("info.is_due", CommonStatusEnum.SUCCESS.getCode()).ne("info.contract_status", ContractStatusEnum.INIT.getCode())
.ne("info.is_due", CommonStatusEnum.SUCCESS.getCode())
.ne("info.contract_status", ContractStatusEnum.INIT.getCode())
.ne("info.is_cancel", CommonStatusEnum.SUCCESS.getCode())
// .eq("pay.pay_status", PayStatusEnum.SUCCESS.getCode())
.ge(startDate != null, "info.apply_date", startDate).lt(endDate != null, "info.apply_date", endDate);
.ge(startDate != null, "info.apply_date", startDate)
.lt(endDate != null, "info.apply_date", endDate);
List<ChannelPayInfo> list;
if(dateType == 1){//所有的数据权限
list = psContractInfoMapper.byChannel(wq, startDate, endDate);
@ -651,7 +660,7 @@ public class HomeServiceImpl implements HomeService {
data.setPayMoney(paymoney);
data.setUnPayMoney(unpaymoney);
data.setType(item);
data.setCost(payList.isEmpty() ? BigDecimal.ZERO : payList.get(0).getCost());
data.setCost(payList.stream().map(ChannelPayInfo::getCost).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
channelList.add(data);
}
res.setChannelList(channelList);
@ -730,12 +739,12 @@ public class HomeServiceImpl implements HomeService {
map.put("dateStr", date);//
map.put("currentDate", DateUtils.parseDateToStr("yyyy-MM-dd HH:mm", new Date()));//当前时间
for(Map<String, Object> appointMap : appointList){
if(StringUtils.equals("1",appointMap.get("appoint_type").toString())){
appointMap.put("inAvg",appointMap.get("avg"));
}else if(StringUtils.equals("2",appointMap.get("appoint_type").toString())){
appointMap.put("outAvg",appointMap.get("avg"));
}else if(StringUtils.equals("3",appointMap.get("appoint_type").toString())){
appointMap.put("secAvg",appointMap.get("avg"));
if(StringUtils.equals("1", appointMap.get("appoint_type").toString())){
map.put("inAvg", appointMap.get("avg"));
}else if(StringUtils.equals("2", appointMap.get("appoint_type").toString())){
map.put("outAvg",appointMap.get("avg"));
}else if(StringUtils.equals("3", appointMap.get("appoint_type").toString())){
map.put("secAvg",appointMap.get("avg"));
}
}
return map;

View File

@ -111,7 +111,7 @@ public class PsCustomInfoServiceImpl implements IPsCustomInfoService {
bo.setInCustomStatus(CustomerStatusEnum.getPublic());
}
Wrapper<PsCustomInfo> lqw = buildQueryWrapper(bo);
Page<PsCustomInfoVo> result = new Page<>();
Page<PsCustomInfoVo> result;
if(bo.getType() == 3){//公海数据不用加数据权限
result = baseMapper.selectPagePublicCustomerList(pageQuery.build(), lqw);
}else{

View File

@ -399,6 +399,22 @@ public class PsTaskServiceImpl implements IPsTaskService {
}
appointMapper.insert(insertList);
PsCompanyInfoVo psCompanyInfoVo = null;
if (mainTask != null){
psCompanyInfoVo = companyInfoService.queryById(mainTask.getServiceCompanyId());
}
if (psCompanyInfoVo != null){
for (PsTaskAppoint psTaskAppoint : insertList) {
if ("1".equals(bo.getAppointType())){
noticeService.sendNotice(SysNoticeBo.getNqResetInstance(psTaskAppoint.getExecutor(), psCompanyInfoVo.getCompanyName(), ""));
}else if ("2".equals(bo.getAppointType())){
noticeService.sendNotice(SysNoticeBo.getWqResetInstance(psTaskAppoint.getExecutor(), psCompanyInfoVo.getCompanyName(), ""));
}else if ("3".equals(bo.getAppointType())){
noticeService.sendNotice(SysNoticeBo.getTqResetInstance(psTaskAppoint.getExecutor(), psCompanyInfoVo.getCompanyName(), ""));
}
}
}
}
/**
* 主任务完成

View File

@ -119,7 +119,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</if>
LEFT JOIN ps_contract_business bus on bus.contract_code=info.contract_code
WHERE u.dept_id=#{queryParam.deptId}
WHERE u.dept_id = #{queryParam.deptId}
</select>
<!-- 按人员成交数据统计饼图 -->
@ -129,7 +129,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
u.nick_name as nickName,
info.contract_code as contractCode,
info.contract_amount as contractAmount,
pay.money as payedMoney
pay.money as payedMoney,
bus.business_type as businessType,
bus.business_amount as businessAmount
FROM sys_user u
LEFT JOIN ps_contract_info info on
u.user_id = info.custom_manager
@ -142,12 +144,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
and info.contract_status != #{queryParam.contractStatus}
and info.is_cancel != #{queryParam.isCancel}
inner join sys_user_role ur on ur.user_id = u.user_id
inner join sys_role role on role.role_id = ur.role_id
LEFT JOIN ps_contract_pay pay on
info.contract_code=pay.contract_code
and pay.pay_status=#{queryParam.payStatus}
and pay.del_flag=0
-- inner join sys_user_role ur on ur.user_id = u.user_id
-- inner join sys_role role on role.role_id = ur.role_id
LEFT JOIN ps_contract_business bus on bus.contract_code=info.contract_code
LEFT JOIN ps_contract_pay pay on info.contract_code=pay.contract_code and pay.pay_status=#{queryParam.payStatus} and pay.del_flag=0
${ew.getCustomSqlSegment}
</select>
@ -228,7 +228,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
AND pay.create_time &gt;= #{startTime}
</if>
<if test="endTime != null">
AND pay.create_time &gt;= #{endTime}
AND pay.create_time &lt; #{endTime}
</if>
left join sys_user_post up on up.user_id = info.custom_manager

View File

@ -11,6 +11,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<sql id="queryCustomerList" >
SELECT info.*
, usr.nick_name as custom_manager_name
, his_usr.nick_name as history_custom_manager_name
,psinfo.custom_name as custom_introducer_name
,(select contract_code from ps_contract_info where custom_id = info.id and create_time = (select max(create_time) from ps_contract_info coninfo where <include refid="queryContract"/>) limit 0,1)
contract_code
@ -19,7 +20,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
start_date
,EXISTS(SELECT 1 FROM ps_contract_info coninfo WHERE <include refid="queryContract"/>) have_contract
FROM ps_custom_info info
left join sys_user usr on info.custom_manager = usr.user_id or info.history_custom_manager = usr.user_id
left join sys_user usr on info.custom_manager = usr.user_id
left join sys_user his_usr on info.history_custom_manager = his_usr.user_id
left join ps_custom_info psinfo on info.custom_introducer = psinfo.id
</sql>

View File

@ -41,7 +41,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
select count(1) contractNum, sum(contract_amount) sumContractAmount
from ps_contract_info info
where
contract_status != 10 and del_flag = 0
contract_status != 10 and del_flag = 0 and is_cancel != '03'
<if test="queryParam.startDate != null">
and create_time >= #{queryParam.startDate}
</if>
@ -53,15 +53,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectSumPayContractAmount">
select sum(money) from ps_contract_info info
inner join ps_contract_pay pay on pay.contract_code = info.contract_code and pay.business_type = #{queryParam.businessType} and pay.del_flag = 0
inner join ps_contract_pay pay on pay.contract_code = info.contract_code
and pay.business_type = #{queryParam.businessType}
and pay.pay_status = '1' and pay.del_flag = 0
where
info.contract_status != 10 and info.del_flag = 0
info.contract_status != 10 and info.del_flag = 0 and is_cancel != '03'
<if test="queryParam.startDate != null">
and info.create_time >= #{queryParam.startDate}
</if>
<if test="queryParam.endDate != null">
and info.create_time &lt; #{queryParam.endDate}
</if>
</select>

View File

@ -61,14 +61,13 @@ public class SysNoticeController extends BaseController {
@Log(title = "通知公告", businessType = BusinessType.INSERT)
@PostMapping
public R<Void> add(@Validated @RequestBody SysNoticeBo notice) {
int rows = noticeService.insertNotice(notice);
if (rows <= 0) {
return R.fail();
}
String type = dictService.getDictLabel("sys_notice_type", notice.getNoticeContent());
notice.setNoticeContent("[" + type + "] " + notice.getNoticeTitle());
Long id = noticeService.insertNotice(notice);
// String type = dictService.getDictLabel("sys_notice_type", notice.getNoticeType());
// notice.setNoticeContent("[" + type + "] " + notice.getNoticeTitle());
SysNotice sysNotice = MapstructUtils.convert(notice, SysNotice.class);
SysNoticeVo vo = MapstructUtils.convert(sysNotice, SysNoticeVo.class);
vo.setNoticeId(id);
WebSocketUtils.publishAll(JsonUtils.toJsonString(vo));
return R.ok();
}

View File

@ -142,7 +142,7 @@ public class SysNoticeBo extends BaseEntity {
noticeBo.setNoticeType("1");
noticeBo.setNoticeTitle("通知");
noticeBo.setStatus("0");
noticeBo.setNoticeContent(""+ coustomName +"】的首笔回款已成功入账,辛勤耕耘终获硕果,再接再厉,未来更可期!");
noticeBo.setNoticeContent(""+ coustomName +"】的首笔回款已成功入账,辛勤耕耘终获硕果,再接再厉,未来更可期!");
noticeBo.setRecUid(uid);
noticeBo.setJumpType(0);
return noticeBo;
@ -162,7 +162,7 @@ public class SysNoticeBo extends BaseEntity {
noticeBo.setNoticeType("1");
noticeBo.setNoticeTitle("通知");
noticeBo.setStatus("0");
noticeBo.setNoticeContent(""+ coustomName +"】的回款已成功入账,辛勤耕耘终获硕果,再接再厉,未来更可期!");
noticeBo.setNoticeContent(""+ coustomName +"】的回款已成功入账,辛勤耕耘终获硕果,再接再厉,未来更可期!");
noticeBo.setRecUid(uid);
noticeBo.setJumpType(0);
return noticeBo;
@ -232,7 +232,7 @@ public class SysNoticeBo extends BaseEntity {
noticeBo.setNoticeType("1");
noticeBo.setNoticeTitle("通知");
noticeBo.setStatus("0");
noticeBo.setNoticeContent("回传【"+ coustomName +"】的合同审批被拒,请确认相关问题后重新回传,拒绝原因:拒绝原因说明" + desc);
noticeBo.setNoticeContent("回传【"+ coustomName +"】的合同审批被拒,请确认相关问题后重新回传,拒绝原因:" + desc);
noticeBo.setRecUid(uid);
noticeBo.setJumpType(0);
return noticeBo;
@ -272,7 +272,7 @@ public class SysNoticeBo extends BaseEntity {
noticeBo.setNoticeType("1");
noticeBo.setNoticeTitle("通知");
noticeBo.setStatus("0");
noticeBo.setNoticeContent("有一笔【"+ coustomName +"】的待处理退款,请及时处理。");
noticeBo.setNoticeContent("有一笔【"+ coustomName +"】的待处理退款,请及时处理。");
noticeBo.setRecRole(Arrays.asList(RoleEnum.caiwu.getCode(), RoleEnum.cwzg.getCode()));
noticeBo.setJumpType(0);
return noticeBo;
@ -428,7 +428,7 @@ public class SysNoticeBo extends BaseEntity {
noticeBo.setNoticeType("1");
noticeBo.setNoticeTitle("通知");
noticeBo.setStatus("0");
noticeBo.setNoticeContent(""+ serviceCompanyName +"】的内勤任务已派单/改派成功,内勤服务人员:" + executeNames);
noticeBo.setNoticeContent(""+ serviceCompanyName +"】的内勤任务已下发,请及时处理。");
noticeBo.setRecUid(uid);
noticeBo.setJumpType(0);
return noticeBo;
@ -438,7 +438,7 @@ public class SysNoticeBo extends BaseEntity {
noticeBo.setNoticeType("1");
noticeBo.setNoticeTitle("通知");
noticeBo.setStatus("0");
noticeBo.setNoticeContent(""+ serviceCompanyName +"】的外勤任务已派单/改派成功,外勤服务人员:" + executeNames );
noticeBo.setNoticeContent(""+ serviceCompanyName +"】的外勤任务已下发,请及时处理。");
noticeBo.setRecUid(uid);
noticeBo.setJumpType(0);
return noticeBo;
@ -448,7 +448,7 @@ public class SysNoticeBo extends BaseEntity {
noticeBo.setNoticeType("1");
noticeBo.setNoticeTitle("通知");
noticeBo.setStatus("0");
noticeBo.setNoticeContent(""+ serviceCompanyName +"】的特勤任务已派单/改派成功,特勤服务人员:"+ executeNames);
noticeBo.setNoticeContent(""+ serviceCompanyName +"】的特勤任务已下发,请及时处理。");
noticeBo.setRecUid(uid);
noticeBo.setJumpType(0);
return noticeBo;

View File

@ -39,7 +39,7 @@ public interface ISysNoticeService {
* @param bo 公告信息
* @return 结果
*/
int insertNotice(SysNoticeBo bo);
Long insertNotice(SysNoticeBo bo);
int sendNotice(SysNoticeBo bo);
/**

View File

@ -106,9 +106,10 @@ public class SysNoticeServiceImpl implements ISysNoticeService {
* @return 结果
*/
@Override
public int insertNotice(SysNoticeBo bo) {
public Long insertNotice(SysNoticeBo bo) {
SysNotice notice = MapstructUtils.convert(bo, SysNotice.class);
return baseMapper.insert(notice);
baseMapper.insert(notice);
return notice.getNoticeId();
}
@Override
public int sendNotice(SysNoticeBo bo) {

View File

@ -60,8 +60,8 @@
<select id="selectRoleByMenuPath" resultMap="SysRoleResult">
select r.role_key from sys_menu menu
left join sys_role_menu rm on rm.menu_id = menu.menu_id
left join sys_role r on r.role_id = rm.role_id
inner join sys_role_menu rm on rm.menu_id = menu.menu_id
inner join sys_role r on r.role_id = rm.role_id
${ew.getCustomSqlSegment}
</select>
</mapper>