lyh
2025-06-30 0843d9fa608a6d319d9d1c37860a0f16ce263a19
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/OperationCertificateServiceImpl.java
@@ -1,14 +1,18 @@
package org.jeecg.modules.eam.service.impl;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.modules.eam.entity.DeductionItem;
import org.jeecg.modules.eam.entity.OperationCertificate;
import org.jeecg.modules.eam.entity.OperationCertificateDetail;
import org.jeecg.modules.eam.mapper.OperationCertificateDetailMapper;
import org.jeecg.modules.eam.mapper.OperationCertificateMapper;
import org.jeecg.modules.eam.service.IDeductionItemService;
import org.jeecg.modules.eam.service.IOperationCertificateService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import java.io.Serializable;
import java.util.List;
import java.util.Collection;
@@ -16,62 +20,113 @@
/**
 * @Description: 操作证书管理
 * @Author: jeecg-boot
 * @Date:   2023-10-17
 * @Date: 2023-10-17
 * @Version: V1.0
 */
@Service
public class OperationCertificateServiceImpl extends ServiceImpl<OperationCertificateMapper, OperationCertificate> implements IOperationCertificateService {
   @Autowired
   private OperationCertificateMapper operationCertificateMapper;
   @Autowired
   private OperationCertificateDetailMapper operationCertificateDetailMapper;
   @Override
   @Transactional(rollbackFor = Exception.class)
   public void saveMain(OperationCertificate operationCertificate, List<OperationCertificateDetail> operationCertificateDetailList) {
      operationCertificateMapper.insert(operationCertificate);
      if(operationCertificateDetailList!=null && operationCertificateDetailList.size()>0) {
         for(OperationCertificateDetail entity:operationCertificateDetailList) {
            //外键设置
            entity.setOperationCertificateId(operationCertificate.getId());
            operationCertificateDetailMapper.insert(entity);
         }
      }
   }
    @Autowired
    private OperationCertificateMapper operationCertificateMapper;
    @Autowired
    private OperationCertificateDetailMapper operationCertificateDetailMapper;
    @Autowired
    private IDeductionItemService deductionItemService;
   @Override
   @Transactional(rollbackFor = Exception.class)
   public void updateMain(OperationCertificate operationCertificate,List<OperationCertificateDetail> operationCertificateDetailList) {
      operationCertificateMapper.updateById(operationCertificate);
      //1.先删除子表数据
      operationCertificateDetailMapper.deleteByMainId(operationCertificate.getId());
      //2.子表数据重新插入
      if(operationCertificateDetailList!=null && operationCertificateDetailList.size()>0) {
         for(OperationCertificateDetail entity:operationCertificateDetailList) {
            //外键设置
            entity.setOperationCertificateId(operationCertificate.getId());
            operationCertificateDetailMapper.insert(entity);
         }
      }
   }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void saveMain(OperationCertificate operationCertificate, List<OperationCertificateDetail> operationCertificateDetailList) {
//        operationCertificateMapper.insert(operationCertificate);
//        if (operationCertificateDetailList != null && operationCertificateDetailList.size() > 0) {
//            for (OperationCertificateDetail entity : operationCertificateDetailList) {
//                //外键设置
//                entity.setOperationCertificateId(operationCertificate.getId());
//                operationCertificateDetailMapper.insert(entity);
//            }
//        }
        operationCertificateMapper.insert(operationCertificate);
        String equipmentIds = operationCertificate.getEquipmentIds();
        Integer currentCycleScore = operationCertificate.getCurrentCycleScore();
        for (OperationCertificateDetail entity : operationCertificateDetailList) {
            if ("addEquipment".equals(entity.getType()) && !equipmentIds.contains(entity.getEquipmentId())) {
                equipmentIds = equipmentIds + "," + entity.getEquipmentId();
            } else if ("deduction".equals(entity.getType())) {
                String deductionItemId = entity.getDeductionItem();
                Integer deductionScore = deductionItemService.getById(deductionItemId).getDeductionScore();
                currentCycleScore = currentCycleScore - deductionScore;
            }
            //外键设置
            entity.setOperationCertificateId(operationCertificate.getId());
            operationCertificateDetailMapper.insert(entity);
   @Override
   @Transactional(rollbackFor = Exception.class)
   public void delMain(String id) {
      operationCertificateDetailMapper.deleteByMainId(id);
      operationCertificateMapper.deleteById(id);
   }
        }
        operationCertificate.setEquipmentIds(equipmentIds);
        if (currentCycleScore <= 0) {
            currentCycleScore = 0;
            // 当分数为0时,设置操作证的状态为禁用
            operationCertificate.setStatus(CommonConstant.STATUS_0);
        }
        operationCertificate.setCurrentCycleScore(currentCycleScore);
        operationCertificateMapper.updateById(operationCertificate);
   @Override
   @Transactional(rollbackFor = Exception.class)
   public void delBatchMain(Collection<? extends Serializable> idList) {
      for(Serializable id:idList) {
         operationCertificateDetailMapper.deleteByMainId(id.toString());
         operationCertificateMapper.deleteById(id);
      }
   }
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void updateMain(OperationCertificate operationCertificate, List<OperationCertificateDetail> operationCertificateDetailList) {
//      operationCertificateMapper.updateById(operationCertificate);
        //1.先删除子表数据
//      operationCertificateDetailMapper.deleteByMainId(operationCertificate.getId());
//      //2.子表数据重新插入
//      if(operationCertificateDetailList!=null && operationCertificateDetailList.size()>0) {
//         for(OperationCertificateDetail entity:operationCertificateDetailList) {
//            //外键设置
//            entity.setOperationCertificateId(operationCertificate.getId());
//            operationCertificateDetailMapper.insert(entity);
//         }
//      }
        // 新增设备更新主表的equipmentIds字段,新增扣分则根据扣分项更新当前分数,分数为0时候禁用操作证
        String equipmentIds = operationCertificate.getEquipmentIds();
        Integer currentCycleScore = operationCertificate.getCurrentCycleScore();
        for (OperationCertificateDetail entity : operationCertificateDetailList) {
            if ("addEquipment".equals(entity.getType()) && !equipmentIds.contains(entity.getEquipmentId())) {
                equipmentIds = equipmentIds + "," + entity.getEquipmentId();
            } else if ("deduction".equals(entity.getType())) {
                String deductionItemId = entity.getDeductionItem();
                Integer deductionScore = deductionItemService.getById(deductionItemId).getDeductionScore();
                currentCycleScore = currentCycleScore - deductionScore;
            }
            //外键设置
            entity.setOperationCertificateId(operationCertificate.getId());
            operationCertificateDetailMapper.insert(entity);
        }
        operationCertificate.setEquipmentIds(equipmentIds);
        if (currentCycleScore <= 0) {
            currentCycleScore = 0;
            // 当分数为0时,设置操作证的状态为禁用
            operationCertificate.setStatus(CommonConstant.STATUS_0);
        }
        operationCertificate.setCurrentCycleScore(currentCycleScore);
        operationCertificateMapper.updateById(operationCertificate);
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void delMain(String id) {
        operationCertificateDetailMapper.deleteByMainId(id);
        operationCertificateMapper.deleteById(id);
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void delBatchMain(Collection<? extends Serializable> idList) {
        for (Serializable id : idList) {
            operationCertificateDetailMapper.deleteByMainId(id.toString());
            operationCertificateMapper.deleteById(id);
        }
    }
}