package com.chinaztt.mes.production.service.impl;
|
|
import cn.hutool.core.collection.CollectionUtil;
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.chinaztt.mes.production.dto.ArtificialInformationDTO;
|
import com.chinaztt.mes.production.dto.HandymanTypeDTO;
|
import com.chinaztt.mes.production.entity.ArtificialInformation;
|
import com.chinaztt.mes.production.entity.DutyRecord;
|
import com.chinaztt.mes.production.mapper.ArtificialInformationMapper;
|
import com.chinaztt.mes.production.mapper.DutyRecordMapper;
|
import com.chinaztt.mes.production.mapper.HandymanTypeMapper;
|
import com.chinaztt.mes.production.service.ArtificialInformationService;
|
import com.chinaztt.ztt.common.core.util.R;
|
import lombok.AllArgsConstructor;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.math.BigDecimal;
|
import java.util.ArrayList;
|
import java.util.LinkedHashMap;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.stream.Collectors;
|
|
/**
|
* 杂工明细
|
*
|
* @author cxf
|
* @date 2021-01-21 13:22:22
|
*/
|
@Service
|
@AllArgsConstructor
|
@Transactional(rollbackFor = Exception.class)
|
public class ArtificialInformationServiceImpl extends ServiceImpl<ArtificialInformationMapper, ArtificialInformation> implements ArtificialInformationService {
|
private HandymanTypeMapper handymanTypeMapper;
|
|
@Override
|
public List<Long> saveList(List<ArtificialInformation> artificialInformationList) {
|
List<Long> ids = new ArrayList<Long>();
|
for (ArtificialInformation artificialInformation : artificialInformationList) {
|
baseMapper.insert(artificialInformation);
|
ids.add(artificialInformation.getId());
|
}
|
return ids;
|
}
|
|
@Override
|
public List<ArtificialInformationDTO> getArtificialInformationByDutyRecordId(List<Long> dutyRecordIdList) {
|
List<ArtificialInformationDTO> resultList = new ArrayList<ArtificialInformationDTO>();
|
List<ArtificialInformationDTO> list = baseMapper.getArtificialInformationByDutyRecordId(dutyRecordIdList);
|
if (CollectionUtil.isNotEmpty(list)) {
|
Long id = 0L;
|
// 按人工类型分组
|
Map<Long, List<ArtificialInformationDTO>> map = list.stream().collect(Collectors.groupingBy(ArtificialInformationDTO::getHandymanTypeId, LinkedHashMap::new, Collectors.toList()));
|
for (Map.Entry<Long, List<ArtificialInformationDTO>> entry : map.entrySet()) {
|
List<ArtificialInformationDTO> children = entry.getValue();
|
if (CollectionUtil.isNotEmpty(children)) {
|
ArtificialInformationDTO artificialInformationDTO = new ArtificialInformationDTO();
|
id = id - 1L;
|
artificialInformationDTO.setId(id);
|
artificialInformationDTO.setHandymanName(children.get(0).getHandymanName());
|
artificialInformationDTO.setHandymanTypeId(children.get(0).getHandymanTypeId());
|
artificialInformationDTO.setChildren(children);
|
resultList.add(artificialInformationDTO);
|
// 增加序号index
|
for (int i = 0; i < children.size(); i++) {
|
children.get(i).setIndex(i + 1);
|
}
|
}
|
}
|
}
|
return resultList;
|
}
|
|
@Override
|
public List<ArtificialInformationDTO> getComputationArtificialInformation(ArtificialInformation artificialInformation) {
|
return baseMapper.getComputationArtificialInformation(artificialInformation);
|
}
|
|
@Override
|
public List<ArtificialInformationDTO> getComputationArtificialInformationByList(List<Long> dutyRecordIdList, Long handymanTypeId) {
|
return baseMapper.getComputationArtificialInformationByList(dutyRecordIdList,handymanTypeId);
|
}
|
|
@Override
|
public List<HandymanTypeDTO> getHandymanTypeByDutyRecordId(List<Long> dutyRecordIdList) {
|
return handymanTypeMapper.getHandymanTypeByDutyRecordId(dutyRecordIdList);
|
}
|
|
@Override
|
public String checkPersonDutyTimeById(ArtificialInformation artificialInformation) {
|
String msg = "";
|
ArtificialInformationDTO originalArtificialInformation = baseMapper.selectDtoById(artificialInformation.getId());
|
BigDecimal dutyTime = originalArtificialInformation.getDutyTime();
|
// 校验个人工时是否超过当前班次的时间
|
BigDecimal totalWorkingHours = baseMapper.selectTotalWorkTime(originalArtificialInformation);
|
if (artificialInformation.getWorkingHours() != null) {
|
totalWorkingHours = totalWorkingHours.add(artificialInformation.getWorkingHours());
|
}
|
if (totalWorkingHours.compareTo(dutyTime) == 1) {
|
msg += originalArtificialInformation.getStaffName() + "工时超过当前班次时间:" + totalWorkingHours.stripTrailingZeros().toPlainString() + ",";
|
}
|
// 当日个人工时是否超过12小时
|
BigDecimal totalDayWorkingHours = baseMapper.selectTotalDayWorkTime(originalArtificialInformation);
|
if (artificialInformation.getWorkingHours() != null) {
|
totalDayWorkingHours = totalDayWorkingHours.add(artificialInformation.getWorkingHours());
|
}
|
if (totalDayWorkingHours.compareTo(ComputationServiceImpl.TWELVE) == 1) {
|
msg += originalArtificialInformation.getStaffName() + "今日工时超过12小时:" + totalDayWorkingHours.stripTrailingZeros().toPlainString() + ",";
|
}
|
return msg;
|
}
|
|
@Override
|
public String checkPersonDutyTime(List<ArtificialInformation> artificialInformationList) {
|
String msg = "";
|
if (CollectionUtil.isNotEmpty(artificialInformationList)) {
|
for (ArtificialInformation information : artificialInformationList) {
|
msg += checkPersonDutyTimeById(information);
|
}
|
}
|
return msg;
|
}
|
}
|