Przeglądaj źródła

管道服务单

xy 4 dni temu
rodzic
commit
15c301bbe0

+ 1 - 11
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/boiler/QR0413_0415ReportOFData.java

@@ -1,31 +1,21 @@
-package cn.start.tz.module.pressure2.service.dynamicOFData.boiler;
+package cn.start.tz.module.pressure2.service.dynamicOFData.pipe;
 
 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.boilertaskorder.BoilerTaskOrderDO;
-import cn.start.tz.module.pressure2.dal.dataobject.boilertaskorderitem.BoilerTaskOrderItemDO;
 import cn.start.tz.module.pressure2.dal.dataobject.boilertaskordersignfile.BoilerTaskOrderSignFileDO;
-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.pipetaskorder.PipeTaskOrderDO;
 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.equipboiler.EquipBoilerMapper;
 import cn.start.tz.module.pressure2.dal.mysql.equippipe.EquipPipeMapper;
 import cn.start.tz.module.pressure2.dal.mysql.pipeacceptorderitem.PipeAcceptOrderItemMapper;
 import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderitem.PipeTaskOrderItemMapper;
-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.orderreport.OrderReportService;
 import cn.start.tz.module.pressure2.service.pipetaskorder.PipeTaskOrderService;
 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 com.alibaba.fastjson2.JSONArray;
 import com.alibaba.fastjson2.JSONObject;

+ 202 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamicOFData/pipe/QR0424_202404ReportOFData.java

