package cn.com.goldenwater.dcproj.service.impl; import cn.com.goldenwater.dcproj.dao.TaskItemDayDao; import cn.com.goldenwater.dcproj.dto.BisInspTaskDthDayDto; import cn.com.goldenwater.dcproj.dto.TaskItemDayDto; import cn.com.goldenwater.dcproj.model.BisInspTaskDthDay; import cn.com.goldenwater.dcproj.model.TaskItemDay; import cn.com.goldenwater.dcproj.param.BisInspTaskDthDayParam; import cn.com.goldenwater.dcproj.param.TaskItemDayParam; import cn.com.goldenwater.dcproj.service.OlBisInspOrgService; import cn.com.goldenwater.dcproj.service.TaskItemDayService; import cn.com.goldenwater.core.service.AbstractCrudService; import cn.com.goldenwater.dcproj.task.DayTypeRegService; import cn.com.goldenwater.dcproj.utils.AdLevelUtil; import cn.com.goldenwater.dcproj.utils.DateUtils; import com.github.pagehelper.PageHelper; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import cn.com.goldenwater.id.util.UuidUtil; import java.util.*; /** * @author lhc * @date 2020-10-20 */ @Service @Transactional public class TaskItemDayServiceImpl extends AbstractCrudService implements TaskItemDayService { @Autowired private TaskItemDayDao taskItemDayDao; @Autowired private OlBisInspOrgService olBisInspOrgService; public TaskItemDayServiceImpl(TaskItemDayDao taskItemDayDao) { super(taskItemDayDao); this.taskItemDayDao = taskItemDayDao; } @Override public int insert(TaskItemDay taskItemDay) { // 生成uuid String uuid = UuidUtil.uuid(); // 插入前判断是否存在 存在则更新,不存在则插入 TaskItemDayParam taskItemDayParam = new TaskItemDayParam(); taskItemDayParam.setAdCode(taskItemDay.getAdCode()); taskItemDayParam.setObjType(taskItemDay.getObjType()); taskItemDayParam.setTm(taskItemDay.getTm()); taskItemDayParam.setItemName(taskItemDay.getItemName()); List bisInspTaskDthDays = taskItemDayDao.findList(taskItemDayParam); taskItemDay.setUptm(new Date()); if (bisInspTaskDthDays.size() == 1) { taskItemDay.setId(bisInspTaskDthDays.get(0).getId()); return this.taskItemDayDao.update(taskItemDay); } else { taskItemDay.setId(uuid); taskItemDay.setIntm(new Date()); taskItemDay.setDataStat("0"); return this.taskItemDayDao.insert(taskItemDay); } } @Override public int update(TaskItemDay taskItemDay) { taskItemDay.setUptm(new Date()); return this.taskItemDayDao.update(taskItemDay); } @Override public int delete(String id) { return this.taskItemDayDao.delete(id); } @Override public List find(TaskItemDayDto taskItemDayDto) { setDate(taskItemDayDto); // 判断市县级别 taskItemDayDto.setAdGrad("3"); if (StringUtils.isNotBlank(taskItemDayDto.getAdCode())){ String addvcd = AdLevelUtil.getAddvcd(taskItemDayDto.getAdCode()); taskItemDayDto.setAdCode(addvcd); if (addvcd.length() == 4) { // 市级编码 taskItemDayDto.setAdGrad("4"); } } else { // 没有AD_CODE, 设置指定省份,防止获取到多个省数据 String province = AdLevelUtil.getAddvcd(olBisInspOrgService.getProvince(taskItemDayDto.getOrgId())); taskItemDayDto.setAdCode(province); } if(StringUtils.isNotBlank(taskItemDayDto.getObjType())){ taskItemDayDto.setObjType(String.valueOf(Integer.parseInt(taskItemDayDto.getObjType()))); } TaskItemDayParam taskItemDayParam = new TaskItemDayParam(); BeanUtils.copyProperties(taskItemDayDto, taskItemDayParam); List taskItemDayList = taskItemDayDao.findForCity(taskItemDayParam); for (TaskItemDay taskItemDay : taskItemDayList){ taskItemDay.setItemName(Optional.ofNullable(taskItemDay.getItemName()).orElse("")); taskItemDay.setErrorPlbm(Optional.ofNullable(taskItemDay.getErrorPlbm()).orElse(0)); taskItemDay.setErrorsPlbm(Optional.ofNullable(taskItemDay.getErrorsPlbm()).orElse(0)); taskItemDay.setWarmPlbm(Optional.ofNullable(taskItemDay.getWarmPlbm()).orElse(0)); taskItemDay.setInfoPlbm(Optional.ofNullable(taskItemDay.getInfoPlbm()).orElse(0)); taskItemDay.setPblmLogSize(Optional.ofNullable(taskItemDay.getPblmLogSize()).orElse(0)); taskItemDay.setMendSize(Optional.ofNullable(taskItemDay.getMendSize()).orElse(0)); taskItemDay.setPblmSize(Optional.ofNullable(taskItemDay.getPblmSize()).orElse(0)); } return taskItemDayList; } private void setDate(TaskItemDayDto taskItemDayDto) { // 1. 判断 时间类别 String timeType = Optional.ofNullable(taskItemDayDto) .map(TaskItemDayDto::getTimeType) .orElse(""); if(null != timeType && timeType.contains("_")){ //自定义时间段 String[] dateStr = timeType.split("_"); if( 2 == dateStr.length){ taskItemDayDto.setSttm(dateStr[0]); taskItemDayDto.setEntm(dateStr[1]); return ; } } Date entm = DayTypeRegService.getToday(); Calendar sttm = Calendar.getInstance(); switch (timeType) { // 近一个月 case "1": sttm.add(Calendar.MONTH, -1); break; // 近三个月 case "2": sttm.add(Calendar.MONTH, -3); break; // 近半年 case "3": sttm.add(Calendar.MONTH, -6); break; // 近一年 case "4": sttm.add(Calendar.YEAR, -1); break; case "6": sttm.set(Integer.parseInt(DateUtils.getToday("yyyy")), Calendar.JANUARY, 1); break; default: } assert taskItemDayDto != null; taskItemDayDto.setSttm(DateUtils.Calendar2Str(sttm, "yyyy-MM-dd")); taskItemDayDto.setEntm(DateUtils.Date2Str(entm, "yyyy-MM-dd")); } }