feiyu02
2026-01-20 9558ad87cc950bd67306aa31e5f3b7de367258ae
2026.1.20
1. 新增自巡查承诺功能接口
已修改8个文件
已添加1个文件
138 ■■■■■ 文件已修改
src/main/kotlin/cn/flightfeather/supervision/domain/entity/UserSetting.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/kotlin/cn/flightfeather/supervision/domain/entity/UserSettingRecord.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/kotlin/cn/flightfeather/supervision/domain/repository/UserSettingRep.kt 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/LedgerServiceImpl.kt 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/SelfPatrolServiceImpl.kt 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/kotlin/cn/flightfeather/supervision/lightshare/service/SelfPatrolService.kt 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/kotlin/cn/flightfeather/supervision/lightshare/web/SelfPatrolController.kt 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/UserSettingMapper.xml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/UserSettingRecordMapper.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/kotlin/cn/flightfeather/supervision/domain/entity/UserSetting.java
@@ -74,6 +74,12 @@
    private Boolean selfPatrolPromise;
    /**
     * è‡ªå·¡æŸ¥æ‰¿è¯ºä¹¦å†…容
     */
    @Column(name = "sp_promise_content")
    private String spPromiseContent;
    /**
     * @return id
     */
    public Integer getId() {
@@ -364,4 +370,22 @@
    public void setSelfPatrolPromise(Boolean selfPatrolPromise) {
        this.selfPatrolPromise = selfPatrolPromise;
    }
    /**
     * èŽ·å–è‡ªå·¡æŸ¥æ‰¿è¯ºä¹¦å†…å®¹
     *
     * @return sp_promise_content - è‡ªå·¡æŸ¥æ‰¿è¯ºä¹¦å†…容
     */
    public String getSpPromiseContent() {
        return spPromiseContent;
    }
    /**
     * è®¾ç½®è‡ªå·¡æŸ¥æ‰¿è¯ºä¹¦å†…容
     *
     * @param spPromiseContent è‡ªå·¡æŸ¥æ‰¿è¯ºä¹¦å†…容
     */
    public void setSpPromiseContent(String spPromiseContent) {
        this.spPromiseContent = spPromiseContent == null ? null : spPromiseContent.trim();
    }
}
src/main/kotlin/cn/flightfeather/supervision/domain/entity/UserSettingRecord.java
@@ -1,5 +1,6 @@
package cn.flightfeather.supervision.domain.entity;
import java.util.Date;
import javax.persistence.*;
@Table(name = "sm_t_setting_record")
@@ -16,6 +17,12 @@
     */
    @Column(name = "self_patrol_promised")
    private Boolean selfPatrolPromised;
    /**
     * ä¸Šä¸€æ¬¡æ‰¿è¯ºæ—¶é—´
     */
    @Column(name = "last_promised_time")
    private Date lastPromisedTime;
    /**
     * èŽ·å–ç”¨æˆ·id
@@ -52,4 +59,22 @@
    public void setSelfPatrolPromised(Boolean selfPatrolPromised) {
        this.selfPatrolPromised = selfPatrolPromised;
    }
    /**
     * èŽ·å–ä¸Šä¸€æ¬¡æ‰¿è¯ºæ—¶é—´
     *
     * @return last_promised_time - ä¸Šä¸€æ¬¡æ‰¿è¯ºæ—¶é—´
     */
    public Date getLastPromisedTime() {
        return lastPromisedTime;
    }
    /**
     * è®¾ç½®ä¸Šä¸€æ¬¡æ‰¿è¯ºæ—¶é—´
     *
     * @param lastPromisedTime ä¸Šä¸€æ¬¡æ‰¿è¯ºæ—¶é—´
     */
    public void setLastPromisedTime(Date lastPromisedTime) {
        this.lastPromisedTime = lastPromisedTime;
    }
}
src/main/kotlin/cn/flightfeather/supervision/domain/repository/UserSettingRep.kt
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
package cn.flightfeather.supervision.domain.repository
import cn.flightfeather.supervision.domain.mapper.UserSettingMapper
import cn.flightfeather.supervision.domain.mapper.UserSettingRecordMapper
import org.springframework.stereotype.Repository
import java.time.LocalDate
import java.time.LocalDateTime
import java.time.ZoneId
/**
 *
 * @date 2026/1/20
 * @author feiyu02
 */