@@ -0,0 +1,202 @@
+package cn.start.tz.module.pressure2.service.dynamicOFData.pipe;
+
+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.boilertaskordersignfile.BoilerTaskOrderSignFileDO;
+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.pipetaskorder.PipeTaskOrderDO;
+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.equippipe.EquipPipeMapper;
+import cn.start.tz.module.pressure2.dal.mysql.pipeacceptorderitem.PipeAcceptOrderItemMapper;
+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.boilertaskordersignfile.BoilerTaskOrderSignFileService;
+import cn.start.tz.module.pressure2.service.dynamicOFData.IDynamicOFData;
+import cn.start.tz.module.pressure2.service.orderreport.OrderReportService;
+import cn.start.tz.module.pressure2.service.pipetaskorder.PipeTaskOrderService;
+import cn.start.tz.module.system.api.dict.DictDataApi;
+import cn.start.tz.module.system.api.user.AdminUserApi;
+import com.alibaba.fastjson2.JSONArray;
+import com.alibaba.fastjson2.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.time.format.DateTimeFormatter;
+import java.util.List;
+import java.util.concurrent.atomic.AtomicInteger;
+
+/**
+ * 管道服务单
+ */
+@Service("QR0424_202404ReportOFData")
+public class QR0424_202404ReportOFData implements IDynamicOFData {
+
+    @Resource
+    private EquipPipeMapper equipPipeMapper;
+
+    @Resource
+    private AcceptOrderMapper acceptOrderMapper;
+
+    @Resource
+    private OrderReportService orderReportService;
+
+    @Resource
+    private PipeAcceptOrderItemMapper acceptOrderItemMapper;
+
+    @Resource
+    private PipeTaskOrderItemMapper pipeTaskOrderItemMapper;
+
+    @Resource
+    private PipeTaskOrderItemReportMapper pipeTaskOrderItemReportMapper;
+
+    @Resource
+    private AdminUserApi adminUserApi;
+
+    @Resource
+    private DictDataApi dictDataApi;
+
+    @Resource
+    private BoilerTaskOrderSignFileService boilerTaskOrderSignFileService;
+
+    @Resource
+    private PipeTaskOrderService pipeTaskOrderService;
+    @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());
+        result.put("zipCode", acceptOrderDO.getZipCode());
+        result.put("contact", acceptOrderDO.getUnitContact());
+        // 检验员签名
+        String orderReportDOId = ruleVO.getParams().getString("orderReportDOId");
+        if (orderReportDOId != null){
+            OrderReportDO orderReportDO = orderReportService.getById(orderReportDOId);
+            result.put("confirmPerson", orderReportDO.getSignUrl());
+            result.put("confirmPersonDate", orderReportDO.getSignDate());
+        }
+        // 填充客户签名
+        PipeTaskOrderDO taskOrderDO = pipeTaskOrderService.getOne(new LambdaQueryWrapper<PipeTaskOrderDO>().eq(PipeTaskOrderDO::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());
+            }
+        }
+        result.put("SLCK", "");
+        result.put("contactPhone", acceptOrderDO.getUnitPhone());
+        result.put("checkDate", acceptOrderDO.getAppointmentDate().format(dateFormat));
+
+        List<PipeAcceptOrderItemDO> pipeAcceptOrderItemDOS = acceptOrderItemMapper.selectList(
+                new LambdaQueryWrapper<PipeAcceptOrderItemDO>()
+                        .eq(PipeAcceptOrderItemDO::getOrderId, refId)
+        );
+        List<EquipPipeDO> equipPipeDOS = equipPipeMapper.selectList(
+                new LambdaQueryWrapper<EquipPipeDO>()
+                        .in(EquipPipeDO::getId, pipeAcceptOrderItemDOS.stream().map(PipeAcceptOrderItemDO::getEquipId).toList())
+        );
+
+        result.put("equipNums", String.valueOf(equipPipeDOS.size()));
+
+        JSONArray voList = new JSONArray();
+        AtomicInteger number = new AtomicInteger(1);
+        equipPipeDOS.forEach(equipPipeDO -> {
+
+            JSONObject vo = new JSONObject();
+            //序号
+            vo.put("value1",String.valueOf(number.getAndIncrement()));
+            vo.put("value2",equipPipeDO.getCertificateNo());
+            vo.put("value3",equipPipeDO.getProjectNo());
+            vo.put("value4",equipPipeDO.getProjectName());
+            vo.put("value5",equipPipeDO.getPipeClass());
+            if (taskOrderDO != null){
+                List<PipeTaskOrderItemReportDO> pipeTaskOrderItemReportDOS = pipeTaskOrderItemReportMapper.selectList(new LambdaQueryWrapperX<PipeTaskOrderItemReportDO>()
+                        .eq(PipeTaskOrderItemReportDO::getOrderId, taskOrderDO.getId()));
+                if (!pipeTaskOrderItemReportDOS.isEmpty()){
+                    List<String> reportNames = pipeTaskOrderItemReportDOS.stream().map(PipeTaskOrderItemReportDO::getReportName).toList();
+                    vo.put("value6",reportNames);
+                }
+            }
+            vo.put("value7","-");
+            voList.add(vo);
+
+        });
+        result.put("table",voList.toJSONString());
+
+        if (taskOrderDO != null){
+
+            result.put("recipient", taskOrderDO.getRecipient());
+            result.put("recipientPhone", taskOrderDO.getRecipientPhone());
+            result.put("recipientEmail", taskOrderDO.getRecipientEmail());
+
+            result.put("totalAmount", taskOrderDO.getShouldAmount().setScale(2, java.math.RoundingMode.HALF_UP));
+            // 将金额转换为中文数字并按位存储
+            if (taskOrderDO.getShouldAmount() != null) {
+                convertAmountToChineseDigits(taskOrderDO.getShouldAmount(), result);
+            }
+        }
+
+        return result;
+    }
+
+    /**
+     * 将金额转换为中文数字并按位存储到result中
+     * money1: 百万位, money2: 十万位, money3: 万位, money4: 千位, money5: 百位, money6: 十位, money7: 个位
+     * @param amount 金额
+     * @param result 结果对象
+     */
+    private void convertAmountToChineseDigits(BigDecimal amount, JSONObject result) {
+        // 中文数字数组
+        String[] chineseDigits = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
+        
+        // 获取整数部分
+        long integerPart = amount.longValue();
+        
+        // 确保不超过百万(9999999)
+        if (integerPart > 9999999) {
+            integerPart = 9999999;
+        }
+        
+        // 提取每一位数字
+        int million = (int)(integerPart / 1000000) % 10;      // 百万位
+        int hundredThousand = (int)(integerPart / 100000) % 10; // 十万位
+        int tenThousand = (int)(integerPart / 10000) % 10;      // 万位
+        int thousand = (int)(integerPart / 1000) % 10;          // 千位
+        int hundred = (int)(integerPart / 100) % 10;            // 百位
+        int ten = (int)(integerPart / 10) % 10;                 // 十位
+        int one = (int)(integerPart % 10);                      // 个位
+        
+        // 存入result
+        result.put("money1", chineseDigits[million]);           // 百万位
+        result.put("money2", chineseDigits[hundredThousand]);   // 十万位
+        result.put("money3", chineseDigits[tenThousand]);       // 万位
+        result.put("money4", chineseDigits[thousand]);          // 千位
+        result.put("money5", chineseDigits[hundred]);           // 百位
+        result.put("money6", chineseDigits[ten]);               // 十位
+        result.put("money7", chineseDigits[one]);               // 个位
+    }
+}