|
@@ -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]); // 个位
|
|
|
|
|
+ }
|
|
|
|
|
+}
|