|
|
@@ -0,0 +1,279 @@
|
|
|
+package cn.start.tz.module.pressure2.service.dynamicOFData.comm;
|
|
|
+
|
|
|
+import cn.start.tz.framework.mybatis.core.query.LambdaQueryWrapperX;
|
|
|
+import cn.start.tz.module.pressure2.controller.admin.dynamictbins.vo.CreateInstantiateWithRuleVO;
|
|
|
+import cn.start.tz.module.pressure2.controller.admin.equipboiler.vo.EquipBoilerReportVO;
|
|
|
+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.boilertaskorderitemreport.BoilerTaskOrderItemReportDO;
|
|
|
+import cn.start.tz.module.pressure2.dal.dataobject.boilertaskordersignfile.BoilerTaskOrderSignFileDO;
|
|
|
+import cn.start.tz.module.pressure2.dal.dataobject.equippipe.EquipPipeDO;
|
|
|
+import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorder.PipeTaskOrderDO;
|
|
|
+import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitem.PipeTaskOrderItemDO;
|
|
|
+import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitemreport.PipeTaskOrderItemReportDO;
|
|
|
+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.boilertaskorderitemreport.BoilerTaskOrderItemReportMapper;
|
|
|
+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.pipetaskorderitem.PipeTaskOrderItemMapper;
|
|
|
+import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderitemreport.PipeTaskOrderItemReportMapper;
|
|
|
+import cn.start.tz.module.pressure2.service.boilertaskorder.BoilerTaskOrderService;
|
|
|
+import cn.start.tz.module.pressure2.service.boilertaskordersignfile.BoilerTaskOrderSignFileService;
|
|
|
+import cn.start.tz.module.pressure2.service.dynamicOFData.IDynamicOFData;
|
|
|
+import cn.start.tz.module.pressure2.service.pipetaskorder.PipeTaskOrderService;
|
|
|
+import cn.start.tz.module.system.api.clientunit.ClientUnitApi;
|
|
|
+import cn.start.tz.module.system.api.dict.DictDataApi;
|
|
|
+import cn.start.tz.module.system.api.dict.dto.DictDataRespDTO;
|
|
|
+import cn.start.tz.module.system.api.user.AdminUserApi;
|
|
|
+import cn.start.tz.module.system.api.user.dto.AdminUserRespDTO;
|
|
|
+import com.alibaba.fastjson2.JSONObject;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import jakarta.annotation.Resource;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.time.DayOfWeek;
|
|
|
+import java.time.LocalDate;
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 特种设备检验意见通知书(2)
|
|
|
+ * */
|
|
|
+@Service("QC01007_202400OFData")
|
|
|
+public class QC01007_202400OFData implements IDynamicOFData {
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private EquipBoilerMapper equipBoilerMapper;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private EquipPipeMapper equipPipeMapper;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private BoilerTaskOrderItemReportMapper boilerTaskOrderItemReportMapper;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private PipeTaskOrderItemReportMapper pipeTaskOrderItemReportMapper;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private PipeTaskOrderService pipeTaskOrderService;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private BoilerTaskOrderMapper boilerTaskOrderMapper;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private BoilerTaskOrderItemMapper boilerTaskOrderItemMapper;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private PipeTaskOrderItemMapper pipeTaskOrderItemMapper;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private AdminUserApi adminUserApi;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private ClientUnitApi clientUnitApi;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private BoilerTaskOrderService boilerTaskOrderService;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private BoilerTaskOrderSignFileService boilerTaskOrderSignFileService;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private DictDataApi dictDataApi;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public JSONObject getOFData(JSONObject params) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public JSONObject getOfDataByVO(CreateInstantiateWithRuleVO ruleVO) {
|
|
|
+
|
|
|
+ //日期格式
|
|
|
+ DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
|
|
|
+ //主设备类型
|
|
|
+ String equipMainTpe = ruleVO.getParams().getString("equipMainType");
|
|
|
+
|
|
|
+ //设备报表ID
|
|
|
+ String refId = ruleVO.getRefId();
|
|
|
+
|
|
|
+ JSONObject result = new JSONObject();
|
|
|
+
|
|
|
+ if (equipMainTpe.equals("boiler")){
|
|
|
+
|
|
|
+ BoilerTaskOrderItemReportDO itemReportDO = boilerTaskOrderItemReportMapper.selectById(refId);
|
|
|
+ if (itemReportDO != null){
|
|
|
+ // 填充签名
|
|
|
+ BoilerTaskOrderDO taskOrderDO = boilerTaskOrderService.getOne(new LambdaQueryWrapper<BoilerTaskOrderDO>().eq(BoilerTaskOrderDO::getId, itemReportDO.getOrderId()));
|
|
|
+ if (taskOrderDO != null){
|
|
|
+ BoilerTaskOrderSignFileDO boilerTaskOrderSignFileDO = boilerTaskOrderSignFileService.selectLastOneByOrderIdAndBusinessType(taskOrderDO.getId(), 400);
|
|
|
+ if (boilerTaskOrderSignFileDO != null){
|
|
|
+ result.put("checkUnit", boilerTaskOrderSignFileDO.getSignUrl());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ result.put("checkName",itemReportDO.getSignUrl());
|
|
|
+ if (taskOrderDO != null){
|
|
|
+ result.put("checkDate",taskOrderDO.getCheckDate());
|
|
|
+ }
|
|
|
+
|
|
|
+ String orderItemId = itemReportDO.getOrderItemId();
|
|
|
+ BoilerTaskOrderItemDO itemDO = boilerTaskOrderItemMapper.selectById(orderItemId);
|
|
|
+ if (itemDO != null){
|
|
|
+ EquipBoilerReportVO equipBoilerDO = equipBoilerMapper.selectDetailsById(itemDO.getEquipId());
|
|
|
+ if (equipBoilerDO != null){
|
|
|
+ //设备信息
|
|
|
+ result.put("unitName",equipBoilerDO.getUnitName());
|
|
|
+ result.put("equipMainType", "锅炉");
|
|
|
+ DictDataRespDTO boilerTypeDTO = dictDataApi.getDictData("system_equip_boiler_type", equipBoilerDO.getType()).getData();
|
|
|
+ if (boilerTypeDTO != null){
|
|
|
+ result.put("equipType1", boilerTypeDTO.getLabel());
|
|
|
+ }
|
|
|
+ result.put("equipName",equipBoilerDO.getEquipName());
|
|
|
+ result.put("equipInCode",equipBoilerDO.getUnitInternalCode());
|
|
|
+ result.put("useNo",equipBoilerDO.getUseRegisterNo());
|
|
|
+ result.put("equipRegisterCode1",equipBoilerDO.getUseRegisterNo());
|
|
|
+ if (itemReportDO.getRatifyTime() != null){
|
|
|
+ // 计算15个工作日后的日期
|
|
|
+ LocalDate ratifyDate = LocalDate.from(itemReportDO.getRatifyTime());
|
|
|
+ LocalDate after15WorkDays = addWorkingDays(ratifyDate, 15);
|
|
|
+ result.put("ExpiryDate", after15WorkDays.format(dateFormat));
|
|
|
+ }
|
|
|
+ result.put("contact",equipBoilerDO.getContact());
|
|
|
+ result.put("contactPhone",equipBoilerDO.getContactPhone());
|
|
|
+ result.put("unitAddress",equipBoilerDO.getUnitAddress());
|
|
|
+ result.put("zipCode",equipBoilerDO.getZipCode());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ result.put("reportNo",itemReportDO.getReportNo());
|
|
|
+
|
|
|
+ //审核人员信息
|
|
|
+ AdminUserRespDTO userInfo = adminUserApi.getUser(itemReportDO.getApprovalId()).getData();
|
|
|
+ if (userInfo != null){
|
|
|
+ result.put("approvalName",userInfo.getSignUrl());
|
|
|
+ }else{
|
|
|
+ result.put("approvalName",itemReportDO.getApprovalName());
|
|
|
+ }
|
|
|
+ if (itemReportDO.getApprovalTime() != null){
|
|
|
+ result.put("approvalTime",itemReportDO.getApprovalTime().format(dateFormat));
|
|
|
+ }
|
|
|
+
|
|
|
+ //审批人员信息
|
|
|
+ userInfo = adminUserApi.getUser(itemReportDO.getRatifyId()).getData();
|
|
|
+ if (userInfo != null){
|
|
|
+ result.put("ratifyName",userInfo.getSignUrl());
|
|
|
+ }else{
|
|
|
+ result.put("ratifyName",itemReportDO.getRatifyName());
|
|
|
+ }
|
|
|
+ if (itemReportDO.getRatifyTime() != null){
|
|
|
+ result.put("ratifyTime",itemReportDO.getRatifyTime().format(dateFormat));
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }else if (equipMainTpe.equals("pipe")){
|
|
|
+
|
|
|
+ PipeTaskOrderItemReportDO itemReportDO = pipeTaskOrderItemReportMapper.selectById(refId);
|
|
|
+ if (itemReportDO != null){
|
|
|
+ // 填充签名
|
|
|
+ PipeTaskOrderDO taskOrderDO = pipeTaskOrderService.getOne(new LambdaQueryWrapper<PipeTaskOrderDO>().eq(PipeTaskOrderDO::getId, itemReportDO.getOrderId()));
|
|
|
+ if (taskOrderDO != null){
|
|
|
+ BoilerTaskOrderSignFileDO boilerTaskOrderSignFileDO = boilerTaskOrderSignFileService.selectLastOneByOrderIdAndBusinessType(taskOrderDO.getId(), 400);
|
|
|
+ if (boilerTaskOrderSignFileDO != null){
|
|
|
+ result.put("checkUnit", boilerTaskOrderSignFileDO.getSignUrl());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ result.put("checkName",itemReportDO.getSignUrl());
|
|
|
+
|
|
|
+ if (taskOrderDO != null){
|
|
|
+ result.put("checkDate",taskOrderDO.getCheckDate());
|
|
|
+ List<PipeTaskOrderItemDO> itemDOS = pipeTaskOrderItemMapper.selectList(new LambdaQueryWrapperX<PipeTaskOrderItemDO>()
|
|
|
+ .eq(PipeTaskOrderItemDO::getOrderId, taskOrderDO.getId()));
|
|
|
+
|
|
|
+ if (!itemDOS.isEmpty()){
|
|
|
+
|
|
|
+ PipeTaskOrderItemDO pipeTaskOrderItemDO = itemDOS.get(0);
|
|
|
+ EquipPipeDO equipPipeDO = equipPipeMapper.selectById(pipeTaskOrderItemDO.getEquipId());
|
|
|
+ if (equipPipeDO != null){
|
|
|
+ //设备信息
|
|
|
+ result.put("unitName",equipPipeDO.getUnitName());
|
|
|
+ result.put("equipMainType", "压力管道");
|
|
|
+ result.put("equipName","压力管道");
|
|
|
+ result.put("equipInCode","-");
|
|
|
+ result.put("useNo",equipPipeDO.getCertificateNo());
|
|
|
+ if (itemReportDO.getRatifyTime() != null){
|
|
|
+ // 计算15个工作日后的日期
|
|
|
+ LocalDate ratifyDate = LocalDate.from(itemReportDO.getRatifyTime());
|
|
|
+ LocalDate after15WorkDays = addWorkingDays(ratifyDate, 15);
|
|
|
+ result.put("ExpiryDate", after15WorkDays.format(dateFormat));
|
|
|
+ }
|
|
|
+ result.put("contact",equipPipeDO.getContact());
|
|
|
+ result.put("contactPhone",equipPipeDO.getContactPhone());
|
|
|
+ result.put("unitAddress",equipPipeDO.getUnitAddress());
|
|
|
+ result.put("zipCode",equipPipeDO.getPostalCode());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ result.put("reportNo",itemReportDO.getReportNo());
|
|
|
+
|
|
|
+ //审核人员信息
|
|
|
+ AdminUserRespDTO userInfo = adminUserApi.getUser(itemReportDO.getApprovalId()).getData();
|
|
|
+ if (userInfo != null){
|
|
|
+ result.put("approvalName",userInfo.getSignUrl());
|
|
|
+ }else{
|
|
|
+ result.put("approvalName",itemReportDO.getApprovalName());
|
|
|
+ }
|
|
|
+ if (itemReportDO.getApprovalTime() != null){
|
|
|
+ result.put("approvalTime",itemReportDO.getApprovalTime().format(dateFormat));
|
|
|
+ }
|
|
|
+
|
|
|
+ //审批人员信息
|
|
|
+ userInfo = adminUserApi.getUser(itemReportDO.getRatifyId()).getData();
|
|
|
+ if (userInfo != null){
|
|
|
+ result.put("ratifyName",userInfo.getSignUrl());
|
|
|
+ }else{
|
|
|
+ result.put("ratifyName",itemReportDO.getRatifyName());
|
|
|
+ }
|
|
|
+ if (itemReportDO.getRatifyTime() != null){
|
|
|
+ result.put("ratifyTime",itemReportDO.getRatifyTime().format(dateFormat));
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ return result;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 计算指定日期后N个工作日的日期
|
|
|
+ * @param startDate 起始日期
|
|
|
+ * @param workingDays 工作日天数
|
|
|
+ * @return N个工作日后的日期
|
|
|
+ */
|
|
|
+ private LocalDate addWorkingDays(LocalDate startDate, int workingDays) {
|
|
|
+ if (workingDays <= 0) {
|
|
|
+ return startDate;
|
|
|
+ }
|
|
|
+
|
|
|
+ LocalDate resultDate = startDate;
|
|
|
+ int daysToAdd = workingDays;
|
|
|
+
|
|
|
+ while (daysToAdd > 0) {
|
|
|
+ resultDate = resultDate.plusDays(1);
|
|
|
+ // 跳过周末(周六和周日)
|
|
|
+ if (resultDate.getDayOfWeek() != DayOfWeek.SATURDAY &&
|
|
|
+ resultDate.getDayOfWeek() != DayOfWeek.SUNDAY) {
|
|
|
+ daysToAdd--;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return resultDate;
|
|
|
+ }
|
|
|
+}
|