Browse Source

日报相关接口编写

wangmiaomiao 10 months ago
parent
commit
6ad8a4ae3d

+ 40 - 14
slibra-admin/src/main/java/com/slibra/web/controller/business/TXinyiDailyController.java

@@ -4,18 +4,13 @@ import java.util.List;
 import javax.servlet.http.HttpServletResponse;
 
 import com.slibra.business.domain.TXinyiDaily;
+import com.slibra.business.mapper.TXinyiDailyMapper;
 import com.slibra.business.service.ITXinyiDailyService;
 import com.slibra.common.utils.poi.ExcelUtil;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.*;
 import com.slibra.common.annotation.Log;
 import com.slibra.common.core.controller.BaseController;
 import com.slibra.common.core.domain.AjaxResult;
@@ -35,10 +30,13 @@ public class TXinyiDailyController extends BaseController
     @Autowired
     private ITXinyiDailyService tXinyiDailyService;
 
+    @Autowired
+    private TXinyiDailyMapper xinyiDailyMapper;
+
     /**
      * 查询信义日报数据列表
      */
-    @PreAuthorize("@ss.hasPermi('system:daily:list')")
+//    @PreAuthorize("@ss.hasPermi('system:daily:list')")
     @GetMapping("/list")
     public TableDataInfo list(TXinyiDaily tXinyiDaily)
     {
@@ -50,7 +48,7 @@ public class TXinyiDailyController extends BaseController
     /**
      * 导出信义日报数据列表
      */
-    @PreAuthorize("@ss.hasPermi('system:daily:export')")
+//    @PreAuthorize("@ss.hasPermi('system:daily:export')")
     @Log(title = "信义日报数据", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
     public void export(HttpServletResponse response, TXinyiDaily tXinyiDaily)
@@ -63,7 +61,7 @@ public class TXinyiDailyController extends BaseController
     /**
      * 获取信义日报数据详细信息
      */
-    @PreAuthorize("@ss.hasPermi('system:daily:query')")
+//    @PreAuthorize("@ss.hasPermi('system:daily:query')")
     @GetMapping(value = "/{ID}")
     public AjaxResult getInfo(@PathVariable("ID") Long ID)
     {
@@ -73,7 +71,7 @@ public class TXinyiDailyController extends BaseController
     /**
      * 新增信义日报数据
      */
-    @PreAuthorize("@ss.hasPermi('system:daily:add')")
+//    @PreAuthorize("@ss.hasPermi('system:daily:add')")
     @Log(title = "信义日报数据", businessType = BusinessType.INSERT)
     @PostMapping
     public AjaxResult add(@RequestBody TXinyiDaily tXinyiDaily)
@@ -84,7 +82,7 @@ public class TXinyiDailyController extends BaseController
     /**
      * 修改信义日报数据
      */
-    @PreAuthorize("@ss.hasPermi('system:daily:edit')")
+//    @PreAuthorize("@ss.hasPermi('system:daily:edit')")
     @Log(title = "信义日报数据", businessType = BusinessType.UPDATE)
     @PutMapping
     public AjaxResult edit(@RequestBody TXinyiDaily tXinyiDaily)
@@ -95,11 +93,39 @@ public class TXinyiDailyController extends BaseController
     /**
      * 删除信义日报数据
      */
-    @PreAuthorize("@ss.hasPermi('system:daily:remove')")
+//    @PreAuthorize("@ss.hasPermi('system:daily:remove')")
     @Log(title = "信义日报数据", businessType = BusinessType.DELETE)
 	@DeleteMapping("/{IDs}")
     public AjaxResult remove(@PathVariable Long[] IDs)
     {
         return toAjax(tXinyiDailyService.deleteTXinyiDailyByIDs(IDs));
     }
+
+
+    //---------------下面是手动新增的接口---------------
+
+    /**
+     *
+     * 通过化验日期获取当天的日报信息
+     * @param testDate
+     * @return
+     */
+    @GetMapping(value = "/getDetailByDay")
+    public AjaxResult getDetailByDay(@RequestParam String testDate)
+    {
+        //改成用SQL处理
+        return success(xinyiDailyMapper.getDetailByDay(testDate));
+    }
+
+
+    /**
+     * 获取最近30天的日期,并返回是否已经填写了日报
+     * @return
+     */
+    @GetMapping(value = "/getRecently30CountInfo")
+    public AjaxResult getRecently30CountInfo()
+    {
+        //改成用SQL处理
+        return success(tXinyiDailyService.getRecently30CountInfo());
+    }
 }

+ 2 - 0
slibra-common/src/main/java/com/slibra/common/constant/MyConstants.java

@@ -54,6 +54,8 @@ public class MyConstants {
     public static final String WARNING_DEFAULT_CREATE = "task-job";
     public static final String DEFAULT_ID_IDENTIFIER = "@@id@@";
     public static final int MAX_COUNT = 30;
+
+    public static final int DAILY_RECORDS_TOTAL = 30;
     public static final String JIAN_BAO_END = "简报";
 
     //简报的prompt

+ 2 - 0
slibra-system/src/main/java/com/slibra/business/mapper/TXinyiDailyMapper.java

@@ -69,4 +69,6 @@ public interface TXinyiDailyMapper
     TXinyiDaily selectNewestData();
 
     List<TXinyiDaily> selectNRecords(int size);
+
+    TXinyiDaily getDetailByDay(String testDate);
 }

+ 33 - 0
slibra-system/src/main/java/com/slibra/business/res/XinyiDailySimple.java

@@ -0,0 +1,33 @@
+package com.slibra.business.res;
+
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.slibra.common.annotation.Excel;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+
+@Builder
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class XinyiDailySimple {
+
+
+
+    /** 主键 */
+    private Long ID;
+
+    /** 日期 */
+    private String testDate;
+
+    /** 该日期是否已经填写了日报 */
+    private boolean exists = false;//默认不存在
+
+
+
+
+}

+ 3 - 0
slibra-system/src/main/java/com/slibra/business/service/ITXinyiDailyService.java

@@ -1,6 +1,7 @@
 package com.slibra.business.service;
 
 import com.slibra.business.domain.TXinyiDaily;
+import com.slibra.business.res.XinyiDailySimple;
 
 import java.util.List;
 
@@ -59,4 +60,6 @@ public interface ITXinyiDailyService
      * @return 结果
      */
     public int deleteTXinyiDailyByID(Long ID);
+
+    List<XinyiDailySimple> getRecently30CountInfo();
 }

+ 71 - 8
slibra-system/src/main/java/com/slibra/business/service/impl/TXinyiDailyServiceImpl.java

@@ -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;
+    }
 }

+ 4 - 0
slibra-system/src/main/resources/mapper/business/TXinyiDailyMapper.xml

@@ -385,4 +385,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <select id="selectNRecords" resultMap="TXinyiDailyResult">
         <include refid="selectTXinyiDailyVo"/> order by id desc limit #{size}
     </select>
+
+    <select id="getDetailByDay" resultMap="TXinyiDailyResult">
+        <include refid="selectTXinyiDailyVo"/> where TEST_DATE = #{testDate} limit 1
+    </select>
 </mapper>