From 4864c87d65e797d2ecd827b1eca9d46aec0950aa Mon Sep 17 00:00:00 2001
From: lyh <925863403@qq.com>
Date: 星期三, 25 六月 2025 11:56:27 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamMajorPartialRepairServiceImpl.java |  120 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 118 insertions(+), 2 deletions(-)

diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamMajorPartialRepairServiceImpl.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamMajorPartialRepairServiceImpl.java
index df56a71..9ab3aaa 100644
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamMajorPartialRepairServiceImpl.java
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamMajorPartialRepairServiceImpl.java
@@ -1,19 +1,135 @@
 package org.jeecg.modules.eam.service.impl;
 
+import cn.hutool.core.collection.CollectionUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.commons.lang3.StringUtils;
+import org.jeecg.common.constant.CommonConstant;
+import org.jeecg.common.constant.DataBaseConstant;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.eam.constant.MajorPartialRepairStatusEnum;
 import org.jeecg.modules.eam.entity.EamMajorPartialRepair;
+import org.jeecg.modules.eam.entity.EamMajorPartialRepairDetail;
 import org.jeecg.modules.eam.mapper.EamMajorPartialRepairMapper;
+import org.jeecg.modules.eam.request.EamMajorPartialRepairQuery;
+import org.jeecg.modules.eam.service.IEamMajorPartialRepairDetailService;
 import org.jeecg.modules.eam.service.IEamMajorPartialRepairService;
+import org.jeecg.modules.system.service.ISysBusinessCodeRuleService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.stream.Collectors;
 
 /**
- * @Description: 澶т慨椤逛慨
+ * @Description: eam_major_partial_repair
  * @Author: jeecg-boot
- * @Date:   2025-05-13
+ * @Date:   2025-06-20
  * @Version: V1.0
  */
 @Service
 public class EamMajorPartialRepairServiceImpl extends ServiceImpl<EamMajorPartialRepairMapper, EamMajorPartialRepair> implements IEamMajorPartialRepairService {
 
+    @Autowired
+    private ISysBusinessCodeRuleService sysBusinessCodeRuleService;
+    @Autowired
+    private IEamMajorPartialRepairDetailService eamMajorPartialRepairDetailService;
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void saveMajorPartialRepair(EamMajorPartialRepair eamMajorPartialRepair) {
+        BigDecimal totalPrice = eamMajorPartialRepair.getEamMajorPartialRepairDetailList().stream()
+                .map(EamMajorPartialRepairDetail::getUnitPrice).reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
+        eamMajorPartialRepair.setRepairCode(sysBusinessCodeRuleService.generateBusinessCodeSeq("MajorPartialRepairRule"));
+        eamMajorPartialRepair.setTotalAmount(totalPrice);
+        eamMajorPartialRepair.setRepairStatus(MajorPartialRepairStatusEnum.PENDING_SUBMISSION.name());
+        eamMajorPartialRepair.setDelFlag(CommonConstant.DEL_FLAG_0);
+        save(eamMajorPartialRepair);
+        eamMajorPartialRepair.getEamMajorPartialRepairDetailList().forEach(eamMajorPartialRepairDetail -> {
+            eamMajorPartialRepairDetail.setRepairId(eamMajorPartialRepair.getId());
+        });
+        eamMajorPartialRepairDetailService.saveBatch(eamMajorPartialRepair.getEamMajorPartialRepairDetailList());
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateMajorPartialRepair(EamMajorPartialRepair eamMajorPartialRepair) {
+        eamMajorPartialRepairDetailService.remove(new LambdaQueryWrapper<EamMajorPartialRepairDetail>()
+                .eq(EamMajorPartialRepairDetail::getRepairId, eamMajorPartialRepair.getId()));
+        BigDecimal totalPrice = eamMajorPartialRepair.getEamMajorPartialRepairDetailList().stream()
+                .map(EamMajorPartialRepairDetail::getUnitPrice).reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
+        eamMajorPartialRepair.setTotalAmount(totalPrice);
+        updateById(eamMajorPartialRepair);
+        eamMajorPartialRepair.getEamMajorPartialRepairDetailList().forEach(eamMajorPartialRepairDetail -> {
+            eamMajorPartialRepairDetail.setRepairId(eamMajorPartialRepair.getId());
+        });
+        eamMajorPartialRepairDetailService.saveBatch(eamMajorPartialRepair.getEamMajorPartialRepairDetailList());
+    }
+
+    @Override
+    public IPage<EamMajorPartialRepair> queryPageList(Page<EamMajorPartialRepair> page, EamMajorPartialRepairQuery query) {
+        QueryWrapper<EamMajorPartialRepair> queryWrapper = Wrappers.query();
+        if (Objects.nonNull(query)) {
+            if (StringUtils.isNotBlank(query.getRepairCode())) {
+                queryWrapper.like("t.repair_code", query.getRepairCode());
+            }
+            if (StringUtils.isNotBlank(query.getRepairName())) {
+                queryWrapper.like("t.repair_name", query.getRepairName());
+            }
+            if (StringUtils.isNotBlank(query.getRepairStatus())) {
+                queryWrapper.eq("t.repair_status", query.getRepairStatus());
+            }
+            if (StringUtils.isNotBlank(query.getRepairType())) {
+                queryWrapper.like("t.repair_type", query.getRepairType());
+            }
+            if (query.getPlanStartDate() != null && query.getPlanEndDate() != null) {
+                queryWrapper.between("t.plan_start_date", query.getPlanStartDate(), query.getPlanEndDate());
+            }
+            //鎺掑簭
+            if (StringUtils.isNotBlank(query.getColumn()) && StringUtils.isNotBlank(query.getOrder())) {
+                String column = query.getColumn();
+                if (column.endsWith(CommonConstant.DICT_TEXT_SUFFIX)) {
+                    column = column.substring(0, column.lastIndexOf(CommonConstant.DICT_TEXT_SUFFIX));
+                }
+                if (DataBaseConstant.SQL_ASC.equalsIgnoreCase(query.getOrder())) {
+                    queryWrapper.orderByAsc("t." + oConvertUtils.camelToUnderline(column));
+                } else {
+                    queryWrapper.orderByDesc("t." + oConvertUtils.camelToUnderline(column));
+                }
+            } else {
+                queryWrapper.orderByDesc("t.create_time");
+            }
+        }
+        return this.baseMapper.queryPageList(page, queryWrapper);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void fillResult(List<EamMajorPartialRepairDetail> detailList) {
+        List<EamMajorPartialRepairDetail> result = CollectionUtil.newArrayList();
+        detailList.forEach(eamMajorPartialRepairDetail -> {
+            EamMajorPartialRepairDetail detail = new EamMajorPartialRepairDetail();
+            detail.setId(eamMajorPartialRepairDetail.getId());
+            detail.setRepairResult(eamMajorPartialRepairDetail.getRepairResult());
+            detail.setRepairDescription(eamMajorPartialRepairDetail.getRepairDescription());
+            result.add(detail);
+        });
+        eamMajorPartialRepairDetailService.updateBatchById(result);
+        String repairId = detailList.get(0).getRepairId();
+        EamMajorPartialRepair majorPartialRepair = getById(repairId);
+        majorPartialRepair.setRepairStatus(MajorPartialRepairStatusEnum.COMPLETED.name());
+        majorPartialRepair.setActualEndTime(new Date());
+        updateById(majorPartialRepair);
+    }
+
 }

--
Gitblit v1.9.3