@Repository
class UserSettingRep(
    private val userSettingMapper: UserSettingMapper,
    private val userSettingRecordMapper: UserSettingRecordMapper,
) {
    /**
     * æŸ¥è¯¢ç”¨æˆ·è‡ªå·¡æŸ¥æ‰¿è¯ºæ˜¯å¦æœ‰æ•ˆ
     * ç­¾ç½²æ—¶é—´çš„当年内为有效
     */
    fun checkIsSelfPatrolPromised(userId: String): Boolean {
        val record = userSettingRecordMapper.selectByPrimaryKey(userId) ?: return false
        record.lastPromisedTime ?: return false
        val now = LocalDate.now().year
        val recordYear = LocalDateTime.ofInstant(record.lastPromisedTime.toInstant(), ZoneId.systemDefault()).year
        return record.selfPatrolPromised && (now == recordYear)
    }
}
src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/LedgerServiceImpl.kt
@@ -11,6 +11,7 @@
import cn.flightfeather.supervision.domain.repository.LedgerMediaFileRep
import cn.flightfeather.supervision.domain.repository.LedgerRep
import cn.flightfeather.supervision.domain.repository.UserInfoRep
import cn.flightfeather.supervision.domain.repository.UserSettingRep
import cn.flightfeather.supervision.infrastructure.utils.DateUtil
import cn.flightfeather.supervision.infrastructure.utils.FileUtil
import cn.flightfeather.supervision.infrastructure.utils.UUIDGenerator
@@ -43,6 +44,7 @@
    private val ledgerMediaFileRep: LedgerMediaFileRep,
    private val userInfoRep: UserInfoRep,
    private val ledgerRep: LedgerRep,
    private val userSettingRep: UserSettingRep,
) : LedgerService {
    @Value("\${imgPath}")
@@ -509,6 +511,7 @@
        sceneType: Int,
        time: String,
    ): List<LedgerRecord> {
        // æŸ¥è¯¢ç›¸å…³çš„æ‰€æœ‰å°è´¦ç±»åž‹
        val ledgerSubTypes = ledgerSubTypeMapper.selectByExample(Example(LedgerSubType::class.java).apply {
            if (ledgerSubTypeId != null) {
                createCriteria().andEqualTo("lsSubtypeid", ledgerSubTypeId)
@@ -516,6 +519,17 @@
                createCriteria().andEqualTo("lScenetype", sceneType)
            }
        })
        // 2026.1.20 æ–°å¢žè‡ªå·¡æŸ¥æ‰¿è¯ºåŽï¼Œè‡ªå·¡æŸ¥çš„æœ‰æ•ˆå‘¨æœŸå»¶é•¿è‡³ä¸€å¹´ï¼ˆå½“年内)
        val promised = userSettingRep.checkIsSelfPatrolPromised(userId)
        if (promised) {
            ledgerSubTypes.onEach {
                if (it.getlTypeid() == -1) {
                    it.setlPeriod(12)
                }
            }
        }
        val c = Calendar.getInstance().apply { this.time = DateUtil.StringToDate(time) }
        val year = c.get(Calendar.YEAR)
        val month = c.get(Calendar.MONTH) + 1
@@ -529,10 +543,11 @@
        }
        val records = mutableListOf<LedgerRecord>()
        map.forEach { (p, v) ->
            // æŒ‰ç…§å‘¨æœŸåˆ†ç»„,统一查询相同周期的所有台账
            // FIXME: 2020/11/10  æ­¤å¤„根据周期和当前月份计算得到当前月份所在周期的始末月,只适用于周期小于等于12个月的情况。后续待修改
            val startMon = ceil(month.toDouble() / p).toInt().minus(1).times(p).plus(1)
            var endMon = startMon + p - 1
            if (endMon > month) endMon = month
//            if (endMon > month) endMon = month
            val r = ledgerRecordMapper.selectByExample(Example(LedgerRecord::class.java).apply {
                createCriteria().andEqualTo("lrSubmitid", userId)
                    .andEqualTo("lrYear", year)
@@ -540,6 +555,7 @@
                    .andLessThanOrEqualTo("lrMonth", endMon.toByte())
                    .andIn("lsSubtypeid", v)
            })
            // ç­›é€‰æ¯ç§å°è´¦è®°å½•中的最新一条
            val monMap = mutableMapOf<Int, LedgerRecord>()
            r.forEach {
                if (monMap.containsKey(it.lsSubtypeid)) {
src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/SelfPatrolServiceImpl.kt
@@ -30,6 +30,7 @@
    private val selfPatrolMediaFileMapper: SelfPatrolMediaFileMapper,
    private val userinfoMapper: UserinfoMapper,
    private val ledgerSubTypeMapper: LedgerSubTypeMapper,
    private val userSettingRecordMapper: UserSettingRecordMapper,
) : SelfPatrolService {
    @Value("\${imgPath}")
@@ -463,7 +464,20 @@
     * è‡ªå¯»æŸ¥æ‰¿è¯º
     * æ‰¿è¯ºå®ŒæˆåŽï¼Œåœ¨ä¸€ä¸ªè‡ªç„¶å¹´å†…记录都有效,也可以覆盖上传
     */
    override fun promiseSelfPatrol(record: UserSettingRecord): UserSettingRecord? {
        TODO("Not yet implemented")
    override fun promiseSelfPatrol(userId: String): UserSettingRecord? {
        var record = userSettingRecordMapper.selectByPrimaryKey(userId)
        if (record == null) {
            record = UserSettingRecord().apply {
                this.userId = userId
                this.selfPatrolPromised = true
                this.lastPromisedTime = Date()
            }
            userSettingRecordMapper.insert(record)
        } else {
            record.selfPatrolPromised = true
            record.lastPromisedTime = Date()
            userSettingRecordMapper.updateByPrimaryKey(record)
        }
        return record
    }
}
src/main/kotlin/cn/flightfeather/supervision/lightshare/service/SelfPatrolService.kt
@@ -58,5 +58,5 @@
     */
    fun checkSelfPatrolFinished(taskId: String?, justFinishedNum: Int)
    fun promiseSelfPatrol(record: UserSettingRecord): UserSettingRecord?
    fun promiseSelfPatrol(userId: String): UserSettingRecord?
}
src/main/kotlin/cn/flightfeather/supervision/lightshare/web/SelfPatrolController.kt
@@ -88,8 +88,8 @@
    @ApiOperation("自巡查承诺")
    @PostMapping("/promise")
    fun promiseSelfPatrol(
        @RequestBody record: UserSettingRecord,
    ) = resPack { selfPatrolService.promiseSelfPatrol(record) }
        @ApiParam(value = "用户id") @RequestParam userId: String,
    ) = resPack { selfPatrolService.promiseSelfPatrol(userId) }
}
src/main/resources/mapper/UserSettingMapper.xml
@@ -26,6 +26,12 @@
    <result column="ledger_deadline" property="ledgerDeadline" jdbcType="INTEGER" />
    <result column="self_patrol_promise" property="selfPatrolPromise" jdbcType="BIT" />
  </resultMap>
  <resultMap id="ResultMapWithBLOBs" type="cn.flightfeather.supervision.domain.entity.UserSetting" extends="BaseResultMap" >
    <!--
      WARNING - @mbg.generated
    -->
    <result column="sp_promise_content" property="spPromiseContent" jdbcType="LONGVARCHAR" />
  </resultMap>
  <sql id="Base_Column_List" >
    <!--
      WARNING - @mbg.generated
@@ -35,4 +41,10 @@
    Area, Management_Company_Id, Management_Company, scene_type_id, ledger_deadline, 
    self_patrol_promise
  </sql>
  <sql id="Blob_Column_List" >
    <!--
      WARNING - @mbg.generated
    -->
    sp_promise_content
  </sql>
</mapper>
src/main/resources/mapper/UserSettingRecordMapper.xml
@@ -7,11 +7,12 @@
    -->
    <id column="user_id" property="userId" jdbcType="VARCHAR" />
    <result column="self_patrol_promised" property="selfPatrolPromised" jdbcType="BIT" />
    <result column="last_promised_time" property="lastPromisedTime" jdbcType="TIMESTAMP" />
  </resultMap>
  <sql id="Base_Column_List" >
    <!--
      WARNING - @mbg.generated
    -->
    user_id, self_patrol_promised
    user_id, self_patrol_promised, last_promised_time
  </sql>
</mapper>