任务审批

This commit is contained in:
1073413548 2024-08-27 14:31:22 +08:00
parent 90c7c0a5b4
commit 016b2e392a
18 changed files with 73 additions and 22 deletions

View File

@ -56,6 +56,7 @@ public class PsApproverRecordController extends BaseController {
* @return
*/
@SaCheckPermission("business:approverRecord:list")
@RepeatSubmit()
@GetMapping("/approver")
public R<Void> approver(@NotBlank(message = "操作类型不能为空") String operate,
@NotNull(message = "数据id不能为空") Long id, String desc) {

View File

@ -69,7 +69,6 @@ public class PsContractInfoController extends BaseController {
*/
@SaCheckPermission("business:customInfo:addContract")
@Log(title = "预览合同", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping("/preview")
public R<Long> preview( @RequestBody PsContractInfoBo bo) {
return R.ok(psContractInfoService.preview(bo));
@ -99,7 +98,6 @@ public class PsContractInfoController extends BaseController {
*/
@SaCheckPermission("business:contractInfo:list")
@Log(title = "根据合同编码查询合同信息", businessType = BusinessType.INSERT)
@RepeatSubmit()
@GetMapping("/queryContractByCode")
public R<PsContractInfoVo> queryContractByCode(@NotBlank String contractCode) {
return R.ok(psContractInfoService.queryContractByCode(contractCode));
@ -143,7 +141,6 @@ public class PsContractInfoController extends BaseController {
*/
@SaCheckPermission("business:contractInfo:list")
@Log(title = "根据合同编码查询合同信息", businessType = BusinessType.INSERT)
@RepeatSubmit()
@GetMapping("/queryServiceByCode")
public R<List<PsContractBusinessVo>> queryServiceByCode(@NotBlank String contractCode) {
return R.ok(businessService.selectBusinessList(List.of(contractCode)));
@ -171,6 +168,7 @@ public class PsContractInfoController extends BaseController {
* @param businessProject 服务项目
* @return
*/
@RepeatSubmit()
@Log(title = "免费派单")
@SaCheckPermission("business:task:list")
@GetMapping("/freeWork")

View File

@ -48,6 +48,7 @@ public class PsContractOperateController extends BaseController {
*
* @param contractCode 合同编码
*/
@RepeatSubmit()
@SaCheckPermission("business:contractOperate:sign")
@GetMapping("/sign")
public R<Void> getInfo(@NotBlank String contractCode ) {
@ -58,6 +59,7 @@ public class PsContractOperateController extends BaseController {
/**
* 合同添加回款记录
*/
@RepeatSubmit()
@SaCheckPermission("business:contractOperate:addPayRecord")
@PostMapping(value = "/addPayRecord", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public R<Void> addPayRecord(@RequestPart("files") List<MultipartFile> files,
@ -69,6 +71,7 @@ public class PsContractOperateController extends BaseController {
/**
* 合同添加退款记录
*/
@RepeatSubmit()
@SaCheckPermission("business:contractOperate:addReturnRecord")
@PostMapping(value = "/addReturnRecord", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public R<Void> addReturnRecord(@RequestPart(value = "files" ,required = false) List<MultipartFile> files,
@ -80,6 +83,7 @@ public class PsContractOperateController extends BaseController {
/**
* 回传合同
*/
@RepeatSubmit()
@SaCheckPermission("business:contractOperate:rollBack")
@PostMapping(value = "/rollBack", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public R<Void> rollBack(@RequestPart("file") MultipartFile file,@NotBlank String contractCode )throws Exception {
@ -90,6 +94,7 @@ public class PsContractOperateController extends BaseController {
/**
* 确认单
*/
@RepeatSubmit()
@SaCheckPermission("business:contractOperate:confirm")
@PostMapping(value = "/confirm", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public R<Void> confirm(@RequestPart("file") MultipartFile file,@NotBlank String contractCode )throws Exception {

View File

@ -78,6 +78,7 @@ public class PsContractPayController extends BaseController {
* @param id 任务id
* @return
*/
@RepeatSubmit()
@SaCheckPermission("business:contractPay:query")
@PostMapping(value = "/refundFinish",consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public R<Void> refundFinish(@RequestPart("files") List<MultipartFile> files, @NotNull Long id) {

View File

@ -103,6 +103,7 @@ public class PsCustomController extends BaseController {
* @param id 主键串
* @param type 操作类型 1移入公海 2拉黑
*/
@RepeatSubmit()
@SaCheckPermission("business:customInfo:edit")
@Log(title = "客户状态变更操作", businessType = BusinessType.UPDATE)
@GetMapping("/updateStatus")
@ -121,11 +122,12 @@ public class PsCustomController extends BaseController {
* @param companyName 公司名
* @return
*/
@RepeatSubmit()
@SaCheckPermission("business:customInfo:record")
@Log(title = "客户档案" )
@GetMapping("/record")
public TableDataInfo<PsCustomerRecordVo> record(Integer type, String name, String mobile, String companyName, PageQuery pageQuery) {
return psCustomInfoService.getCustomerRecordList(type,name,mobile,companyName,pageQuery);
public TableDataInfo<PsCustomerRecordVo> record(@RequestParam(required = false) Long id,Integer type, String name, String mobile, String companyName, PageQuery pageQuery) {
return psCustomInfoService.getCustomerRecordList(id,type,name,mobile,companyName,pageQuery);
}

View File

@ -39,6 +39,7 @@ public class PsHomeController extends BaseController {
/**
* 查询登陆人下所有的客户名称和id
*/
@RepeatSubmit()
@SaCheckPermission("business:customInfo:list")
@GetMapping("/listByLoginUser")
public R<List<PsCustomInfoVo>> listByLoginUser() {

View File

@ -58,8 +58,9 @@ public class PsSalaryConfigController extends BaseController {
}
/**
* 新增提成配置
* 新增/修改提成配置
*/
@RepeatSubmit()
@Log(title = "新增提成配置")
@SaCheckPermission("business:salaryConfig:add")
@PostMapping("/add")

View File

@ -8,8 +8,10 @@ import com.pusong.business.domain.vo.PsTaskAppointVo;
import com.pusong.business.domain.vo.TaskPlanVo;
import com.pusong.common.core.domain.R;
import com.pusong.common.core.validate.QueryGroup;
import com.pusong.common.idempotent.annotation.RepeatSubmit;
import com.pusong.common.log.annotation.Log;
import com.pusong.common.log.enums.BusinessType;
import com.pusong.common.web.core.BaseController;
import jakarta.validation.constraints.NotBlank;
import lombok.RequiredArgsConstructor;
import cn.dev33.satoken.annotation.SaCheckPermission;
@ -17,7 +19,6 @@ 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;
import com.pusong.common.mybatis.core.page.PageQuery;
import com.pusong.business.domain.vo.PsTaskMainVo;
import com.pusong.business.service.IPsTaskService;
@ -86,6 +87,7 @@ public class PsTaskController extends BaseController {
@Log(title = "上传资料和公司信息")
@SaCheckPermission("business:task:list")
@PostMapping("/saveInfo")
@RepeatSubmit()
public R<Void> saveInfo(@Validated @RequestBody MediaCompanySaveBo save) {
psTaskMainService.saveInfo(save);
return R.ok();
@ -98,6 +100,7 @@ public class PsTaskController extends BaseController {
@Log(title = "任务委派")
@SaCheckPermission("business:task:list")
@PostMapping("/appoint")
@RepeatSubmit()
public R<Void> appoint(@Validated @RequestBody AppointBo appointBo) {
psTaskMainService.appoint(appointBo);
return R.ok();
@ -108,6 +111,7 @@ public class PsTaskController extends BaseController {
* @param id 主任务id
* @return
*/
@RepeatSubmit()
@Log(title = "主任务完成")
@SaCheckPermission("business:task:list")
@GetMapping("/mainFinish")
@ -125,6 +129,7 @@ public class PsTaskController extends BaseController {
@Log(title = "子任务完成")
@SaCheckPermission("business:task:list")
@GetMapping("/childFinish")
@RepeatSubmit()
public R<Void> childFinish(@NotNull Long id,String desc) {
psTaskMainService.finishChild(id,desc);
return R.ok();
@ -151,6 +156,7 @@ public class PsTaskController extends BaseController {
@Log(title = "任务改派")
@SaCheckPermission("business:task:list")
@GetMapping("/reset")
@RepeatSubmit()
public R<Void> taskReset(@NotNull Long id,@NotNull Long executorId) {
psTaskMainService.taskReset(id, executorId);
return R.ok();
@ -165,6 +171,7 @@ public class PsTaskController extends BaseController {
@Log(title = "免费工单任务作废")
@SaCheckPermission("business:task:list")
@GetMapping("/cancel")
@RepeatSubmit()
public R<Void> taskReset(@NotNull("任务id不能为空") Long id,@NotNull("作废原因不能为空") String desc) {
psTaskMainService.cancel(id,desc);
return R.ok();
@ -179,6 +186,7 @@ public class PsTaskController extends BaseController {
@Log(title = "上传发票")
@SaCheckPermission("business:task:list")
@PostMapping(value = "/invoice", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
@RepeatSubmit()
public R<Void> taskReset(@RequestPart("file") MultipartFile file, @NotNull Long id) {
psTaskMainService.invoice(file,id);
return R.ok();
@ -192,6 +200,7 @@ public class PsTaskController extends BaseController {
@Log(title = "任务暂停")
@SaCheckPermission("business:task:list")
@GetMapping("/pause")
@RepeatSubmit()
public R<Void> pause( @NotNull Long id) {
psTaskMainService.pause(id);
return R.ok();
@ -205,6 +214,7 @@ public class PsTaskController extends BaseController {
@Log(title = "任务恢复")
@SaCheckPermission("business:task:list")
@GetMapping("/recover")
@RepeatSubmit()
public R<Void> recover( @NotNull Long id) {
psTaskMainService.recover(id);
return R.ok();

View File

@ -7,6 +7,7 @@ import com.pusong.business.domain.vo.PsCustomInfoVo;
import com.pusong.business.service.IPsApproverRecordService;
import com.pusong.business.service.IServiceConfigService;
import com.pusong.common.core.domain.R;
import com.pusong.common.idempotent.annotation.RepeatSubmit;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@ -33,6 +34,7 @@ public class ServiceConfigController {
/**
* 新增服务配置
*/
@RepeatSubmit()
@PostMapping("/add")
public R<Void> add(@RequestBody DicDataBo bo) {
configService.add(bo);
@ -41,6 +43,7 @@ public class ServiceConfigController {
/**
* 修改服务配置
*/
@RepeatSubmit()
@PutMapping("/edit")
public R<Void> edit(@RequestBody DicDataBo bo) {
configService.edit(bo);
@ -50,6 +53,7 @@ public class ServiceConfigController {
/**
* 删除服务配置
*/
@RepeatSubmit()
@DeleteMapping("/delete")
public R<Void> delete(Long dictCode) {
configService.delete(dictCode);
@ -59,7 +63,7 @@ public class ServiceConfigController {
/**
* 根据合同编码查询资料配置信息
*/
@PostMapping("/getByContractCode")
@GetMapping("/getByContractCode")
public R<List<String>> getByContractCode(String contractCode) {
return R.ok(configService.getByContractCode(contractCode));
}

View File

@ -150,5 +150,10 @@ public class PsContractInfo extends TenantEntity {
* 确认单
*/
private Long confirmOssid;
/**
* 任务派单日期
*/
private Date startDate;
}

View File

@ -62,7 +62,10 @@ public class PsApproverRecordVo implements Serializable {
* 审批业务类型
*/
private String businessType;
/**
* 关联业务id
*/
private String businessId;
/**
* 申请日期
*/
@ -94,10 +97,6 @@ public class PsApproverRecordVo implements Serializable {
* 修改后数据
*/
private String updateData;
/**
* 修改后数据(object类型)
*/
private JSONObject updateDataObject;
/**
* 创建者
*/

View File

@ -134,4 +134,21 @@ public class PsCustomerRecordVo implements Serializable {
* 合同总金额
*/
private BigDecimal contractAmount;
/**
* 确认单
*/
private String confirmOssid;
/**
* 客户状态
*/
private String customStatus;
/**
* 渠道
*/
private String customSource;
/**
* 介绍人
*/
private String customIntroducer;
}

View File

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

View File

@ -92,12 +92,10 @@ public abstract class ApproverAbstractServiceImpl implements ApproverService {
res.getRecords().forEach(item->{
item.setResidualMoney(item.getContractAmount().subtract(item.getPayMoney()));
//装填回款周期
List<PsContractPayVo> payList = queryListByContractCode(bo.getBusinessId(),null, PayStatusEnum.SUCCESS);
List<PsContractPayVo> payList = queryListByContractCode(item.getBusinessId(),"1", PayStatusEnum.SUCCESS);
if(CollectionUtils.isNotEmpty(payList)){
item.setPeriod(DateUtils.calWorkDate(payList.get(0).getPayDate(),payList.get(payList.size()-1).getPayDate()) + 1);
item.setUpdateDataObject(JSON.parseObject(item.getUpdateData()));
}
});
}
return res;

View File

@ -588,7 +588,7 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
throw new ServiceException("合同已回传,不可修改");
}
//2.已回款之后的合同 必有修改合同说明审批表的字段
if(ContractStatusEnum.isReturn(srcVo.getContractStatus()) && StringUtil.isNotBlank(updateBo.getUpdateDesc())){
if(ContractStatusEnum.isReturn(srcVo.getContractStatus()) && StringUtil.isBlank(updateBo.getUpdateDesc())){
throw new ServiceException("合同已回款,请输入修改说明");
}
//3.已完成合同不可修改

View File

@ -353,10 +353,11 @@ public class PsCustomInfoServiceImpl implements IPsCustomInfoService {
* @param companyName
* @return
*/
public TableDataInfo<PsCustomerRecordVo> getCustomerRecordList(Integer type,String name, String mobile,
public TableDataInfo<PsCustomerRecordVo> getCustomerRecordList(Long id,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.eq(id != null,"custom.id",id);
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());

View File

@ -113,9 +113,11 @@ public class PsTaskServiceImpl implements IPsTaskService {
* @return 主任务分页列表
*/
public TableDataInfo<PsTaskMainVo> queryChildPageList(PsTaskQueryBo bo, PageQuery pageQuery){
Long id = bo.getId(); //此时是子任务的id
bo.setId(null);
QueryWrapper<PsTaskMain> lqw = buildQueryWrapper(bo);
lqw.eq("appo.appoint_type",bo.getAppointType());
lqw.eq(bo.getId() != null,"appo.id",bo.getId());
lqw.eq(id != null,"appo.id",id);
Page<PsTaskMainVo> page = baseMapper.queryChildTaskPageList(pageQuery.build(), lqw);
for (PsTaskMainVo vo : page.getRecords()) {
if(vo.getStartDate() != null){
@ -284,6 +286,9 @@ public class PsTaskServiceImpl implements IPsTaskService {
update.setTaskStatus(TaskStatusEnum.ING.getCode());
update.setStartDate(new Date());
baseMapper.updateById(update);
// contractInfoMapper.update(Wrappers.<PsContractInfo>lambdaUpdate().set(PsContractInfo::getContractCode).eq(PsContractInfo::getContractCode,mainTask.getContractCode()));
}
PsTaskAppoint psTaskAppoint = new PsTaskAppoint();
psTaskAppoint.setAppointStatus(AppointStatusEnum.ING.getCode());

View File

@ -8,7 +8,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<sql id="queryCustomerList" >
SELECT info.*
, usr.nick_name as custom_manager_name
,psinfo.custom_introducer as custom_introducer_name,
,psinfo.custom_name as custom_introducer_name,
EXISTS(SELECT * FROM ps_contract_info coninfo WHERE coninfo.custom_id = info.id and coninfo.contract_status != '10') have_contract
FROM ps_custom_info info
left join sys_user usr on info.custom_manager = usr.user_id
@ -35,6 +35,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
custom.id,
custom.create_time,
custom.custom_status,
custom.custom_source,
(select pci.custom_name from ps_custom_info pci where pci.id = custom.custom_introducer limit 0,1) custom_introducer,
con.contract_code,
custom.custom_name,
custom.custom_mobile,
@ -55,7 +57,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
con.sign_desc,
con.contract_amount,
con.finish_date,
(select par.approver_status from ps_approver_record par where par.contract_code = con.contract_code and business_type = 'free' limit 0,1) approver_status
con.confirm_ossid,
(select par.approver_status from ps_approver_record par where par.contract_code = con.contract_code and business_type = 'free' order by id desc limit 0,1) approver_status
from
ps_custom_info custom
left join