|
@@ -1,19 +1,27 @@
|
|
|
package com.slibra.business.service.impl;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
+import java.time.LocalDate;
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
+import java.util.Objects;
|
|
|
|
|
|
import com.alibaba.fastjson2.JSON;
|
|
|
import com.slibra.business.domain.TXinyiDaily;
|
|
|
import com.slibra.business.mapper.TXinyiDailyMapper;
|
|
|
+import com.slibra.business.res.XinyiDailySimple;
|
|
|
import com.slibra.business.service.ITXinyiDailyService;
|
|
|
+import com.slibra.common.exception.ServiceException;
|
|
|
import com.slibra.common.utils.DateUtils;
|
|
|
import com.slibra.common.utils.SecurityUtils;
|
|
|
+import com.slibra.common.utils.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import static com.slibra.common.constant.MyConstants.DAILY_RECORDS_TOTAL;
|
|
|
+
|
|
|
/**
|
|
|
* 信义日报数据Service业务层处理
|
|
|
*
|
|
@@ -60,11 +68,35 @@ public class TXinyiDailyServiceImpl implements ITXinyiDailyService
|
|
|
public int insertTXinyiDaily(TXinyiDaily tXinyiDaily)
|
|
|
{
|
|
|
//2024年6月5日15:28:13 一些额外的字段处理
|
|
|
- this.addExtra(tXinyiDaily);
|
|
|
- return tXinyiDailyMapper.insertTXinyiDaily(tXinyiDaily);
|
|
|
+ //2024年6月9日11:11:49 编辑和新增接口改成一个
|
|
|
+ Long id = tXinyiDaily.getID();
|
|
|
+ this.addExtra(tXinyiDaily, id);
|
|
|
+ if(Objects.isNull(id))//新增
|
|
|
+ return tXinyiDailyMapper.insertTXinyiDaily(tXinyiDaily);
|
|
|
+ return tXinyiDailyMapper.updateTXinyiDaily(tXinyiDaily);
|
|
|
}
|
|
|
|
|
|
- private void addExtra(TXinyiDaily tXinyiDaily) {
|
|
|
+ private void addExtra(TXinyiDaily tXinyiDaily, Long id) {
|
|
|
+
|
|
|
+ String testDate = tXinyiDaily.getTestDate();
|
|
|
+ if(StringUtils.isBlank(testDate))
|
|
|
+ throw new ServiceException("日报填写必须要填写日期!");
|
|
|
+ String username = SecurityUtils.getUsername();
|
|
|
+ Date nowDate = DateUtils.getNowDate();
|
|
|
+ if(Objects.isNull(id)){//新增
|
|
|
+ //检查日期是否已经填写过了
|
|
|
+ TXinyiDaily detailByDay = this.tXinyiDailyMapper.getDetailByDay(testDate);
|
|
|
+ if(!Objects.isNull(detailByDay))
|
|
|
+ throw new ServiceException("该日期对应的日报已经填写过了,不可重复填写!");
|
|
|
+ tXinyiDaily.setTestTime(testDate);
|
|
|
+ tXinyiDaily.setCreateBy(username);
|
|
|
+ tXinyiDaily.setCreateTime(nowDate);
|
|
|
+ tXinyiDaily.setCreatedTime(nowDate);
|
|
|
+ }else{//编辑
|
|
|
+ tXinyiDaily.setUpdateBy(username);
|
|
|
+ tXinyiDaily.setUpdateTime(nowDate);
|
|
|
+ }
|
|
|
+
|
|
|
List<BigDecimal> extraList = new ArrayList<>();
|
|
|
extraList.add(tXinyiDaily.getShcHyOneDo());
|
|
|
extraList.add(tXinyiDaily.getShcHyTwoDo());
|
|
@@ -93,11 +125,6 @@ public class TXinyiDailyServiceImpl implements ITXinyiDailyService
|
|
|
extraList.add(tXinyiDaily.getShcHyOneMlvss());
|
|
|
extraList.add(tXinyiDaily.getShcHyTwoMlvss());
|
|
|
tXinyiDaily.setHfxwnndAll(JSON.toJSONString(extraList));
|
|
|
-
|
|
|
- tXinyiDaily.setCreateBy(SecurityUtils.getUsername());
|
|
|
- Date nowDate = DateUtils.getNowDate();
|
|
|
- tXinyiDaily.setCreateTime(nowDate);
|
|
|
- tXinyiDaily.setCreatedTime(nowDate);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -135,4 +162,40 @@ public class TXinyiDailyServiceImpl implements ITXinyiDailyService
|
|
|
{
|
|
|
return tXinyiDailyMapper.deleteTXinyiDailyByID(ID);
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<XinyiDailySimple> getRecently30CountInfo() {
|
|
|
+ //获取最近30天的日期
|
|
|
+ //今天的日期
|
|
|
+ LocalDate end = LocalDate.now();
|
|
|
+ //获取N天之前的日期
|
|
|
+ LocalDate begin = end.plusDays(-DAILY_RECORDS_TOTAL);
|
|
|
+ //两个日期之间所有的时间-天
|
|
|
+ List<String> allDatesBetween = getAllDatesBetween(begin, end);
|
|
|
+ List<XinyiDailySimple> result = new ArrayList<>(allDatesBetween.size());
|
|
|
+ for (String testDate : allDatesBetween) {
|
|
|
+ XinyiDailySimple xinyiDailySimple = new XinyiDailySimple();
|
|
|
+ xinyiDailySimple.setTestDate(testDate);
|
|
|
+ TXinyiDaily detailByDay = this.tXinyiDailyMapper.getDetailByDay(testDate);
|
|
|
+ if(!Objects.isNull(detailByDay)){
|
|
|
+ xinyiDailySimple.setExists(true);
|
|
|
+ xinyiDailySimple.setID(detailByDay.getID());
|
|
|
+ }
|
|
|
+ result.add(xinyiDailySimple);
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ private static List<String> getAllDatesBetween(LocalDate startDate, LocalDate endDate) {
|
|
|
+ List<String> dates = new ArrayList<>();
|
|
|
+ LocalDate currentDate = startDate;
|
|
|
+
|
|
|
+ while (!currentDate.isAfter(endDate)) {
|
|
|
+ dates.add(currentDate.format(DateTimeFormatter.ofPattern(DateUtils.YYYYMMDD_TS)));
|
|
|
+ currentDate = currentDate.plusDays(1);
|
|
|
+ }
|
|
|
+
|
|
|
+ return dates;
|
|
|
+ }
|
|
|
}
|