package cn.com.goldenwater.dcproj.service.impl.tac; import cn.com.goldenwater.dcproj.dao.TacExprRcmmDao; import cn.com.goldenwater.dcproj.dao.TacExprRcmmRcrdDao; import cn.com.goldenwater.dcproj.dto.TacCountDto; import cn.com.goldenwater.dcproj.dto.TacExprRcmmRcrdCountDto; import cn.com.goldenwater.dcproj.dto.TacExprRcmmRcrdDto; import cn.com.goldenwater.dcproj.model.TacExprRcmm; import cn.com.goldenwater.dcproj.model.TacExprRcmmRcrd; import cn.com.goldenwater.dcproj.param.TacExprRcmmParam; import cn.com.goldenwater.dcproj.param.TacExprRcmmRcrdParam; import cn.com.goldenwater.dcproj.service.TacExprRcmmRcrdService; import cn.com.goldenwater.core.service.AbstractCrudService; import cn.com.goldenwater.dcproj.utils.FormatFieldUtil; import cn.com.goldenwater.id.util.UuidUtil; import com.github.pagehelper.PageHelper; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; /** * @author lune * @date 2019-11-13 */ @Service @Transactional public class TacExprRcmmRcrdServiceImpl extends AbstractCrudService implements TacExprRcmmRcrdService { @Autowired private TacExprRcmmRcrdDao tacExprRcmmRcrdDao; @Autowired private TacExprRcmmDao rcmmDao; public TacExprRcmmRcrdServiceImpl(TacExprRcmmRcrdDao tacExprRcmmRcrdDao) { super(tacExprRcmmRcrdDao); this.tacExprRcmmRcrdDao = tacExprRcmmRcrdDao; } @Override public List getRcrdDtoList(TacExprRcmmRcrdParam tacExprRcmmRcrdParam) { List list = tacExprRcmmRcrdDao.getRcrdDtoList(tacExprRcmmRcrdParam); return list; } @Override public int cleanRcrdByExprTime(TacExprRcmmRcrdDto dto) { int a = tacExprRcmmRcrdDao.cleanRcrdByExprTime(dto); return 0; } @Override public boolean saveRcrdDto(TacExprRcmmRcrdDto dto) throws ParseException { if (dto == null) { return false; } if (dto.getRcmmList() == null || dto.getRcmmList().size() == 0) { return true; } Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(dto.getExprTm()); TacExprRcmmParam rcmmParam = new TacExprRcmmParam(); rcmmParam.setExprTm(dto.getExprTm()); List list = rcmmDao.getRcmmListByTime(rcmmParam); dto.getRcmmList().forEach(rcmm -> { int index = -1; if ((index = isContains(list,rcmm)) > -1) { list.remove(index); } else { TacExprRcmmRcrd rcmmRcrd = new TacExprRcmmRcrd(); rcmmRcrd.setId(UuidUtil.uuid()); rcmmRcrd.setIntm(date); rcmmRcrd.setUptm(date); rcmmRcrd.setState("1"); rcmmRcrd.setExprRcmmId(rcmm.getId()); rcmmRcrd.setPersId(dto.getPersId()); rcmmRcrd.setDataStat("0"); tacExprRcmmRcrdDao.insert(rcmmRcrd); } }); if (list.size() > 0) { list.forEach(rcmm -> { TacExprRcmmRcrdParam rcmmRcrdParam = new TacExprRcmmRcrdParam(); rcmmRcrdParam.setIntm(date); rcmmRcrdParam.setExprRcmmId(rcmm.getId()); tacExprRcmmRcrdDao.deleteBy(rcmmRcrdParam); }); } return true; } private int isContains(List list, TacExprRcmm rcmm) { if (list == null || list.isEmpty()) { return -1; } for (TacExprRcmm tacExprRcmm : list) { if (tacExprRcmm.getId().equals(rcmm.getId())) { return list.indexOf(tacExprRcmm); } } return -1; } @Override public int updateRcmmListByExprTime(TacExprRcmmRcrdDto dto) { if (dto == null || StringUtils.isBlank(dto.getExprTm())) { return 0; } int result = rcmmDao.updateByExprTime(dto); return 0; } @Override public List countRcrdByAdCode(TacExprRcmmRcrdParam tacExprRcmmRcrdParam) { List list = tacExprRcmmRcrdDao.countRcrdByAdCode(tacExprRcmmRcrdParam); Map map = new HashMap<>(); if (list.size() > 0) { list.forEach(tacCountDto -> { if (!map.containsKey(tacCountDto.getCode())) { TacExprRcmmRcrdCountDto dto = new TacExprRcmmRcrdCountDto(); dto.setAdCode(tacCountDto.getCode()); dto.setAdName(tacCountDto.getName()); setTacExprRcmmCountValue(dto,tacCountDto); map.put(tacCountDto.getCode(), dto); } else { setTacExprRcmmCountValue(map.get(tacCountDto.getCode()), tacCountDto); } }); } List result = new ArrayList(map.values()); result.forEach(tacExprRcmmRcrdCountDto -> { if (tacExprRcmmRcrdCountDto.getCount() != null && tacExprRcmmRcrdCountDto.getCount() > 0) { tacExprRcmmRcrdCountDto.setRcmm("1"); } formatField(tacExprRcmmRcrdCountDto); }); return result; } private void formatField(TacExprRcmmRcrdCountDto tacExprRcmmRcrdCountDto) { if (StringUtils.isBlank(tacExprRcmmRcrdCountDto.getRcmm())) { tacExprRcmmRcrdCountDto.setRcmm("2"); } tacExprRcmmRcrdCountDto.setRcmm(FormatFieldUtil.commonFormat(tacExprRcmmRcrdCountDto.getRcmm())); } private void setTacExprRcmmCountValue(TacExprRcmmRcrdCountDto tacExprRcmmRcrdCountDto, TacCountDto tacCountDto) { if (tacExprRcmmRcrdCountDto == null || tacCountDto == null) { return; } Long allCount = tacExprRcmmRcrdCountDto.getCount() == null ? new Long(0) : tacExprRcmmRcrdCountDto.getCount(); Long count = Long.valueOf(tacCountDto.getCount()) == null ? new Long(0) : Long.valueOf(tacCountDto.getCount()); switch (tacCountDto.getRoleType() == null ? "" : tacCountDto.getRoleType()) { case "20": tacExprRcmmRcrdCountDto.setSpeCount(count); break; case "19": tacExprRcmmRcrdCountDto.setAssCount(count); break; case "11": tacExprRcmmRcrdCountDto.setEarCount(count); break; case "12": tacExprRcmmRcrdCountDto.setDevCount(count); break; case "13": tacExprRcmmRcrdCountDto.setPlanCount(count); break; case "14": tacExprRcmmRcrdCountDto.setFincount(count); break; case "15": tacExprRcmmRcrdCountDto.setPlanCount(count); break; case "16": tacExprRcmmRcrdCountDto.setSafeCount(count); break; } tacExprRcmmRcrdCountDto.setCount(allCount + count); } @Override public List getRcmmRcrdList(TacExprRcmmRcrdParam tacExprRcmmRcrdParam) { List list = tacExprRcmmRcrdDao.getRcmmRcrdList(tacExprRcmmRcrdParam); return list; } }