diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsCompanyInfoController.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsCompanyInfoController.java index a615db7..73292fa 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsCompanyInfoController.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsCompanyInfoController.java @@ -4,8 +4,10 @@ import java.util.List; import cn.dev33.satoken.annotation.SaIgnore; import com.pusong.business.domain.bo.PsCompanyQueryBo; +import com.pusong.business.domain.bo.PsCustomRecordQueryBo; import com.pusong.business.domain.vo.PsCompanyQueryVo; import com.pusong.business.domain.vo.PsContractInfoVo; +import com.pusong.business.domain.vo.PsCustomerRecordVo; import com.pusong.common.core.validate.QueryGroup; import lombok.RequiredArgsConstructor; import jakarta.servlet.http.HttpServletResponse; @@ -61,6 +63,16 @@ public class PsCompanyInfoController extends BaseController { return psCompanyInfoService.queryPageList(bo,pageQuery); } + /** + * 服务公司列表 + */ + @SaCheckPermission("business:customInfo:list") + @Log(title = "服务公司列表" ) + @GetMapping("/serviceList") + public TableDataInfo serviceList(PsCompanyQueryBo queryBo, PageQuery pageQuery) { + return psCompanyInfoService.queryServiceCompany(queryBo, pageQuery); + } + /** * 新增公司信息 diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsContractInfoController.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsContractInfoController.java index c14bd48..368b0b5 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsContractInfoController.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsContractInfoController.java @@ -57,13 +57,6 @@ public class PsContractInfoController extends BaseController { @RepeatSubmit() @PostMapping("/create") public R add(@Validated(AddGroup.class) @RequestBody PsContractInfoBo bo) { - if (bo.getFirstPartyType() == PsContractInfoBo.FIRSTPARTYTYPE.INDIVIDUALS.getType()){ - bo.setContactPersonName(bo.getCompanyInfoBo().getLegalPersonName()); - bo.setContactPersonPhone(bo.getCompanyInfoBo().getLegalPersonPhone()); - bo.setContactPersonIdcard(bo.getCompanyInfoBo().getLegalPersonIdcard()); - bo.setCompanyInfoBo(null); - } - return R.ok(psContractInfoService.createContract(bo,2)); } /** diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsCustomController.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsCustomController.java index 1ed9f6d..da00925 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsCustomController.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsCustomController.java @@ -136,7 +136,7 @@ public class PsCustomController extends BaseController { /** - * 已完成客户 + * 已完成客户,, 废弃 * @param queryBo 查询 * @return */ @@ -148,7 +148,6 @@ public class PsCustomController extends BaseController { } - /** * 移出黑名单 * @param customerId 客户id diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsTaskController.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsTaskController.java index aa37fd9..6005311 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsTaskController.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsTaskController.java @@ -179,7 +179,7 @@ public class PsTaskController extends BaseController { @GetMapping("/cancel") @RepeatSubmit() public R taskReset(@NotNull("任务id不能为空") Long id,@NotNull("作废原因不能为空") String desc) { - psTaskMainService.cancel(id,desc); + psTaskMainService.cancel(id, desc); return R.ok(); } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/PsTaskMain.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/PsTaskMain.java index e1f126f..665f667 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/PsTaskMain.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/PsTaskMain.java @@ -93,4 +93,9 @@ public class PsTaskMain extends TenantEntity { * 服务公司id */ private Long serviceCompanyId; + + /** + * 备注:作废备注 + */ + private String comment; } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/AppointBo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/AppointBo.java index 4f4aecc..1fc5286 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/AppointBo.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/AppointBo.java @@ -32,7 +32,7 @@ public class AppointBo { private String appointType; /** - * 任务委派类型(1内勤,2外勤,3特勤) + * 任务说明 */ private String taskContentDesc; } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsCompanyQueryBo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsCompanyQueryBo.java index db28047..d77f14f 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsCompanyQueryBo.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsCompanyQueryBo.java @@ -48,4 +48,14 @@ public class PsCompanyQueryBo { * 介绍人名称 */ private String customIntroducer; + + /** + * 服务状态 + */ + private String serviceStatus; + /** + * 跟进人员 + */ + private String followUser; + } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsCompanyInfoVo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsCompanyInfoVo.java index 243a182..455f13a 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsCompanyInfoVo.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsCompanyInfoVo.java @@ -10,6 +10,9 @@ 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 com.pusong.system.domain.SysUser; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; @@ -49,7 +52,7 @@ public class PsCompanyInfoVo implements Serializable { private String companyName; /** - * 公司地址 + * 公司地址,所属区域 */ private String companyAdress; @@ -153,7 +156,6 @@ public class PsCompanyInfoVo implements Serializable { */ private List businessVoList; - @JsonFormat(pattern = "yyyy-MM-dd") private Date startServiceDate; @@ -167,4 +169,34 @@ public class PsCompanyInfoVo implements Serializable { * 是否老账新接 */ private String isOld; + + /** + * 跟进人员 + */ + private List followUsers; + + /** + * 客户姓名 + */ + private String customName; + /** + * 客户手机号 + */ + private String customMobile; + + /** + * 销售经理 + */ + @Translation(type = TransConstant.USER_ID_TO_NICKNAME) + private Long customManager; + + /** + * 服务状态 + */ + private Integer serviceStatus; + + /** + * 服务状态 + */ + private String terminationReason; } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsTaskAppointVo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsTaskAppointVo.java index fa29d4e..ff13df6 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsTaskAppointVo.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsTaskAppointVo.java @@ -60,11 +60,16 @@ public class PsTaskAppointVo implements Serializable { /** * 任务执行者 */ - @Translation(type = TransConstant.USER_ID_TO_NICKNAME,mapper = "executor") + @Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "executor") private String executorName; /** * 任务备注 */ private String taskDesc; + + /** + * 工作说明 + */ + private String taskContentDesc; } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsTaskMainVo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsTaskMainVo.java index 89ebbdf..78c93b6 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsTaskMainVo.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsTaskMainVo.java @@ -2,6 +2,7 @@ package com.pusong.business.domain.vo; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; +import com.pusong.business.domain.PsTaskAppoint; import com.pusong.business.domain.PsTaskMain; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.pusong.common.excel.annotation.ExcelDictFormat; @@ -130,12 +131,17 @@ public class PsTaskMainVo implements Serializable { */ private String secAppo; /** - * 任务备注 + * 任务备注,子任务里的备注,queryChildTaskPageList查询的时候存储到这个字段了 */ private String taskDesc; /** - * 任务备注 + * 任务备注,存储了作废原因 + */ + private String comment; + + /** + * 任务备注,子任务里的工作内容描述,queryChildTaskPageList查询的时候存储到这个字段了 */ private String taskContentDesc; @@ -148,5 +154,18 @@ public class PsTaskMainVo implements Serializable { * 发票信息 */ private PsInvoiceVo psInvoiceVo; + + /** + * 服务公司信息 + */ + private PsCompanyInfoVo psCompanySerivceVo; + + + /** + * 服务公司id + */ + private Long serviceCompanyId; + + private List psTaskAppointVoList; } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsCompanyInfoMapper.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsCompanyInfoMapper.java index 1e25709..57e9e61 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsCompanyInfoMapper.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsCompanyInfoMapper.java @@ -24,4 +24,6 @@ public interface PsCompanyInfoMapper extends BaseMapperPlus selectPageList(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper queryWrapper); List selectServiceCompanyList(@Param(Constants.WRAPPER) Wrapper queryWrapper); + + } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsCompanyInfoService.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsCompanyInfoService.java index e887060..a49af01 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsCompanyInfoService.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsCompanyInfoService.java @@ -41,6 +41,9 @@ public interface IPsCompanyInfoService { */ TableDataInfo queryPageList(PsCompanyQueryBo bo, PageQuery pageQuery); + TableDataInfo queryServiceCompany(PsCompanyQueryBo bo, PageQuery pageQuery); + + /** * 新增公司信息 * diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/TaskCancellaApproverServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/TaskCancellaApproverServiceImpl.java index 85e7a23..289a5a9 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/TaskCancellaApproverServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/TaskCancellaApproverServiceImpl.java @@ -45,6 +45,7 @@ public class TaskCancellaApproverServiceImpl extends ApproverAbstractServiceImpl //主任务作废 PsTaskMain info = taskMainMapper.selectById(psApproverRecord.getBusinessId()); info.setTaskStatus(TaskStatusEnum.CANCEL.getCode()); + info.setComment(psApproverRecord.getApplyDesc()); taskMainMapper.updateById(info); List list = taskAppointMapper.selectList(Wrappers.lambdaQuery().eq(PsTaskAppoint::getTaskId, info.getId())); diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsCompanyInfoServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsCompanyInfoServiceImpl.java index 6c9281e..a8b8b3f 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsCompanyInfoServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsCompanyInfoServiceImpl.java @@ -81,13 +81,30 @@ public class PsCompanyInfoServiceImpl implements IPsCompanyInfoService { lqw.like(bo.getCustomName() != null,"cus.custom_name",bo.getCustomName()); lqw.like(bo.getCustomMobile() != null,"cus.custom_mobile",bo.getCustomMobile()); lqw.like(bo.getCompanyName() != null,"com.company_name",bo.getCompanyName()); + lqw.like(bo.getCompanyName() != null,"com.company_name",bo.getCompanyName()); lqw.like(bo.getCustomIntroducer() != null,"cusi.custom_name",bo.getCustomIntroducer()); Page result = baseMapper.selectPageList(pageQuery.build(), lqw); - return TableDataInfo.build(result); - } + /** + * 查询符合条件的公司信息列表 + * + * @param bo 查询条件 + * @return 公司信息列表 + */ + public TableDataInfo queryServiceCompany(PsCompanyQueryBo bo, PageQuery pageQuery){ + QueryWrapper lqw = Wrappers.query(); + lqw.exists(StringUtils.isNotBlank(bo.getCustomManagerName()),"select 1 from sys_user su where su.user_id = cus.custom_manager and su.nick_name like '%"+bo.getCustomManagerName()+"%'"); + lqw.eq(bo.getId() != null,"com.id",bo.getId()); + lqw.like(bo.getCustomName() != null,"cus.custom_name",bo.getCustomName()); + lqw.like(bo.getCustomMobile() != null,"cus.custom_mobile",bo.getCustomMobile()); + lqw.like(bo.getCompanyName() != null,"com.company_name",bo.getCompanyName()); + lqw.eq(bo.getServiceStatus() != null,"com.service_status",bo.getServiceStatus()); + lqw.exists(StringUtils.isNotBlank(bo.getFollowUser()),"select 1 from sys_user fsu where fsu.user_id = cf.user_id and fsu.nick_name like '%"+bo.getFollowUser()+"%'"); + Page result = baseMapper.selectPageList(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } private LambdaQueryWrapper buildQueryWrapper(PsCompanyInfoBo bo) { LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); lqw.eq(bo.getId() != null, PsCompanyInfo::getId, bo.getId()); @@ -201,4 +218,6 @@ public class PsCompanyInfoServiceImpl implements IPsCompanyInfoService { } return list; } + + } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsContractInfoServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsContractInfoServiceImpl.java index 840f107..56f24a2 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsContractInfoServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsContractInfoServiceImpl.java @@ -95,6 +95,13 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService { @Override @Transactional//开启事务 public Long createContract(PsContractInfoBo bo, Integer type) { + if (bo.getFirstPartyType() == PsContractInfoBo.FIRSTPARTYTYPE.INDIVIDUALS.getType()){ + bo.setContactPersonName(bo.getCompanyInfoBo().getLegalPersonName()); + bo.setContactPersonPhone(bo.getCompanyInfoBo().getLegalPersonPhone()); + bo.setContactPersonIdcard(bo.getCompanyInfoBo().getLegalPersonIdcard()); +// bo.setCompanyInfoBo(null); + } + //1校验 PsContractInfo add = validEntity(bo, UserConstants.YES); diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsTaskServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsTaskServiceImpl.java index 14e24a1..b1803bd 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsTaskServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsTaskServiceImpl.java @@ -118,7 +118,11 @@ public class PsTaskServiceImpl implements IPsTaskService { vo.setNumOfDat(DateUtils.calWorkDate(vo.getStartDate(),new Date())); } //任务作废审批 - vo.setTaskStatusDesc(approverRecordService.getLastFail(vo.getId()+"",null,List.of(ApproverTypeEnum.TASKCANCE.getCode()))); + vo.setTaskStatusDesc(approverRecordService.getLastFail(vo.getId() + "",null,List.of(ApproverTypeEnum.TASKCANCE.getCode()))); + + //装填服务公司信息 + PsCompanyInfoVo serviceCompany = companyInfoService.queryById(vo.getServiceCompanyId()); + vo.setPsCompanySerivceVo(serviceCompany); } return TableDataInfo.build(page); } @@ -367,9 +371,11 @@ public class PsTaskServiceImpl implements IPsTaskService { if(!AppointStatusEnum.canFinish(appoint.getAppointStatus())){ throw new ServiceException("此任务无法执行此操作,请刷新页面后重新操作"); } - ApproverService service = approverContainer.getService(ApproverTypeEnum.TASKFINISH.getCode()); - service.apply(id+"",appoint.getContractCode(),desc,appoint.getAppointType()); - appoint.setAppointStatus(AppointStatusEnum.OA.getCode()); +// ApproverService service = approverContainer.getService(ApproverTypeEnum.TASKFINISH.getCode()); +// service.apply(id+"",appoint.getContractCode(),desc,appoint.getAppointType()); +// appoint.setAppointStatus(AppointStatusEnum.OA.getCode()); + appoint.setAppointStatus(TaskStatusEnum.AppointStatusEnum.FINISH.getCode()); + appoint.setFinishDate(new Date()); appoint.setTaskDesc(desc); appointMapper.updateById(appoint); } @@ -411,14 +417,14 @@ public class PsTaskServiceImpl implements IPsTaskService { * @param id 任务主表id * @param desc 作废原因 */ - public void cancel(Long id,String desc){ + public void cancel(Long id, String desc){ PsTaskMain info = baseMapper.selectById(id); if(!StringUtils.equals(TaskTypeEnum.FREE.getCode(),info.getTaskType())){ throw new ServiceException("只有免费工单的任务可以作废"); } //发起审批 ApproverService service = approverContainer.getService(ApproverTypeEnum.TASKCANCE.getCode()); - service.apply(id+"",info.getContractCode(),null,info.getTaskStatus()); + service.apply(id+"", info.getContractCode(),desc, info.getTaskStatus()); //修改状态为审批中 info.setTaskStatus(TaskStatusEnum.CANCELAPPO.getCode()); baseMapper.updateById(info); diff --git a/pusong-modules/pusong-business/src/main/resources/mapper/business/PsCompanyInfoMapper.xml b/pusong-modules/pusong-business/src/main/resources/mapper/business/PsCompanyInfoMapper.xml index 4cef65f..e3217e5 100644 --- a/pusong-modules/pusong-business/src/main/resources/mapper/business/PsCompanyInfoMapper.xml +++ b/pusong-modules/pusong-business/src/main/resources/mapper/business/PsCompanyInfoMapper.xml @@ -11,26 +11,33 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + + + - + select + com.*, + cus.custom_manager, cus.custom_name, cus.custom_mobile, cusi.custom_name custom_introducer, - com.create_time + usr.user_id fu_user_id, + usr.nick_name fu_nick_name from ps_company_info com left join ps_custom_info cus on com.custom_id = cus.id left join ps_custom_info cusi on cus.custom_introducer = cusi.id - - ${ew.getCustomSqlSegment} + left join ps_company_follow cf on com.id = cf.company_id + left join sys_user usr on cf.user_id = usr.user_id + ${ew.getCustomSqlSegment} + + diff --git a/pusong-modules/pusong-business/src/main/resources/mapper/business/PsTaskMainMapper.xml b/pusong-modules/pusong-business/src/main/resources/mapper/business/PsTaskMainMapper.xml index c1af19b..df495c1 100644 --- a/pusong-modules/pusong-business/src/main/resources/mapper/business/PsTaskMainMapper.xml +++ b/pusong-modules/pusong-business/src/main/resources/mapper/business/PsTaskMainMapper.xml @@ -11,6 +11,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + @@ -22,6 +24,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" main.contract_code, main.invoice, main.extend, + main.comment, + main.service_company_id, con.is_proxy con_is_proxy, con.apply_date con_apply_date, con.is_due con_is_due, @@ -44,6 +48,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" cus.id cus_id, cus.custom_name cus_custom_name , cus.custom_mobile cus_custom_mobile, + appoint.executor appoint_executor, + appoint.task_desc appoint_task_desc, + appoint.task_content_desc appoint_task_content_desc, + appoint.appoint_type appoint_appoint_type, + appoint.appoint_status appoint_appoint_status, (select pta.id from ps_task_appoint pta where pta.task_id=main.id and pta.appoint_type=1 and pta.appoint_status != '50' and pta.del_flag = '0' order by id desc limit 0,1) as inAppo, (select pta.id from ps_task_appoint pta where pta.task_id=main.id and pta.appoint_type=2 and pta.appoint_status != '50' and pta.del_flag = '0' order by id desc limit 0,1) as outAppo, (select pta.id from ps_task_appoint pta where pta.task_id=main.id and pta.appoint_type=3 and pta.appoint_status != '50' and pta.del_flag = '0' order by id desc limit 0,1) as secAppo, @@ -51,15 +60,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" (select IFNULL(sum(money),0) from ps_contract_pay pay where pay.business_type =1 and pay.contract_code = main.contract_code and pay.pay_status = '1' ) + (select IFNULL(sum(money),0) from ps_contract_pay cpay where cpay.business_type =2 and cpay.contract_code = main.contract_code ) ) > 0 THEN '半款' ELSE '全款' END) as pay_stauts_desc, - (select GROUP_CONCAT(appoint.executor SEPARATOR ',') - from ps_task_appoint appoint where appoint.task_id = main.id and appoint.appoint_status != '50' and appoint.del_flag = '0') as executors, - (select GROUP_CONCAT(business.business_type SEPARATOR ',') - from ps_contract_business business where business.contract_code = con.contract_code and business.company_id = main.service_company_id and business.del_flag = '0') as business_type_name +-- (select GROUP_CONCAT(appoint.executor SEPARATOR ',') from ps_task_appoint appoint where appoint.task_id = main.id and appoint.appoint_status != '50' and appoint.del_flag = '0') as executors, +-- (select GROUP_CONCAT(appoint.task_desc SEPARATOR ',') from ps_task_appoint appoint where appoint.task_id = main.id and appoint.appoint_status != '50' and appoint.del_flag = '0') as taskDesc, + (select GROUP_CONCAT(business.business_type SEPARATOR ',') from ps_contract_business business where business.contract_code = con.contract_code and business.company_id = main.service_company_id and business.del_flag = '0') as business_type_name from ps_task_main main left join ps_contract_info con on main.contract_code = con.contract_code left join ps_company_info com on con.company_id = com.id left join ps_custom_info cus on con.custom_id = cus.id left join sys_user usr on con.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'