xy 2 недель назад
Родитель
Сommit
a3678d5ff7

+ 217 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/boiler/QR0418_202402ReportOFData.java

@@ -0,0 +1,217 @@
+package cn.start.tz.module.pressure2.service.dynamicOFData.boiler;
+
+import cn.start.tz.framework.common.pojo.CommonResult;
+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.dal.dataobject.acceptorder.AcceptOrderDO;
+import cn.start.tz.module.pressure2.dal.dataobject.boileracceptorderitem.BoilerAcceptOrderItemDO;
+import cn.start.tz.module.pressure2.dal.dataobject.boileracceptorderuser.BoilerAcceptOrderUserDO;
+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.boilertaskorderuser.BoilerTaskOrderUserDO;
+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.orderreport.OrderReportDO;
+import cn.start.tz.module.pressure2.dal.dataobject.pipeacceptorderitem.PipeAcceptOrderItemDO;
+import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitemreport.PipeTaskOrderItemReportDO;
+import cn.start.tz.module.pressure2.dal.mysql.acceptorder.AcceptOrderMapper;
+import cn.start.tz.module.pressure2.dal.mysql.boileracceptorderitem.BoilerAcceptOrderItemMapper;
+import cn.start.tz.module.pressure2.dal.mysql.boileracceptorderuser.BoilerAcceptOrderUserMapper;
+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.boilertaskorderuser.BoilerTaskOrderUserMapper;
+import cn.start.tz.module.pressure2.dal.mysql.equipboiler.EquipBoilerMapper;
+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.dynamicOFData.util.AmountConvertUtil;
+import cn.start.tz.module.pressure2.service.orderreport.OrderReportService;
+import cn.start.tz.module.system.api.clientunit.ClientUnitApi;
+import cn.start.tz.module.system.api.clientunit.dto.ClientUnitDTO;
+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.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collectors;
+
+/**
+ * 锅炉能效测试(评价)委托服务单
+ */
+@Service("QR0418_202402ReportOFData")
+public class QR0418_202402ReportOFData implements IDynamicOFData {
+
+    @Resource
+    private EquipBoilerMapper equipBoilerMapper;
+
+    @Resource
+    private AcceptOrderMapper acceptOrderMapper;
+
+    @Resource
+    private OrderReportService orderReportService;
+
+    @Resource
+    private BoilerAcceptOrderItemMapper acceptOrderItemMapper;
+
+    @Resource
+    private BoilerAcceptOrderUserMapper boilerAcceptOrderUserMapper;
+
+    @Resource
+    private AdminUserApi adminUserApi;
+
+    @Resource
+    private BoilerTaskOrderSignFileService boilerTaskOrderSignFileService;
+
+    @Resource
+    private BoilerTaskOrderService boilerTaskOrderService;
+
+    @Resource
+    private BoilerTaskOrderUserMapper boilerTaskOrderUserMapper;
+
+    @Resource
+    private BoilerTaskOrderItemMapper boilerTaskOrderItemMapper;
+
+    @Resource
+    private BoilerTaskOrderItemReportMapper boilerTaskOrderItemReportMapper;
+
+    @Resource
+    private ClientUnitApi clientUnitApi;
+
+    @Override
+    public JSONObject getOFData(JSONObject params) {
+        return null;
+    }
+
+    @Override
+    public JSONObject getOfDataByVO(CreateInstantiateWithRuleVO ruleVO) {
+
+        //日期格式
+        DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
+
+        //受理单ID
+        String refId = ruleVO.getRefId();
+
+        JSONObject result = new JSONObject();
+        AcceptOrderDO acceptOrderDO = acceptOrderMapper.selectById(refId);
+        if (acceptOrderDO == null) {
+            return result;
+        }
+        result.put("reportNo", acceptOrderDO.getAcceptNo());
+        result.put("unitName", acceptOrderDO.getUnitName());
+        result.put("unitAddress", acceptOrderDO.getUnitAddress());
+        result.put("unitCode", acceptOrderDO.getUnitCode());
+        if (acceptOrderDO.getAppointmentDate() != null){
+            result.put("checkDate", acceptOrderDO.getAppointmentDate().format(dateFormat));
+        }
+        result.put("zipCode", acceptOrderDO.getZipCode());
+        result.put("contact", acceptOrderDO.getUnitContact());
+        result.put("contactPhone", acceptOrderDO.getUnitPhone());
+        result.put("SLCK", "");
+
+        //企业信息
+        if (acceptOrderDO.getUnitCode() != null){
+            ClientUnitDTO clientUnit = clientUnitApi.getClientUnitByCode(acceptOrderDO.getUnitCode()).getData();
+            if (clientUnit !=  null){
+                result.put("socialCreditCode", clientUnit.getSocialCreditCode());
+//                result.put("unitContact", clientUnit.getContact());
+//                result.put("unitContactPhone", clientUnit.getTel());
+
+                if (clientUnit.getIsUseUnit().equals("1")){
+                    result.put("isUseUnit", "true");
+                }else {
+                    result.put("isUseUnit", "false");
+                }
+
+                if (clientUnit.getIsInstallUnit().equals("1")){
+                    result.put("isInstallUnit", "true");
+                }else{
+                    result.put("isInstallUnit", "false");
+                }
+
+            }
+        }
+
+        // 填充客户签名
+        BoilerTaskOrderDO taskOrderDO = boilerTaskOrderService.getOne(new LambdaQueryWrapper<BoilerTaskOrderDO>().eq(BoilerTaskOrderDO::getAcceptOrderId, refId));
+        if (taskOrderDO != null){
+            BoilerTaskOrderSignFileDO boilerTaskOrderSignFileDO = boilerTaskOrderSignFileService.selectLastOneByOrderIdAndBusinessType(taskOrderDO.getId(), 100);
+            if (boilerTaskOrderSignFileDO != null){
+                result.put("unitPerson", boilerTaskOrderSignFileDO.getSignUrl());
+                result.put("unitPersonDate", boilerTaskOrderSignFileDO.getSignDate());
+            }
+        }
+
+        List<BoilerAcceptOrderItemDO> boilerAcceptOrderItemDOS = acceptOrderItemMapper.selectList(
+                new LambdaQueryWrapper<BoilerAcceptOrderItemDO>()
+                        .eq(BoilerAcceptOrderItemDO::getOrderId, refId)
+        );
+        List<EquipBoilerDO> equipBoilerDOS = equipBoilerMapper.selectList(
+                new LambdaQueryWrapper<EquipBoilerDO>()
+                        .in(EquipBoilerDO::getId, boilerAcceptOrderItemDOS.stream().map(BoilerAcceptOrderItemDO::getEquipId).toList())
+        );
+        result.put("equipNums", String.valueOf(equipBoilerDOS.size()));
+
+        AtomicInteger number = new AtomicInteger(1);
+        equipBoilerDOS.forEach(equipBoilerDO -> {
+
+            result.put("value1_" + number.get(), String.valueOf(number.get()));
+            result.put("value2_" + number.get(), equipBoilerDO.getUseRegisterNo());
+            result.put("value3_" + number.get(), equipBoilerDO.getBoilerModel());
+            result.put("value4_" + number.get(), equipBoilerDO.getProductCode());
+            result.put("value5_" + number.get(), equipBoilerDO.getEquipCode());
+            if (taskOrderDO != null){
+                List<BoilerTaskOrderItemReportDO> boilerTaskOrderItemReportDOS = boilerTaskOrderItemReportMapper.selectList(new LambdaQueryWrapperX<BoilerTaskOrderItemReportDO>()
+                        .eq(BoilerTaskOrderItemReportDO::getOrderId, taskOrderDO.getId()));
+                if (!boilerTaskOrderItemReportDOS.isEmpty()){
+                    List<String> reportNames = boilerTaskOrderItemReportDOS.stream().map(BoilerTaskOrderItemReportDO::getReportName).toList();
+                    result.put("value6_" + number.get(), reportNames);
+                }
+
+                BoilerTaskOrderItemDO boilerTaskOrderItemDO = boilerTaskOrderItemMapper.selectOne(new LambdaQueryWrapper<BoilerTaskOrderItemDO>()
+                        .eq(BoilerTaskOrderItemDO::getOrderId, taskOrderDO.getId())
+                        .eq(BoilerTaskOrderItemDO::getEquipId, equipBoilerDO.getId()));
+                if (boilerTaskOrderItemDO != null){
+                    result.put("value7_" + number.get(), boilerTaskOrderItemDO.getFee());
+                    result.put("value8_" + number.get(), "-");
+                    result.put("value9_" + number.get(), boilerTaskOrderItemDO.getFee());
+                }
+
+            }
+
+            number.getAndIncrement();
+
+        });
+
+        if (taskOrderDO != null){
+            String managerId = taskOrderDO.getManagerId();
+            if (managerId != null) {
+                AdminUserRespDTO checkedData = adminUserApi.getUser(managerId).getCheckedData();
+                if (checkedData != null) {
+                    result.put("confirmPerson", checkedData.getSignUrl());
+                    result.put("confirmPersonDate", taskOrderDO.getConfirmDate());
+                }
+            }
+
+            result.put("recipient", taskOrderDO.getRecipient());
+            result.put("recipientPhone", taskOrderDO.getRecipientPhone());
+            result.put("recipientEmail", taskOrderDO.getRecipientEmail());
+
+            // 将金额转换为中文大写金额
+            if (taskOrderDO.getActualAmount() != null) {
+                result.put("totalAmount", taskOrderDO.getActualAmount().setScale(2, java.math.RoundingMode.HALF_UP));
+                result.put("money1", AmountConvertUtil.convertAmountToChineseDigits(taskOrderDO.getActualAmount()));
+            }
+        }
+
+        return result;
+    }
+
+}