2 Achegas e65d79ba82 ... 988ad4e747

Autor SHA1 Mensaxe Data
  xuzhancheng 988ad4e747 Merge remote-tracking branch 'origin/dev' into dev hai 3 días
  xuzhancheng 5741ec40bc feat(boilertaskordersignfile): 添加服务单推送功能 hai 3 días

+ 7 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/boilertaskordersignfile/BoilerTaskOrderSignFileController.java

@@ -92,4 +92,11 @@ public class BoilerTaskOrderSignFileController {
                         BeanUtils.toBean(list, BoilerTaskOrderSignFileRespVO.class));
     }
 
+    @PostMapping("/service-from/push")
+    @Operation(summary = "服务单推送到小程序端")
+    public CommonResult<Boolean> serviceFromPush(@Valid @RequestBody TaskOrderPushReqVO reqVO) throws Exception {
+        boilerTaskOrderSignFileService.serviceFromPush(reqVO);
+        return success(Boolean.TRUE);
+    }
+
 }

+ 41 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/boilertaskordersignfile/vo/TaskOrderPushReqVO.java

@@ -0,0 +1,41 @@
+package cn.start.tz.module.pressure2.controller.admin.boilertaskordersignfile.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+@Data
+public class TaskOrderPushReqVO {
+
+    @Schema(description = "id")
+    @NotNull(message = "受理单id不能为空")
+    private String id;
+
+
+    /**
+     * 接收人
+     */
+    @Schema(description = "接收人")
+    private String receiver;
+
+    /**
+     * 服务单接收人电话
+     */
+    @Schema(description = "接收人电话")
+    private String receiverPhone;
+    @Schema(description = "接收人Email")
+    private String receiverEmail;
+
+    @Schema(description = "业务类型(100=任务单,200=检验结果告知,300=安全检查记录,400=重大问题线索)", example = "2")
+    @NotNull(message = "业务类型不能为空")
+    private Integer businessType;
+
+    @Schema(description = "用户签名url", example = "https://www.iocoder.cn")
+    private String signUrl;
+
+    @Schema(description = "设备id", example = "https://www.iocoder.cn")
+    private String orderItemId;
+
+    @Schema(description = "安全检查记录ID")
+    private String securityCheckId;
+}

+ 23 - 3
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/appapi/boilertaskorder/AppApiBoilerTaskOrderController.java

@@ -6,16 +6,19 @@ import cn.start.tz.framework.common.pojo.PageResult;
 import cn.start.tz.framework.ratelimiter.core.annotation.RateLimiter;
 import cn.start.tz.module.pressure2.controller.admin.boilertaskorder.vo.*;
 import cn.start.tz.module.pressure2.controller.admin.boilertaskorderoperation.vo.BoilerTaskOrderOperationSaveReqVO;
+import cn.start.tz.module.pressure2.controller.admin.boilertaskordersignfile.vo.BoilerTaskOrderSignFilePageReqVO;
 import cn.start.tz.module.pressure2.controller.admin.boilertaskordersignfile.vo.BoilerTaskOrderSignFileSaveReqVO;
+import cn.start.tz.module.pressure2.controller.admin.boilertaskordersignfile.vo.TaskOrderPushReqVO;
 import cn.start.tz.module.pressure2.controller.admin.bpmtaskinfo.vo.BpmTaskRespVO;
 import cn.start.tz.module.pressure2.controller.admin.costfield.vo.CostFieldRespVO;
+import cn.start.tz.module.pressure2.controller.app.taskorder.vo.ServeOrderSignRespVo;
 import cn.start.tz.module.pressure2.controller.appapi.boilertaskorder.vo.OrderFromPdfReqVO;
 import cn.start.tz.module.pressure2.controller.appapi.boilertaskorder.vo.TaskOrderAppPushReqVO;
-import cn.start.tz.module.pressure2.controller.appapi.boilertaskorder.vo.TaskOrderPushReqVO;
 import cn.start.tz.module.pressure2.dal.dataobject.boilertaskorderitemreport.BoilerTaskOrderItemReportDO;
 import cn.start.tz.module.pressure2.service.boilertaskorder.BoilerTaskOrderService;
 import cn.start.tz.module.pressure2.service.boilertaskorderitemreport.BoilerTaskOrderItemReportService;
 import cn.start.tz.module.pressure2.service.boilertaskorderoperation.BoilerTaskOrderOperationService;
