|
|
@@ -1,10 +1,14 @@
|
|
|
package cn.start.tz.module.pressure2.service.equippipescheduling;
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
+import cn.hutool.core.collection.ListUtil;
|
|
|
import cn.start.tz.framework.common.pojo.CommonResult;
|
|
|
import cn.start.tz.framework.ip.core.Area;
|
|
|
import cn.start.tz.framework.ip.core.utils.AreaUtils;
|
|
|
import cn.start.tz.framework.mybatis.core.query.LambdaQueryWrapperX;
|
|
|
+import cn.start.tz.module.pressure2.controller.admin.appointmentconfirmorder.vo.AppointmentSubmitVO;
|
|
|
+import cn.start.tz.module.pressure2.controller.admin.appointmentconfirmorder.vo.PipeAppointmentSubmitVO;
|
|
|
+import cn.start.tz.module.pressure2.controller.admin.appointmentconfirmorder.vo.SubmitTeamItemVO;
|
|
|
import cn.start.tz.module.pressure2.controller.admin.equipboilerscheduling.vo.*;
|
|
|
import cn.start.tz.module.pressure2.dal.dataobject.appointmentconfirmorder.AppointmentConfirmOrderDO;
|
|
|
import cn.start.tz.module.pressure2.dal.dataobject.equippipe.EquipPipeDO;
|
|
|
@@ -29,6 +33,7 @@ import cn.start.tz.module.pressure2.dal.mysql.pipeappointmentconfirmorderitem.Pi
|
|
|
import cn.start.tz.module.pressure2.dal.mysql.pipeappointmentconfirmorderitemdetail.PipeAppointmentConfirmOrderItemDetailMapper;
|
|
|
import cn.start.tz.module.pressure2.dal.mysql.pipeappointmentconfirmorderuser.PipeAppointmentConfirmOrderUserMapper;
|
|
|
import cn.start.tz.module.pressure2.service.appointmentconfirmorder.AppointmentConfirmOrderService;
|
|
|
+import cn.start.tz.module.pressure2.service.appointmentconfirmorder.PipeAppointmentConfirmOrderService;
|
|
|
import cn.start.tz.module.pressure2.service.equippipeschedulingcheck.EquipPipeSchedulingCheckService;
|
|
|
import cn.start.tz.module.pressure2.service.equippipeschedulingitem.EquipPipeSchedulingItemService;
|
|
|
import cn.start.tz.module.pressure2.util.MapUtils;
|
|
|
@@ -109,6 +114,10 @@ public class EquipPipeSchedulingServiceImpl extends ServiceImpl<EquipPipeSchedul
|
|
|
@Lazy
|
|
|
private AppointmentConfirmOrderService appointmentConfirmOrderService;
|
|
|
|
|
|
+ @Resource
|
|
|
+ @Lazy
|
|
|
+ private PipeAppointmentConfirmOrderService pipeAppointmentConfirmOrderServiceImpl;
|
|
|
+
|
|
|
@Resource
|
|
|
private EquipPipeSchedulingCheckService equipPipeSchedulingCheckService;
|
|
|
|
|
|
@@ -283,6 +292,7 @@ public class EquipPipeSchedulingServiceImpl extends ServiceImpl<EquipPipeSchedul
|
|
|
task.setPlanDate(taskVO.getDate());
|
|
|
task.setType(taskVO.getType());
|
|
|
task.setSource(source);
|
|
|
+ task.setHasOrderConfirm(taskVO.getHasOrderConfirm() == null || taskVO.getHasOrderConfirm());
|
|
|
if(!equipIdList.isEmpty()){
|
|
|
equipPipeSchedulingMapper.insert(task);
|
|
|
allList.add(task);
|
|
|
@@ -655,6 +665,9 @@ public class EquipPipeSchedulingServiceImpl extends ServiceImpl<EquipPipeSchedul
|
|
|
|
|
|
appointmentConfirmOrderDO.setUnitName(equipPipeDO.getUnitName());
|
|
|
appointmentConfirmOrderDO.setStatus(100);
|
|
|
+ if (!schedulingDO.getHasOrderConfirm()){
|
|
|
+ appointmentConfirmOrderDO.setStatus(200);
|
|
|
+ }
|
|
|
appointmentConfirmOrderDO.setSendType(100);
|
|
|
LocalDate warningDate = LocalDate.now().plusDays(30);
|
|
|
appointmentConfirmOrderDO.setWarningDate(warningDate);
|
|
|
@@ -746,6 +759,59 @@ public class EquipPipeSchedulingServiceImpl extends ServiceImpl<EquipPipeSchedul
|
|
|
equipPipeSchedulingCheckMapper.updateById(item);
|
|
|
});
|
|
|
|
|
|
+
|
|
|
+ // 不需要前台约检确认,自动生成受理单
|
|
|
+ if (!schedulingDO.getHasOrderConfirm()){
|
|
|
+ PipeAppointmentSubmitVO submitVO = new PipeAppointmentSubmitVO();
|
|
|
+ submitVO.setId(appointmentConfirmOrderDO.getId());
|
|
|
+ submitVO.setCheckType(appointmentConfirmOrderDO.getCheckType());
|
|
|
+ submitVO.setAppointmentDate(appointmentConfirmOrderDO.getAppointmentDate());
|
|
|
+
|
|
|
+ // 构建受理单人员列表
|
|
|
+ submitVO.setUserList(equipBoilerSchedulingUserDOS.stream().map(EquipPipeSchedulingUserDO::getUserId).toList());
|
|
|
+ submitVO.setUnitName(appointmentConfirmOrderDO.getUnitName());
|
|
|
+ submitVO.setEquipDistrict(appointmentConfirmOrderDO.getEquipDistrict());
|
|
|
+ submitVO.setEquipStreet(appointmentConfirmOrderDO.getEquipStreet());
|
|
|
+ submitVO.setUnitContact(appointmentConfirmOrderDO.getUnitContact());
|
|
|
+ submitVO.setUnitCode(appointmentConfirmOrderDO.getUnitCode());
|
|
|
+ submitVO.setUnitAddress(appointmentConfirmOrderDO.getUnitAddress());
|
|
|
+ submitVO.setUnitPhone(appointmentConfirmOrderDO.getUnitPhone());
|
|
|
+ submitVO.setZipCode(appointmentConfirmOrderDO.getZipCode());
|
|
|
+ submitVO.setMobile(appointmentConfirmOrderDO.getMobile());
|
|
|
+ submitVO.setRemark(appointmentConfirmOrderDO.getRemark());
|
|
|
+ submitVO.setEmail(appointmentConfirmOrderDO.getEmail());
|
|
|
+ submitVO.setIsAttach(appointmentConfirmOrderDO.getIsAttach());
|
|
|
+ submitVO.setSendType(appointmentConfirmOrderDO.getSendType());
|
|
|
+ submitVO.setVehicle(appointmentConfirmOrderDO.getVehicle());
|
|
|
+ submitVO.setFeeType(appointmentConfirmOrderDO.getFeeType());
|
|
|
+ submitVO.setAcceptType(appointmentConfirmOrderDO.getAcceptType());
|
|
|
+ submitVO.setActualAmount(appointmentConfirmOrderDO.getActualAmount());
|
|
|
+ submitVO.setServiceAmount(appointmentConfirmOrderDO.getServiceAmount());
|
|
|
+ submitVO.setShouldAmount(appointmentConfirmOrderDO.getShouldAmount());
|
|
|
+ submitVO.setReduceFee(appointmentConfirmOrderDO.getReduceFee());
|
|
|
+ submitVO.setDeptId(appointmentConfirmOrderDO.getDeptId());
|
|
|
+ submitVO.setOperator(appointmentConfirmOrderDO.getOperator());
|
|
|
+ submitVO.setSocialCreditCode(appointmentConfirmOrderDO.getSocialCreditCode());
|
|
|
+ submitVO.setRecipient(appointmentConfirmOrderDO.getRecipient());
|
|
|
+ submitVO.setRecipientPhone(appointmentConfirmOrderDO.getRecipientPhone());
|
|
|
+ submitVO.setRecipientEmail(appointmentConfirmOrderDO.getRecipientEmail());
|
|
|
+ submitVO.setUseUnitName(appointmentConfirmOrderDO.getUseUnitName());
|
|
|
+ submitVO.setUseUnitSocialCreditCode(appointmentConfirmOrderDO.getUseUnitSocialCreditCode());
|
|
|
+ submitVO.setUseUnitAddress(appointmentConfirmOrderDO.getUseUnitAddress());
|
|
|
+ submitVO.setUseUnitZipcode(appointmentConfirmOrderDO.getUseUnitZipcode());
|
|
|
+ submitVO.setUseUnitContact(appointmentConfirmOrderDO.getUseUnitContact());
|
|
|
+ submitVO.setUseUnitPhone(appointmentConfirmOrderDO.getUseUnitPhone());
|
|
|
+ submitVO.setDeptPhone(appointmentConfirmOrderDO.getDeptPhone());
|
|
|
+ submitVO.setFeeNature(appointmentConfirmOrderDO.getFeeNature());
|
|
|
+ submitVO.setFeeDate(appointmentConfirmOrderDO.getFeeDate());
|
|
|
+ submitVO.setPayerContact(appointmentConfirmOrderDO.getPayerContact());
|
|
|
+ submitVO.setPayerContactName(appointmentConfirmOrderDO.getPayerContactName());
|
|
|
+ submitVO.setPayerMail(appointmentConfirmOrderDO.getPayerMail());
|
|
|
+ submitVO.setEquipType(appointmentConfirmOrderDO.getEquipType());
|
|
|
+ submitVO.setEquipMainType(300);
|
|
|
+ submitVO.setEquipIds(equipIds);
|
|
|
+ pipeAppointmentConfirmOrderServiceImpl.submit(submitVO);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -934,6 +1000,188 @@ public class EquipPipeSchedulingServiceImpl extends ServiceImpl<EquipPipeSchedul
|
|
|
return pageResult;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public PageResult<EquipPipePlanSchedulingPageVO> getEquipPipeSchedulingPagePipe(EquipPipeSchedulingPageReqVO pageReqVO) {
|
|
|
+ PageResult<EquipPipePlanSchedulingPageVO> pageResult = new PageResult<>();
|
|
|
+ List<EquipPipePlanSchedulingPageVO> list = equipPipeSchedulingMapper.selectPlanPagePipe(pageReqVO);
|
|
|
+ Long count = equipPipeSchedulingMapper.selectPlanPagePipeCount(pageReqVO);
|
|
|
+
|
|
|
+ if(!list.isEmpty()){
|
|
|
+ list.forEach((item)-> {
|
|
|
+ Area area = AreaUtils.getArea(item.getEquipStreet());
|
|
|
+ if (area != null) {
|
|
|
+ item.setEquipStreetName(area.getName());
|
|
|
+ }
|
|
|
+
|
|
|
+ area = AreaUtils.getArea(item.getEquipDistrict());
|
|
|
+ if (area != null) {
|
|
|
+ item.setEquipDistrictName(area.getName());
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ List<String> ids = list.stream().map(EquipPipePlanSchedulingPageVO::getId).toList();
|
|
|
+ EquipPipePlanProjectReqVO equipPipePlanProjectReqVO = new EquipPipePlanProjectReqVO();
|
|
|
+ equipPipePlanProjectReqVO.setIds(ids);
|
|
|
+ List<EquipPipePlanSchedulingVO> equipPipePlanSchedulingVOS = equipPipeSchedulingMapper.selectPlanPageGroupProject(equipPipePlanProjectReqVO);
|
|
|
+ if (equipPipePlanSchedulingVOS != null && !equipPipePlanSchedulingVOS.isEmpty()) {
|
|
|
+ Map<String, EquipPipePlanSchedulingPageVO> idToPageVOMap = list.stream()
|
|
|
+ .filter(item -> item != null && item.getId() != null)
|
|
|
+ .collect(Collectors.toMap(
|
|
|
+ EquipPipePlanSchedulingPageVO::getId,
|
|
|
+ item -> item,
|
|
|
+ (existing, replacement) -> existing
|
|
|
+ ));
|
|
|
+
|
|
|
+ for (EquipPipePlanSchedulingVO equipPipePlanSchedulingVO : equipPipePlanSchedulingVOS) {
|
|
|
+ if (equipPipePlanSchedulingVO == null || equipPipePlanSchedulingVO.getEquipPipeId() == null) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ EquipPipePlanSchedulingPageVO equipPipePlanSchedulingPageVO = idToPageVOMap.get(equipPipePlanSchedulingVO.getEquipPipeId());
|
|
|
+ if (equipPipePlanSchedulingPageVO != null) {
|
|
|
+ equipPipePlanSchedulingPageVO.getPipes().add(equipPipePlanSchedulingVO);
|
|
|
+ equipPipePlanSchedulingPageVO.setPipeCount(equipPipePlanSchedulingPageVO.getPipes().size());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ pageResult.setList(list);
|
|
|
+ pageResult.setTotal(count);
|
|
|
+
|
|
|
+ return pageResult;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<PipeShiftScheduleRespVO> shiftSchedule(PipeShiftScheduleReqVO pageReqVO) {
|
|
|
+ List<PipeShiftScheduleRespVO.PipeShiftScheduleItemRespVO> pipeShiftScheduleItemRespVOS = equipPipeSchedulingMapper.selectShiftSchedule(pageReqVO);
|
|
|
+
|
|
|
+ List<PipeShiftScheduleRespVO> list = new ArrayList<>();
|
|
|
+ if(pipeShiftScheduleItemRespVOS == null || pipeShiftScheduleItemRespVOS.isEmpty()){
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 根据taskId 分组
|
|
|
+ Map<String, List<PipeShiftScheduleRespVO.PipeShiftScheduleItemRespVO>> taskIdToPipeShiftScheduleItemRespVOS = pipeShiftScheduleItemRespVOS.stream().collect(Collectors.groupingBy(PipeShiftScheduleRespVO.PipeShiftScheduleItemRespVO::getTaskId));
|
|
|
+ taskIdToPipeShiftScheduleItemRespVOS.forEach((taskId, scheduleItemRespVOS)->{
|
|
|
+ PipeShiftScheduleRespVO pipeShiftScheduleRespVO = new PipeShiftScheduleRespVO();
|
|
|
+ pipeShiftScheduleRespVO.setId(taskId);
|
|
|
+ pipeShiftScheduleRespVO.setStatus(100);
|
|
|
+ PipeShiftScheduleRespVO.PipeShiftScheduleItemRespVO pipeShiftScheduleItemRespVO = scheduleItemRespVOS.get(0);
|
|
|
+ pipeShiftScheduleRespVO.setDate(pipeShiftScheduleItemRespVO.getPlanDate());
|
|
|
+ if (pipeShiftScheduleItemRespVO.getAppointmentId() != null){
|
|
|
+ pipeShiftScheduleRespVO.setStatus(200);
|
|
|
+ if (pipeShiftScheduleItemRespVO.getAcceptStatus() != null){
|
|
|
+ pipeShiftScheduleRespVO.setStatus(300);
|
|
|
+ if (pipeShiftScheduleItemRespVO.getTaskStatus() != null){
|
|
|
+ pipeShiftScheduleRespVO.setStatus(400);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ List<EquipPipeSchedulingUserDO> equipPipeSchedulingUserDOS = equipPipeSchedulingUserMapper.selectList(EquipPipeSchedulingUserDO::getSchedulingId, taskId);
|
|
|
+ pipeShiftScheduleRespVO.setCheckers(equipPipeSchedulingUserDOS.stream().map(EquipPipeSchedulingUserDO::getUserId).toList());
|
|
|
+
|
|
|
+ scheduleItemRespVOS.forEach((item)-> {
|
|
|
+ Area area = AreaUtils.getArea(item.getEquipStreet());
|
|
|
+ if (area != null) {
|
|
|
+ item.setEquipStreetName(area.getName());
|
|
|
+ }
|
|
|
+
|
|
|
+ area = AreaUtils.getArea(item.getEquipDistrict());
|
|
|
+ if (area != null) {
|
|
|
+ item.setEquipDistrictName(area.getName());
|
|
|
+ }
|
|
|
+ });
|
|
|
+ pipeShiftScheduleRespVO.setTaskItems(scheduleItemRespVOS);
|
|
|
+
|
|
|
+ List<EquipPipeSchedulingItemDetailDO> equipPipeSchedulingItemDetailDOS = equipPipeSchedulingItemDetailMapper.selectList(EquipPipeSchedulingItemDetailDO::getSchedulingId, taskId);
|
|
|
+ List<String> equipDetailIds = equipPipeSchedulingItemDetailDOS.stream().map(EquipPipeSchedulingItemDetailDO::getEquipDetailId).toList();
|
|
|
+ List<EquipPipeDetailDO> equipPipeDetailDOS = equipPipeDetailMapper.selectByIds(equipDetailIds);
|
|
|
+ List<String> pipeMediums = equipPipeDetailDOS.stream().map(EquipPipeDetailDO::getPipeMedium).toList();
|
|
|
+ pipeShiftScheduleRespVO.setPipeMedium(pipeMediums);
|
|
|
+ list.add(pipeShiftScheduleRespVO);
|
|
|
+ });
|
|
|
+
|
|
|
+ if (pageReqVO.getStatus() != null){
|
|
|
+ return list.stream().filter(item -> Objects.equals(item.getStatus(), pageReqVO.getStatus())).toList();
|
|
|
+ }
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void setShiftSchedule(List<PipeShiftScheduleRespVO> pipeShiftScheduleRespVOS) {
|
|
|
+ for (PipeShiftScheduleRespVO pipeShiftScheduleRespVO : pipeShiftScheduleRespVOS) {
|
|
|
+ String id = pipeShiftScheduleRespVO.getId();
|
|
|
+ EquipPipeSchedulingDO equipPipeSchedulingDO = equipPipeSchedulingMapper.selectById(id);
|
|
|
+ equipPipeSchedulingDO.setPlanDate(pipeShiftScheduleRespVO.getDate());
|
|
|
+ equipPipeSchedulingMapper.updateById(equipPipeSchedulingDO);
|
|
|
+ List<EquipPipeSchedulingUserDO> equipPipeSchedulingUserDOS = equipPipeSchedulingUserMapper.selectList(EquipPipeSchedulingUserDO::getSchedulingId, id);
|
|
|
+ List<String> checkers = new ArrayList<>(pipeShiftScheduleRespVO.getCheckers());
|
|
|
+
|
|
|
+ // 需要删除
|
|
|
+ List<String> deleteIds = equipPipeSchedulingUserDOS.stream().filter(item -> {
|
|
|
+ // 已经存在
|
|
|
+ if (checkers.contains(item.getUserId())) {
|
|
|
+ checkers.remove(item.getUserId());
|
|
|
+ return false;
|
|
|
+ } else {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ }).map(EquipPipeSchedulingUserDO::getId).toList();
|
|
|
+ if (!deleteIds.isEmpty()) {
|
|
|
+ equipPipeSchedulingUserMapper.deleteByIds(deleteIds);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 需要新增的
|
|
|
+ List<EquipPipeSchedulingUserDO> list = checkers.stream().map(userId -> EquipPipeSchedulingUserDO.builder()
|
|
|
+ .schedulingId(id)
|
|
|
+ .userId(userId)
|
|
|
+ .build()).toList();
|
|
|
+ if (!list.isEmpty()) {
|
|
|
+ equipPipeSchedulingUserMapper.insertBatch(list);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ // 修改约检确认单
|
|
|
+ if (pipeShiftScheduleRespVO.getStatus() == 200) {
|
|
|
+ AppointmentConfirmOrderDO appointmentConfirmOrderDO = appointmentConfirmOrderMapper.selectOne(AppointmentConfirmOrderDO::getSchedulingId, id);
|
|
|
+ if (appointmentConfirmOrderDO != null) {
|
|
|
+ appointmentConfirmOrderDO.setAppointmentDate(pipeShiftScheduleRespVO.getDate());
|
|
|
+ appointmentConfirmOrderMapper.updateById(appointmentConfirmOrderDO);
|
|
|
+
|
|
|
+ List<PipeAppointmentConfirmOrderUserDO> pipeAppointmentConfirmOrderUserDOS = appointmentConfirmOrderUserMapper.selectList(PipeAppointmentConfirmOrderUserDO::getOrderId, appointmentConfirmOrderDO.getId());
|
|
|
+ List<String> confirmCheckers = new ArrayList<>(pipeShiftScheduleRespVO.getCheckers());
|
|
|
+
|
|
|
+ // 删除不在检验员列表中的用户
|
|
|
+ List<String> confirmDeleteIds = pipeAppointmentConfirmOrderUserDOS.stream()
|
|
|
+ .filter(item -> !confirmCheckers.contains(item.getUserId()))
|
|
|
+ .map(PipeAppointmentConfirmOrderUserDO::getId)
|
|
|
+ .toList();
|
|
|
+ if (!confirmDeleteIds.isEmpty()) {
|
|
|
+ appointmentConfirmOrderUserMapper.deleteByIds(confirmDeleteIds);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 新增检验员列表中不存在的用户
|
|
|
+ List<String> existingUserIds = pipeAppointmentConfirmOrderUserDOS.stream()
|
|
|
+ .map(PipeAppointmentConfirmOrderUserDO::getUserId)
|
|
|
+ .toList();
|
|
|
+ List<PipeAppointmentConfirmOrderUserDO> insertList = confirmCheckers.stream()
|
|
|
+ .filter(userId -> !existingUserIds.contains(userId))
|
|
|
+ .map(userId -> PipeAppointmentConfirmOrderUserDO.builder()
|
|
|
+ .orderId(appointmentConfirmOrderDO.getId())
|
|
|
+ .userId(userId)
|
|
|
+ .build())
|
|
|
+ .toList();
|
|
|
+ if (!insertList.isEmpty()) {
|
|
|
+ appointmentConfirmOrderUserMapper.insertBatch(insertList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public PipeTaskDetailsVO detail(String id) {
|
|
|
List<EquipPipeSchedulingItemDO> equipContainerSchedulingItemDOS = equipPipeSchedulingItemMapper.selectList(EquipPipeSchedulingItemDO::getSchedulingId, id);
|