|
|
@@ -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;
|
|
|
+ }
|
|
|
+
|
|
|
+}
|