This commit is contained in:
1073413548 2024-08-19 18:24:10 +08:00
parent 3c10e741ae
commit dcdf1d5a8a
17 changed files with 142 additions and 28 deletions

View File

@ -7,6 +7,7 @@ import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import com.pusong.common.idempotent.annotation.RepeatSubmit;
@ -43,8 +44,8 @@ public class PsContractPayController extends BaseController {
*/
@SaCheckPermission("business:contractPay:list")
@GetMapping("/list")
public List<PsContractPayVo> list(@NotBlank(message = "合同编码不能为空") String contractCode) {
return psContractPayService.queryListByContractCode(contractCode,null,null);
public R<List<PsContractPayVo>> list(@NotBlank(message = "合同编码不能为空") String contractCode) {
return R.ok(psContractPayService.queryListByContractCode(contractCode,null,null));
}
/**
* 获取合同回款记录详细信息
@ -88,7 +89,7 @@ public class PsContractPayController extends BaseController {
* @return
*/
@SaCheckPermission("business:contractPay:query")
@GetMapping("/refundFinish")
@PostMapping(value = "/refundFinish",consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public R<Void> refundFinish(@RequestPart("files") List<MultipartFile> files, @NotNull Long id) {
psContractPayService.refundFinish(files,id);
return R.ok();

View File

@ -114,7 +114,8 @@ public class PsCustomController extends BaseController {
/**
*
* 客户档案
* @param type 类型 1客户档案 2已完成客户
* @param name 客户名
* @param mobile 客户电话
* @param companyName 公司名
@ -123,8 +124,8 @@ public class PsCustomController extends BaseController {
@SaCheckPermission("business:customInfo:record")
@Log(title = "客户档案" )
@GetMapping("/record")
public TableDataInfo<PsCustomerRecordVo> record(String name, String mobile, String companyName, PageQuery pageQuery) {
return psCustomInfoService.getCustomerRecordList(name,mobile,companyName,pageQuery);
public TableDataInfo<PsCustomerRecordVo> record(Integer type, String name, String mobile, String companyName, PageQuery pageQuery) {
return psCustomInfoService.getCustomerRecordList(type,name,mobile,companyName,pageQuery);
}

View File

@ -12,6 +12,7 @@ import com.pusong.common.log.enums.BusinessType;
import lombok.RequiredArgsConstructor;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.jetbrains.annotations.NotNull;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import com.pusong.common.web.core.BaseController;
@ -164,9 +165,9 @@ public class PsTaskController extends BaseController {
* @param file 发票文件
* @return
*/
@Log(title = "免费工单任务作废")
@Log(title = "上传发票")
@SaCheckPermission("business:task:list")
@GetMapping("/invoice")
@PostMapping(value = "/invoice", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public R<Void> taskReset(@RequestPart("file") MultipartFile file, @NotNull Long id) {
psTaskMainService.invoice(file,id);
return R.ok();
@ -181,7 +182,20 @@ public class PsTaskController extends BaseController {
@SaCheckPermission("business:task:list")
@GetMapping("/pause")
public R<Void> pause( @NotNull Long id) {
// psTaskMainService.pause(id);
psTaskMainService.pause(id);
return R.ok();
}
/**
* 任务恢复
* @param id 任务id
* @return
*/
@Log(title = "任务恢复")
@SaCheckPermission("business:task:list")
@GetMapping("/recover")
public R<Void> recover( @NotNull Long id) {
psTaskMainService.recover(id);
return R.ok();
}

View File

@ -9,8 +9,11 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
/**
* 合同回款记录业务对象 ps_contract_pay
@ -48,9 +51,10 @@ public class PsContractPayBo {
/**
* 回款日期
*/
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date payDate;
/**
* 回款类型1全款2分期
*/

View File

@ -3,6 +3,7 @@ package com.pusong.business.domain.bo;
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 com.pusong.common.mybatis.core.domain.BaseEntity;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
@ -22,7 +23,11 @@ import java.util.List;
@EqualsAndHashCode
@AutoMapper(target = PsCustomInfo.class)
public class PsCustomInfoBo {
/**
* 类型 1客户列表 2黑名单 3公海
*/
@NotNull(message = "类型不能为空", groups = { QueryGroup.class })
private Integer type;
/**
*
*/

View File

@ -73,6 +73,9 @@ public class PsTaskQueryBo {
*/
@NotBlank(message = "任务委派类型不能为空", groups = {QueryGroup.class})
private String appointType;
/**
* 任务类型
*/
private String type;
}

View File

@ -11,6 +11,8 @@ import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.pusong.common.excel.annotation.ExcelDictFormat;
import com.pusong.common.excel.convert.ExcelDictConvert;
import com.pusong.common.translation.annotation.Translation;
import com.pusong.common.translation.constant.TransConstant;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
@ -59,7 +61,7 @@ public class PsContractPayVo implements Serializable {
/**
* 回款日期
*/
@ExcelProperty(value = "回款日期")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date payDate;
/**
@ -75,6 +77,7 @@ public class PsContractPayVo implements Serializable {
/**
* 收款主体
*/
@Translation(type = TransConstant.DICT_TYPE_TO_LABEL ,other = "contract_main")
private String gathMain;
/**
@ -94,6 +97,7 @@ public class PsContractPayVo implements Serializable {
/**
* 创建时间
*/
@JsonFormat(pattern = "yyyy-MM-dd")
private Date createTime;
}

View File

@ -3,6 +3,8 @@ package com.pusong.business.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.List;
@Getter
@AllArgsConstructor
public enum CustomerStatusEnum {
@ -14,4 +16,11 @@ public enum CustomerStatusEnum {
private String code;
private String text;
/**
* 获取公海的数据状态
* @return
*/
public static List<String> getPublic() {
return List.of(PUBLIC.code,CLAIMAPPROVER.code);
}
}

View File

@ -34,6 +34,8 @@ public interface PsCustomInfoMapper extends BaseMapperPlus<PsCustomInfo, PsCusto
})
Page<PsCustomInfoVo> selectPageCustomerList(@Param("page") Page<PsCustomInfo> page, @Param(Constants.WRAPPER) Wrapper<PsCustomInfo> queryWrapper);
Page<PsCustomInfoVo> selectPagePublicCustomerList(@Param("page") Page<PsCustomInfo> page, @Param(Constants.WRAPPER) Wrapper<PsCustomInfo> queryWrapper);
@DataPermission({
@DataColumn(key = "deptName", value = "info.create_dept"),
@DataColumn(key = "userName", value = "info.custom_manager")

View File

@ -97,7 +97,7 @@ public interface IPsCustomInfoService {
* @param companyName
* @return
*/
TableDataInfo<PsCustomerRecordVo> getCustomerRecordList(String name, String mobile, String companyName, PageQuery pageQuery);
TableDataInfo<PsCustomerRecordVo> getCustomerRecordList(Integer type,String name, String mobile, String companyName, PageQuery pageQuery);
/**
* 移除黑名单

View File

@ -113,6 +113,18 @@ public interface IPsTaskService {
* @param file 发票文件
*/
void invoice(MultipartFile file, @NotNull Long id);
/**
* 任务暂停
* @param id 任务主表id
*/
void pause( Long id);
/**
* 任务恢复
* @param id 任务主表id
*/
void recover( Long id);
/* *//**
* 查询主任务
*

View File

@ -20,6 +20,7 @@ import com.pusong.business.domain.vo.PsApproverRecordVo;
import com.pusong.business.domain.PsApproverRecord;
import com.pusong.business.mapper.PsApproverRecordMapper;
import com.pusong.business.service.IPsApproverRecordService;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
@ -94,6 +95,7 @@ public class PsApproverRecordServiceImpl implements IPsApproverRecordService {
* @param id 审批表id
* @return
*/
@Transactional
public void approver(String operate, Long id,String desc){
PsApproverRecord info = baseMapper.selectById(id);
if(!StringUtils.equals(ApproverStatusEnum.INIT.getCode(),info.getApproverStatus())){
@ -111,7 +113,7 @@ public class PsApproverRecordServiceImpl implements IPsApproverRecordService {
}
info.setApproverDate(new Date());
info.setApproverDesc(desc);
baseMapper.insert(info);
baseMapper.updateById(info);
}
// /**
// * 新增审批记录

View File

@ -449,7 +449,7 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
.notIn(PsTaskMain::getTaskStatus, TaskStatusEnum.returnFinish()));
PsContractInfoVo info = this.queryContractByCode(contractCode);
//任务已完成 合同已回传 回款已结束
if(info.getRollBackStatus().equals(CommonStatusEnum.SUCCESS.getCode())
if(StringUtils.equals(info.getRollBackStatus(),CommonStatusEnum.SUCCESS.getCode())
&& num<=0 && info.getResidualMoney().compareTo(BigDecimal.ZERO)<=0){
PsContractInfo psContractInfo = new PsContractInfo();
psContractInfo.setContractCode(contractCode);
@ -478,12 +478,12 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
//用户表条件
qw.like( StringUtils.isNotBlank(bo.getCustomManagerName()),"us.nick_name", bo.getCustomManagerName());
//待回款不要作废数据 已回款需要展示退款中的作废数据
qw.ne(bo.getType() != null && (bo.getType() == 2 || (bo.getType() == 3)),"info.is_cancel",CommonStatusEnum.SUCCESS.getCode());
qw.or().gt(bo.getType() != null && bo.getType() == 2,"((select IFNULL(sum(pa.money),0) from ps_contract_pay pa where pa.pay_status = 1 and pa.business_type = 1 and pa.contract_code = info.contract_code\n" +
//2待回款不要作废数据 3已回款需要展示退款中的作废数据
qw.and(bo.getType() != null && (bo.getType() == 2 || (bo.getType() == 3)),wq->{
wq.ne("info.is_cancel",CommonStatusEnum.SUCCESS.getCode());
wq.or().gt( bo.getType() == 2,"((select IFNULL(sum(pa.money),0) from ps_contract_pay pa where pa.pay_status = 1 and pa.business_type = 1 and pa.contract_code = info.contract_code\n" +
")-(select IFNULL(sum(pay.money),0) from ps_contract_pay pay where pay.pay_status = 1 and pay.business_type = 2 and pay.contract_code = info.contract_code))",0);
});
//托管续费合同
qw.exists(bo.getType() != null && bo.getType() == 4
,"select 1 from ps_contract_business bus where info.contract_code = bus.contract_code and bus.business_type = 4");

View File

@ -54,10 +54,11 @@ public class PsContractPayServiceImpl implements IPsContractPayService {
*/
public List<PsContractPayVo> queryListByContractCode(String contractCode,String business,PayStatusEnum enu){
if(StringUtils.isBlank(contractCode)){return new ArrayList<>();}
String code = enu == null ? null :enu.getCode();
List<PsContractPayVo> list = baseMapper.selectVoList(Wrappers.<PsContractPay>lambdaQuery().
eq(PsContractPay::getContractCode, contractCode).eq(PsContractPay::getDelFlag,0)
.eq(StringUtils.isNotBlank(business),PsContractPay::getBusinessType,business)
.eq(enu != null ,PsContractPay::getPayStatus, enu.getCode())
.eq(code != null ,PsContractPay::getPayStatus, code)
.notIn(PsContractPay::getPayStatus, PayStatusEnum.getStatus())//去掉无用的状态
.orderByAsc(PsContractPay::getPayDate));
return list == null?new ArrayList<>():list;

View File

@ -95,8 +95,20 @@ public class PsCustomInfoServiceImpl implements IPsCustomInfoService {
//查询客户基本信息
bo.setNotCustomStatus(List.of(CustomerStatusEnum.PUBLIC.getCode()));
bo.setBlack(CommonStatusEnum.N.getCode());
if(bo.getType() == null || bo.getType() == 1){//任务列表
}else if(bo.getType() == 2){//黑名单
bo.setBlack(CommonStatusEnum.Y.getCode());
}else if(bo.getType() == 3){//公海
bo.setInCustomStatus(CustomerStatusEnum.getPublic());
}
Wrapper<PsCustomInfo> lqw = buildQueryWrapper(bo);
Page<PsCustomInfoVo> result = baseMapper.selectPageCustomerList(pageQuery.build(), lqw);
Page<PsCustomInfoVo> result = new Page<>();
if(bo.getType() == 3){//公海数据不用加数据权限
result = baseMapper.selectPagePublicCustomerList(pageQuery.build(), lqw);
}else{
result = baseMapper.selectPageCustomerList(pageQuery.build(), lqw);
}
if(CollectionUtils.isEmpty(result.getRecords())){
return TableDataInfo.build(result);
}
@ -335,18 +347,22 @@ public class PsCustomInfoServiceImpl implements IPsCustomInfoService {
/**
* 客户档案查询列表
* @param type 类型 1客户档案 2已完成客户
* @param name
* @param mobile
* @param companyName
* @return
*/
public TableDataInfo<PsCustomerRecordVo> getCustomerRecordList(String name, String mobile, String companyName, PageQuery pageQuery){
public TableDataInfo<PsCustomerRecordVo> getCustomerRecordList(Integer type,String name, String mobile,
String companyName, PageQuery pageQuery){
QueryWrapper<PsCustomInfo> qw = Wrappers.query();
qw.like(StringUtils.isNotBlank(companyName), "com.company_name", companyName);
qw.like(StringUtils.isNotBlank(name), "custom.custom_name", name);
qw.like(StringUtils.isNotBlank(mobile), "custom.custom_mobile", mobile);
qw.notIn("con.contract_status", ContractStatusEnum.isValid());
if(type !=null && type == 2){
qw.eq("con.contract_status", ContractStatusEnum.SUCCESS.getCode());
}
Page<PsCustomerRecordVo> list = baseMapper.selectPageCustomerRecordList(pageQuery.build(), qw);
return TableDataInfo.build(list);
}

View File

@ -329,8 +329,9 @@ public class PsTaskServiceImpl implements IPsTaskService {
private QueryWrapper<PsTaskMain> buildQueryWrapper(PsTaskQueryBo bo) {
QueryWrapper<PsTaskMain> lqw = new QueryWrapper<PsTaskMain>();
lqw.eq("del_flag","0");
lqw.ne("task_status",TaskStatusEnum.CANCEL.getCode());
lqw.eq("main.del_flag","0");
lqw.ne("main.task_status",TaskStatusEnum.CANCEL.getCode());
lqw.eq(StringUtils.isNotBlank(bo.getType()),"main.task_type",bo.getType());
lqw.like(StringUtils.isNotBlank(bo.getCompanyName()), "com.company_name", bo.getCompanyName());//公司地址
lqw.like(StringUtils.isNotBlank(bo.getCustomerNum()), "com.customer_num", bo.getCustomerNum());//纳税人识别号
lqw.eq(StringUtils.isNotBlank(bo.getCustomerCert()), "com.customer_cert", bo.getCustomerCert());//纳税人资格
@ -360,9 +361,46 @@ public class PsTaskServiceImpl implements IPsTaskService {
}
SysOssVo vo = ossService.upload(file);
info.setInvoice(vo.getOssId()+"");
baseMapper.updateById(info);
}
/**
* 任务暂停
* @param id 任务主表id
*/
public void pause( Long id){
PsTaskMain info = baseMapper.selectById(id);
if(!StringUtils.equals(info.getTaskStatus(),TaskStatusEnum.ING.getCode())){
throw new ServiceException("只有进行中的任务可以暂停");
}
PsTaskMain main = new PsTaskMain();
main.setId(id);
main.setTaskStatus(TaskStatusEnum.PAUSE.getCode());
baseMapper.updateById(main);
//只有进行中可以暂停
appointMapper.update(Wrappers.<PsTaskAppoint>lambdaUpdate()
.set(PsTaskAppoint::getAppointStatus,AppointStatusEnum.PAUSE.getCode())
.eq(PsTaskAppoint::getTaskId,id).eq(PsTaskAppoint::getAppointStatus,AppointStatusEnum.ING.getCode()));
}
/**
* 任务恢复
* @param id 任务主表id
*/
public void recover( Long id){
PsTaskMain info = baseMapper.selectById(id);
if(!StringUtils.equals(info.getTaskStatus(),TaskStatusEnum.PAUSE.getCode())){
throw new ServiceException("只有暂停中的任务可以恢复");
}
PsTaskMain main = new PsTaskMain();
main.setId(id);
main.setTaskStatus(TaskStatusEnum.ING.getCode());
baseMapper.updateById(main);
//只有暂停可以恢复
appointMapper.update(Wrappers.<PsTaskAppoint>lambdaUpdate()
.set(PsTaskAppoint::getAppointStatus,AppointStatusEnum.ING.getCode())
.eq(PsTaskAppoint::getTaskId,id).eq(PsTaskAppoint::getAppointStatus,AppointStatusEnum.PAUSE.getCode()));
}
// /**
// * 查询主任务
// *

View File

@ -2,6 +2,7 @@ package com.pusong.system.controller.system;
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.validate.QueryGroup;
@ -86,6 +87,7 @@ public class SysOssController extends BaseController {
*
* @param ossId OSS对象ID
*/
@SaIgnore
@SaCheckPermission("system:oss:download")
@GetMapping("/download/{ossId}")
public void download(@PathVariable Long ossId, HttpServletResponse response) throws IOException {