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: eam_major_partial_repair
|
* @Author: jeecg-boot
|
* @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);
|
}
|
|
}
|