+import cn.start.tz.module.pressure2.service.boilertaskordersignfile.BoilerTaskOrderSignFileService;
 import cn.start.tz.module.pressure2.service.tasksign.TaskSignService;
 import cn.start.tz.module.system.api.user.dto.AdminUserRespDTO;
 import com.alibaba.fastjson.JSONObject;
@@ -52,6 +55,9 @@ public class AppApiBoilerTaskOrderController {
     @Resource
     private BoilerTaskOrderItemReportService boilerTaskOrderItemReportService;
 
+    @Resource
+    private BoilerTaskOrderSignFileService boilerTaskOrderSignFileService;
+
 //    @PostMapping("/create")
 //    @Operation(summary = "创建锅炉检验任务确认")
 //    //@PreAuthorize("@ss.hasPermission('pressure2:boiler-task-order:create')")
@@ -562,10 +568,17 @@ public class AppApiBoilerTaskOrderController {
     @Resource
     TaskSignService taskSignService;
 
+    @GetMapping("/service-from/page")
+    @Operation(summary = "获得任务单签名文件分页")
+    public CommonResult<PageResult<ServeOrderSignRespVo>> getTaskOrderSignFilePage(@Valid BoilerTaskOrderSignFilePageReqVO pageReqVO) {
+        PageResult<ServeOrderSignRespVo> pageResult = taskSignService.getOrderSignPage(pageReqVO);
+        return success(pageResult);
+    }
+
     @GetMapping("/order-sign/submit")
     @Operation(summary = "服务单签名提交(app)")
-    public CommonResult<Boolean> orderSignSubmit(@Valid TaskOrderAppPushReqVO reqVO)  throws Exception {
-        taskSignService.orderAppSignSubmit(reqVO);
+    public CommonResult<Boolean> orderSignSubmit(@Valid cn.start.tz.module.pressure2.controller.appapi.boilertaskorder.vo.TaskOrderPushReqVO reqVO)  throws Exception {
+        taskSignService.orderSignSubmit(reqVO);
         return success(true);
     }
 //
@@ -598,4 +611,11 @@ public class AppApiBoilerTaskOrderController {
 //        taskSignService.appOrderItemSign(reqVO);
 //        return success(true);
 //    }
+@PostMapping("/service-from/push")
+@Operation(summary = "服务单推送到小程序端")
+public CommonResult<Boolean> serviceFromPush(@Valid @RequestBody TaskOrderPushReqVO reqVO) throws Exception {
+    boilerTaskOrderSignFileService.serviceFromPush(reqVO);
+    return success(Boolean.TRUE);
+}
+
 }

+ 6 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskordersignfile/BoilerTaskOrderSignFileService.java

@@ -68,4 +68,10 @@ public interface BoilerTaskOrderSignFileService extends IService<BoilerTaskOrder
 
     PageResult<BoilerTaskOrderSignFileRespVO> getTaskOrderSignFilePage(BoilerTaskOrderSignFilePageReqVO pageReqVO);
 
+    /**
+     * 服务单推送到小程序端
+     *
+     * @param reqVO 入参
+     */
+    void serviceFromPush(TaskOrderPushReqVO reqVO) throws Exception;
 }

+ 113 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskordersignfile/BoilerTaskOrderSignFileServiceImpl.java

@@ -2,21 +2,29 @@ package cn.start.tz.module.pressure2.service.boilertaskordersignfile;
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.ObjectUtil;
+import cn.start.tz.framework.common.exception.ServiceException;
 import cn.start.tz.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.start.tz.module.pressure2.controller.admin.orderreport.vo.TaskOrderSignFilePageReqVO;
+import cn.start.tz.module.pressure2.dal.dataobject.boilertaskorder.BoilerTaskOrderDO;
 import cn.start.tz.module.pressure2.dal.dataobject.boilertaskorderitem.BoilerTaskOrderItemDO;
 import cn.start.tz.module.pressure2.dal.dataobject.equipboiler.EquipBoilerDO;
 import cn.start.tz.module.pressure2.dal.dataobject.equippipe.EquipPipeDO;
 import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitem.PipeTaskOrderItemDO;
+import cn.start.tz.module.pressure2.dal.mysql.boilertaskorder.BoilerTaskOrderMapper;
 import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderitem.BoilerTaskOrderItemMapper;
 import cn.start.tz.module.pressure2.dal.mysql.equipboiler.EquipBoilerMapper;
 import cn.start.tz.module.pressure2.dal.mysql.equippipe.EquipPipeMapper;
 import cn.start.tz.module.pressure2.dal.mysql.pipetaskorder.PipeTaskOrderMapper;
 import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderitem.PipeTaskOrderItemMapper;
+import cn.start.tz.module.system.enums.common.IsYesOrNoEnum;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 import jakarta.annotation.Resource;
 import org.springframework.validation.annotation.Validated;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 
+import java.time.LocalDateTime;
 import java.util.*;
 import cn.start.tz.module.pressure2.controller.admin.boilertaskordersignfile.vo.*;
 import cn.start.tz.module.pressure2.dal.dataobject.boilertaskordersignfile.BoilerTaskOrderSignFileDO;
@@ -26,6 +34,7 @@ import cn.start.tz.framework.common.util.object.BeanUtils;
 import cn.start.tz.module.pressure2.dal.mysql.boilertaskordersignfile.BoilerTaskOrderSignFileMapper;
 
 import static cn.start.tz.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.start.tz.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
 import static cn.start.tz.module.pressure2.enums.ErrorCodeConstants.*;
 
 /**
@@ -35,6 +44,7 @@ import static cn.start.tz.module.pressure2.enums.ErrorCodeConstants.*;
  */
 @Service
 @Validated
+@Slf4j
 public class BoilerTaskOrderSignFileServiceImpl extends ServiceImpl<BoilerTaskOrderSignFileMapper, BoilerTaskOrderSignFileDO> implements BoilerTaskOrderSignFileService {
 
     @Resource
@@ -50,6 +60,8 @@ public class BoilerTaskOrderSignFileServiceImpl extends ServiceImpl<BoilerTaskOr
     private PipeTaskOrderItemMapper pipeTaskOrderItemMapper;
    @Resource
     private PipeTaskOrderMapper pipeTaskOrderMapper;
+   @Resource
+    private BoilerTaskOrderMapper boilerTaskOrderMapper;
 
     @Resource
     private EquipPipeMapper equipPipeMapper;
@@ -194,5 +206,106 @@ public class BoilerTaskOrderSignFileServiceImpl extends ServiceImpl<BoilerTaskOr
         return taskOrderSignFilePage;
     }
 
+    @Override
+    public void serviceFromPush(TaskOrderPushReqVO reqVO) throws Exception {
+        log.info("serviceFromPush {}", reqVO);
+        // 根据id查询任务单
+        BoilerTaskOrderDO taskOrderDO = boilerTaskOrderMapper.selectById(reqVO.getId());
+        // 如果任务单不存在,抛出异常
+        if (taskOrderDO == null) {
+            throw new ServiceException(404, "任务单不存在");
+        }
+//        TaskOrderFileVersionDO orderFileVersionDO = orderFileVersionService
+//                .selectLastOneByOrderIdAndBusinessType(reqVO.getId(), reqVO.getBusinessType(), reqVO.getOrderItemId(), reqVO.getSecurityCheckId());
+//
+//        if (ObjectUtil.isNull(orderFileVersionDO)) {
+//            // 新增版本记录
+//            OrderFormEnterReqVO enterReqVO = new OrderFormEnterReqVO();
+//            enterReqVO.setBusinessType(reqVO.getBusinessType());
+//            enterReqVO.setOrderId(taskOrderDO.getId());
+//            OrderTemplateDataRepsVO templateDataRepsVO = this.getOrderFrom(taskOrderDO.getId(), reqVO.getBusinessType(), reqVO.getOrderItemId());
+//            enterReqVO.setTemplateUrl(templateDataRepsVO.getTemplateUrl());
+//            enterReqVO.setDataStr(templateDataRepsVO.getDataStr());
+//            enterReqVO.setOrderItemId(reqVO.getOrderItemId());
+//            enterReqVO.setSecurityCheckId(reqVO.getSecurityCheckId());
+//            enterReqVO.setFlag(0);
+//            orderFileVersionService.documentHistoricalVersions(enterReqVO, getLoginUserId());
+//        }
+
+        BoilerTaskOrderSignFileDO taskOrderSignFileDO =
+                selectLastOneByOrderIdAndBusinessType(taskOrderDO.getId(), reqVO.getBusinessType(), reqVO.getOrderItemId(), reqVO.getSecurityCheckId());
+
+        if (ObjectUtil.isNotNull(taskOrderSignFileDO)) {
+            taskOrderSignFileDO.setReceiver(reqVO.getReceiver());
+            taskOrderSignFileDO.setReceiverPhone(reqVO.getReceiverPhone());
+            taskOrderSignFileDO.setIsPush(IsYesOrNoEnum.YES.getKey());
+            taskOrderSignFileDO.setPushDateTime(LocalDateTime.now());
+            updateById(taskOrderSignFileDO);
+        } else {
+            taskOrderSignFileDO = new BoilerTaskOrderSignFileDO();
+            taskOrderSignFileDO.setOrderId(taskOrderDO.getId());
+            taskOrderSignFileDO.setBusinessType(reqVO.getBusinessType());
+            taskOrderSignFileDO.setReceiver(reqVO.getReceiver());
+            taskOrderSignFileDO.setReceiverPhone(reqVO.getReceiverPhone());
+            taskOrderSignFileDO.setIsPush(IsYesOrNoEnum.YES.getKey());
+            taskOrderSignFileDO.setPushDateTime(LocalDateTime.now());
+            taskOrderSignFileDO.setOrderItemId(reqVO.getOrderItemId());
+            taskOrderSignFileDO.setSecurityCheckId(reqVO.getSecurityCheckId());
+            save(taskOrderSignFileDO);
+        }
+//        TaskOrderServeSendSendVO vo = new TaskOrderServeSendSendVO();
+//        vo.setOrderNo(taskOrderDO.getOrderNo());
+//        vo.setReceiverPhone(taskOrderSignFileDO.getReceiverPhone());
+//        vo.setPushDateTime(taskOrderSignFileDO.getPushDateTime());
+//        vo.setServeItemName("容器-定期检验");
+//        if (Integer.valueOf(200).equals(taskOrderDO.getCheckType())) {
+//            vo.setServeItemName("容器-年度检验");
+//        } else if (Integer.valueOf(300).equals(taskOrderDO.getCheckType())) {
+//            vo.setServeItemName("容器-超期限检验");
+//        }
+//        //100=服务单模版推送,200=检验结果告知推送
+//        if (Integer.valueOf(100).equals(reqVO.getBusinessType())) {
+//            serveOrderSend(vo);
+//        } else if (Integer.valueOf(200).equals(reqVO.getBusinessType())) {
+//            resultsNotificationSend(vo);
+//        } else if (Integer.valueOf(300).equals(reqVO.getBusinessType())) {
+//            securityRecordSend(vo);
+//        } else if (Integer.valueOf(400).equals(reqVO.getBusinessType())) {
+////            if (StringUtils.isNotEmpty(vo.getReceiverPhone())) {
+////                MemberUserRespDTO memberUser = memberUserApi.getUserByMobile(vo.getReceiverPhone()).getCheckedData();
+////                if (ObjectUtil.isEmpty(memberUser)) {
+////                    // 获取不到平台用户信息是创建一个平台用户账号
+////                    if (ObjectUtil.isEmpty(memberUser)) {
+////                        MemberUserReqVo memberUserReqVo = new MemberUserReqVo();
+////                        memberUserReqVo.setMobile(vo.getReceiverPhone());
+////                        memberUserReqVo.setRegisterIp(getClientIP());
+////                        memberUserReqVo.setTerminal(TerminalEnum.WECHAT_MINI_PROGRAM.getTerminal());
+////                        memberUser = memberUserApi.createUser(memberUserReqVo).getCheckedData();
+////                        if (ObjectUtil.isEmpty(memberUser)) {
+////                            throw exception(new ErrorCode(1007, "创建用户失败"));
+////                        }
+////                    }
+////                }
+////            }
+//
+//            TaskOrderItemDO taskOrderItemDO = taskOrderItemMapper.selectById(reqVO.getOrderItemId());
+//            if (taskOrderItemDO != null) {
+//                vo.setEquipCode(taskOrderItemDO.getEquipCode());
+//                vo.setUnitName(taskOrderDO.getUnitName());
+//            }
+//            majorIssueSend(vo);
+//        }
+
+//        TaskOrderSignFilePageReqVO reqParam = new TaskOrderSignFilePageReqVO();
+//        reqParam.setOrderId(taskOrderDO.getId());
+//        reqParam.setEmail(reqVO.getReceiverEmail());
+//        reqParam.setBusinessType(reqVO.getBusinessType());
+//        reqParam.setOrderItemId(reqVO.getOrderItemId());
+//        if (StringUtils.isNotBlank(reqParam.getEmail())) {
+//            serviceFromSendEmail(reqParam);
+//        }
+
+    }
+
 
 }

+ 24 - 4
tz-module-pressure2/tz-module-pressure2-biz/src/main/resources/mapper/appointmentconfirmorder/AppointmentConfirmOrderMapper.xml

@@ -38,10 +38,30 @@
     </select>
 
     <select id="selectPage" resultType="cn.start.tz.module.pressure2.controller.admin.appointmentconfirmorder.vo.AppointmentConfirmOrderRespVO">
-        SELECT * FROM (
-            SELECT aco.*,
-                   COALESCE(ebs.create_time, eps.create_time) AS scheduling_time,
-                   aco.equip_num_boiler AS equip_num
+        SELECT tmp.id, tmp.appointment_no, tmp.unit_code, tmp.unit_name, tmp.unit_address,
+               tmp.check_type, tmp.equip_type, tmp.equip_num, tmp.equip_street, tmp.equip_district,
+               tmp.appointment_date, tmp.warning_day, tmp.unit_contact, tmp.unit_phone, tmp.status,
+               tmp.create_time, tmp.mobile, tmp.zip_code, tmp.remark, tmp.email, tmp.dept_id,
+               tmp.operator, tmp.is_attach, tmp.send_type, tmp.vehicle, tmp.fee_type, tmp.accept_type,
+               tmp.actual_amount, tmp.service_amount, tmp.should_amount, tmp.reduce_fee, tmp.warning_date,
+               tmp.create_accept_order, tmp.social_credit_code, tmp.use_unit_name, tmp.use_unit_social_credit_code,
+               tmp.use_unit_address, tmp.use_unit_zipcode, tmp.use_unit_contact, tmp.use_unit_phone,
+               tmp.fee_nature, tmp.fee_date, tmp.recipient, tmp.recipient_phone, tmp.dept_phone,
+               tmp.recipient_email, tmp.payer_contact_name, tmp.payer_contact, tmp.payer_mail,
+               tmp.equip_main_type, tmp.scheduling_id, tmp.scheduling_time
+        FROM (
+            SELECT aco.id, aco.appointment_no, aco.unit_code, aco.unit_name, aco.unit_address,
+                   aco.check_type, aco.equip_type, aco.equip_num_boiler AS equip_num, aco.equip_street, aco.equip_district,
+                   aco.appointment_date, aco.warning_day, aco.unit_contact, aco.unit_phone, aco.status,
+                   aco.create_time, aco.mobile, aco.zip_code, aco.remark, aco.email, aco.dept_id,
+                   aco.operator, aco.is_attach, aco.send_type, aco.vehicle, aco.fee_type, aco.accept_type,
+                   aco.actual_amount, aco.service_amount, aco.should_amount, aco.reduce_fee, aco.warning_date,
+                   aco.create_accept_order, aco.social_credit_code, aco.use_unit_name, aco.use_unit_social_credit_code,
+                   aco.use_unit_address, aco.use_unit_zipcode, aco.use_unit_contact, aco.use_unit_phone,
+                   aco.fee_nature, aco.fee_date, aco.recipient, aco.recipient_phone, aco.dept_phone,
+                   aco.recipient_email, aco.payer_contact_name, aco.payer_contact, aco.payer_mail,
+                   aco.equip_main_type, aco.scheduling_id,
+                   COALESCE(ebs.create_time, eps.create_time) AS scheduling_time
             FROM pressure_appointment_confirm_order aco
             LEFT JOIN pressure2_boiler_appointment_confirm_order_item baci ON baci.order_id = aco.id AND baci.deleted = 0
             LEFT JOIN pressure2_equip_boiler eb ON eb.id = baci.equip_id AND eb.deleted = 0