From 2ab727eb8a56077d9ad52112a9c8e97010b84b6d Mon Sep 17 00:00:00 2001
From: baoshiwei <baoshiwei@shlanbao.cn>
Date: 星期一, 09 六月 2025 19:50:49 +0800
Subject: [PATCH] feat(eims): 优化保养计划和点检记录功能

---
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsMaintStVo.java   |    2 
 eims-ui-mobile/src/pages/maint/maint-order.vue                                           |   60 ++++++++++-
 eims-ui-mobile/src/pages/maint/maint-st.vue                                              |   89 ++++++++++++++---
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsMaintPlanBo.java |    4 
 eims-ui-mobile/src/utils/RoleUtils.ts                                                    |    5 
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/job/MaintPlanToOrderJob.java   |    2 
 eims-ui-mobile/src/pages/inspect/insp-record.vue                                         |   53 +++++++++-
 eims-ui-mobile/src/pages/inspect/insp-st.vue                                             |   48 +++++++--
 8 files changed, 216 insertions(+), 47 deletions(-)

diff --git a/eims-ui-mobile/src/pages/inspect/insp-record.vue b/eims-ui-mobile/src/pages/inspect/insp-record.vue
index 42d7841..c039bad 100644
--- a/eims-ui-mobile/src/pages/inspect/insp-record.vue
+++ b/eims-ui-mobile/src/pages/inspect/insp-record.vue
@@ -24,7 +24,7 @@
         safeAreaInsetTop
       >
         <template #right>
-          <text v-if="isOperatorOrRepair()" class="text-white">鎻愪氦</text>
+          <text v-if="inspSt.status === '0'" class="text-white">鎻愪氦</text>
         </template>
       </wd-navbar>
       <wd-card type="rectangle">
@@ -61,9 +61,13 @@
             </view>
             <view class="text-color-gray text-sm mt-2 flex">
               <text>鐘舵�侊細</text>
-              <template v-if="dataCount > 0 && dataCount === checkCount">
+              <template v-if="inspSt.status === '1'">
                 <wd-icon class="icon-color-success" name="check-outline" size="34rpx"></wd-icon>
                 <text class="ml-1">宸插畬鎴�</text>
+              </template>
+              <template v-else-if="inspSt.status === '2'">
+                <wd-icon class="icon-color-warning" name="check-outline" size="34rpx"></wd-icon>
+                <text class="ml-1">宸茬‘璁�</text>
               </template>
               <template v-else>
                 <wd-icon class="icon-color-base" name="detection" size="40rpx"></wd-icon>
@@ -172,8 +176,9 @@
         size="large"
       />
       <!-- 鏂板鎻愪氦鎸夐挳 -->
-      <view class="flex justify-center mt-4">
-        <wd-button type="primary" block size="large" @click="handleClickRight">鎻愪氦</wd-button>
+      <view class="flex justify-around mt-4">
+        <wd-button type="primary" block size="large" v-if="inspSt.status === '0'" @click="handleClickRight">鎻愪氦</wd-button>
+        <wd-button type="success" block size="large" v-if="isLeader() && inspSt.status === '1'" @click="handleComplete">纭瀹屾垚</wd-button>
       </view>
     </view>
   </z-paging>
@@ -217,6 +222,8 @@
   specialNote: string
   runTimes: number
   faultTimes: number
+  verifyUser?: number | string
+  verifyTime?: string
 }
 
 const dataChange = ref(false)
@@ -356,7 +363,11 @@
 }
 function updateInspSt(resolve: any) {
   // 鏇存柊鐐规姹囨��
-  inspSt.status = '1'
+  if (dataCount.value === selectedItems.value.length) {
+    inspSt.status = '1'
+  } else {
+    inspSt.status = '0'
+  }
   updateInspectSt(inspSt)
     .then((res: any) => {
       toast.success('鎿嶄綔鎴愬姛')
@@ -371,6 +382,38 @@
 }
 
 /**
+ * 纭瀹屾垚鎸夐挳鐐瑰嚮浜嬩欢
+ */
+function handleComplete() {
+  if (!isLeader()) {
+    toast.info('鏃犳潈闄愭搷浣�');
+    return;
+  }
+  const now = new Date();
+  const data: any = Object.assign(
+    {},
+    {
+      id: inspSt.id,
+      status: '2',
+      verifyUser: userStore?.userInfo?.userId,
+      verifyTime: `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, '0')}-${String(now.getDate()).padStart(2, '0')} ${String(now.getHours()).padStart(2, '0')}:${String(now.getMinutes()).padStart(2, '0')}:${String(now.getSeconds()).padStart(2, '0')}`
+    },
+  )
+  updateInspectSt(data)
+    .then((res: any) => {
+      if (res?.code === 200) {
+        uni.$emit('insp-st-refresh')
+        goBack()
+        toast.success('鎿嶄綔鎴愬姛')
+      }
+    })
+    .catch((res) => {
+      console.error(res)
+      toast.error('鎿嶄綔澶辫触')
+    })
+}
+
+/**
  * 鐐规璁板綍鏉$洰鐐瑰嚮浜嬩欢
  * @param item
  */
diff --git a/eims-ui-mobile/src/pages/inspect/insp-st.vue b/eims-ui-mobile/src/pages/inspect/insp-st.vue
index 0eb3a03..0ca9158 100644
--- a/eims-ui-mobile/src/pages/inspect/insp-st.vue
+++ b/eims-ui-mobile/src/pages/inspect/insp-st.vue
@@ -11,15 +11,11 @@
 <template>
   <z-paging ref="paging" v-model="dataList" @query="queryList" show-refresher-update-time>
     <template #top>
-      <wd-drop-menu>
-        <wd-drop-menu-item v-model="viewMode" :options="viewModeList" @change="handleViewMode" />
-        <wd-drop-menu-item
-          v-model="filterDate"
-          :options="filterDateList"
-          @change="handleFilterDate"
-        />
-        <wd-drop-menu-item v-model="equName" :options="equList" @change="handleEquName" />
-      </wd-drop-menu>
+      <wd-tabs v-model="activeTab" @change="handleTabChange">
+        <wd-tab title="寰呯偣妫�"></wd-tab>
+        <wd-tab title="寰呯‘璁�"></wd-tab>
+        <wd-tab title="宸插畬鎴�"></wd-tab>
+      </wd-tabs>
     </template>
     <view class="bg-base">
       <wd-card type="rectangle" v-for="(item, index) in dataList" :key="item.id">
@@ -40,7 +36,7 @@
             </view>
           </view>
         </template>
-        <view class="flex h-[140rpx]" items-center>
+        <view class="flex h-[200rpx]" items-center>
           <image class="slot-img text-center" src="/static/images/camera.png" />
           <view class="flex-1">
             <view class="text-color-gray text-sm mt-1 flex">
@@ -57,9 +53,13 @@
             </view>
             <view class="text-color-gray text-sm mt-2 flex">
               <text>鐘舵�侊細</text>
-              <template v-if="item.recordCount === item.checkCount">
+              <template v-if="item.status === '1'">
                 <wd-icon class="icon-color-success" name="check-outline" size="34rpx"></wd-icon>
                 <text class="ml-1">宸插畬鎴�</text>
+              </template>
+              <template v-else-if="item.status === '2'">
+                <wd-icon class="icon-color-warning" name="check-outline" size="34rpx"></wd-icon>
+                <text class="ml-1">宸茬‘璁�</text>
               </template>
               <template v-else>
                 <wd-icon class="icon-color-base" name="detection" size="40rpx"></wd-icon>
@@ -76,13 +76,17 @@
 </template>
 
 <script setup lang="ts">
-import { ref } from 'vue'
 import { getInspStList } from '@/service/inspect'
 import dayjs from 'dayjs'
 
+// 鏍囩椤电浉鍏�
+const activeTab = ref(0) // 榛樿閫変腑绗竴涓爣绛鹃〉锛堝緟鐐规锛�
+
+// 鍘熸湁鍙橀噺
 const viewMode = ref<string>('Day')
 const equName = ref<string>('鎵�鏈夎澶�')
 const filterDate = ref<string>('1')
+const status = ref<string>('0') // 榛樿涓哄緟鐐规鐘舵��
 
 const viewModeList = ref<Record<string, any>[]>([
   { label: '鏃ヨ鍥�', value: 'Day' },
@@ -94,6 +98,25 @@
 ])
 
 const equList = ref<Record<string, any>[]>([{ label: '鎵�鏈夎澶�', value: '鎵�鏈夎澶�' }])
+
+// 鏍囩椤靛垏鎹㈠鐞嗗嚱鏁�
+function handleTabChange({ index }) {
+  // 鏍规嵁鏍囩椤电储寮曡缃搴旂殑鐘舵�佸��
+  if (index === 0) {
+    // 寰呯偣妫�
+    status.value = '0'
+  } else if (index === 1) {
+    // 寰呯‘璁�
+    status.value = '1'
+  } else if (index === 2) {
+    // 宸插畬鎴�
+    status.value = '2'
+  }
+  // 閲嶆柊鍔犺浇鏁版嵁
+  reloadData()
+}
+
+// 鍘熸湁鍑芥暟
 function handleViewMode({ value }) {
   reloadData()
 }
@@ -112,6 +135,7 @@
     pageNum,
     pageSize,
     viewMode: viewMode.value,
+    status: status.value, // 娣诲姞鐘舵�佺瓫閫�
   }
   if (filterDate.value === '1') {
     params.planTime = dayjs().format('YYYY-MM-DD')
diff --git a/eims-ui-mobile/src/pages/maint/maint-order.vue b/eims-ui-mobile/src/pages/maint/maint-order.vue
index 88398ec..fe14b49 100644
--- a/eims-ui-mobile/src/pages/maint/maint-order.vue
+++ b/eims-ui-mobile/src/pages/maint/maint-order.vue
@@ -25,7 +25,7 @@
         safeAreaInsetTop
       >
         <template #right>
-          <text v-if="isOperatorOrRepair()" class="text-white">鎻愪氦</text>
+          <text v-if="maintSt.status === '0'" class="text-white">鎻愪氦</text>
         </template>
       </wd-navbar>
       <wd-cell>
@@ -48,7 +48,7 @@
             </view>
           </view>
         </template>
-        <view class="flex h-[140rpx]" items-center>
+        <view class="flex" items-center>
           <image class="slot-img text-center" src="/static/images/camera.png" />
           <view class="flex-1">
             <view class="text-color-gray text-sm mt-1 flex">
@@ -60,14 +60,18 @@
               <text class="mr-3">寰呬繚鍏�: {{ maintSt.dbyCount }}</text>
               |
               <text class="mx-3">淇濆吇涓�: {{ maintSt.byCount }}</text>
-              |
-              <text class="ml-3">寰呴獙璇�: {{ maintSt.dyzCount }}</text>
+<!--              |-->
+<!--              <text class="ml-3">寰呴獙璇�: {{ maintSt.dyzCount }}</text>-->
             </view>
             <view class="text-color-gray text-sm mt-2 flex">
               <text>鐘舵�侊細</text>
               <template v-if="maintSt.status === '1'">
                 <wd-icon class="icon-color-success" name="check-outline" size="34rpx"></wd-icon>
                 <text class="ml-1">宸插畬鎴�</text>
+              </template>
+              <template v-else-if="maintSt.status === '2'">
+                <wd-icon class="icon-color-warning" name="check-outline" size="34rpx"></wd-icon>
+                <text class="ml-1">宸茬‘璁�</text>
               </template>
               <template v-else>
                 <wd-icon class="icon-color-base" name="detection" size="40rpx"></wd-icon>
@@ -205,11 +209,16 @@
         placeholder="璇疯緭鍏ョ壒璁颁簨椤�"
         clearable
       />
+      <!-- 鏂板纭瀹屾垚鎸夐挳 -->
+      <view class="flex justify-around mt-4">
+        <wd-button type="primary" block size="large" v-if="maintSt.status === '0'" @click="handleClickRight">鎻愪氦</wd-button>
+        <wd-button type="success" block size="large" v-if="isLeader() && maintSt.status === '1'" @click="handleComplete">纭瀹屾垚</wd-button>
+      </view>
     </view>
     <!-- 鏂板鎻愪氦鎸夐挳 -->
-    <view class="flex justify-center mt-4">
-      <wd-button type="primary" block size="large" @click="handleClickRight">鎻愪氦</wd-button>
-    </view>
+<!--    <view class="flex justify-center mt-4">-->
+<!--      <wd-button type="primary" block size="large" @click="handleClickRight">鎻愪氦</wd-button>-->
+<!--    </view>-->
   </z-paging>
 
   <!-- 澶囦欢閫夋嫨寮瑰嚭灞� -->
@@ -340,7 +349,7 @@
 }
 
 function loadSpareParts(value?: string) {
-  getSpareList({ name: value }).then((res: any) => {
+  getSpareList({ name: value, pageNum: 1, pageSize: 10 }).then((res: any) => {
     sparePartsList.value = res.rows
 
   })
@@ -498,7 +507,8 @@
           .then((res: any) => {
             resolve(true)
             if (res?.code === 200) {
-              reloadData()
+              uni.$emit('maint-st-refresh')
+              goBack()
               toastSucces()
             }
           })
@@ -604,6 +614,38 @@
     });
 }
 
+/**
+ * 纭瀹屾垚鎸夐挳鐐瑰嚮浜嬩欢
+ */
+function handleComplete() {
+  if (!isLeader()) {
+    toast.info('鏃犳潈闄愭搷浣�');
+    return;
+  }
+  const now = new Date();
+  const data: any = Object.assign(
+    {},
+    {
+      id: maintSt.id,
+      status: '2',
+      verifyUser: userStore?.userInfo?.userId ,
+      verifyTime: `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, '0')}-${String(now.getDate()).padStart(2, '0')} ${String(now.getHours()).padStart(2, '0')}:${String(now.getMinutes()).padStart(2, '0')}:${String(now.getSeconds()).padStart(2, '0')}`
+    },
+  )
+  updateMaintSt(data)
+    .then((res: any) => {
+      if (res?.code === 200) {
+        uni.$emit('maint-st-refresh')
+        goBack()
+        toastSucces()
+      }
+    })
+    .catch((res) => {
+      console.error(res)
+    })
+
+}
+
 // 鏂板鏂规硶锛氳幏鍙栫姸鎬佹枃鏈�
 function getStatusText(maintFun: string): string {
   switch (maintFun) {
diff --git a/eims-ui-mobile/src/pages/maint/maint-st.vue b/eims-ui-mobile/src/pages/maint/maint-st.vue
index 6704e0b..4db3bdf 100644
--- a/eims-ui-mobile/src/pages/maint/maint-st.vue
+++ b/eims-ui-mobile/src/pages/maint/maint-st.vue
@@ -11,18 +11,19 @@
 <template>
   <z-paging ref="paging" v-model="dataList" @query="queryList" show-refresher-update-time>
     <template #top>
-      <wd-drop-menu>
-        <wd-drop-menu-item v-model="equName" :options="equList" @change="handleEquName" />
-        <wd-drop-menu-item
-          v-model="filterDate"
-          :options="filterDateList"
-          @change="handleFilterDate"
-        />
-        <wd-drop-menu-item v-model="status" :options="statusList" @change="handleStatus" />
-      </wd-drop-menu>
+      <wd-tabs v-model="activeTab" @change="handleTabChange">
+        <wd-tab title="寰呬繚鍏�"></wd-tab>
+        <wd-tab title="寰呯‘璁�"></wd-tab>
+        <wd-tab title="宸插畬鎴�"></wd-tab>
+      </wd-tabs>
     </template>
     <view class="bg-base">
-      <wd-card type="rectangle" v-for="(item, index) in dataList" :key="item.id">
+      <wd-card
+        type="rectangle"
+        v-for="(item, index) in dataList"
+        :key="item.id"
+        :class="[getCardColorClass(item.planTime)]"
+      >
         <template #title>
           <view class="flex justify-between">
             <view class="flex items-center menu-title-box">
@@ -40,7 +41,7 @@
             </view>
           </view>
         </template>
-        <view class="flex h-[140rpx]" items-center>
+        <view class="flex" items-center>
           <image class="slot-img text-center" src="/static/images/camera.png" />
           <view class="flex-1">
             <view class="text-color-gray text-sm mt-1 flex">
@@ -52,14 +53,18 @@
               <text class="mr-3">寰呬繚鍏�: {{ item.dbyCount }}</text>
               |
               <text class="mx-3">淇濆吇涓�: {{ item.byCount }}</text>
-              |
-              <text class="ml-3">寰呴獙璇�: {{ item.dyzCount }}</text>
+<!--              |-->
+<!--              <text class="ml-3">寰呴獙璇�: {{ item.dyzCount }}</text>-->
             </view>
             <view class="text-color-gray text-sm mt-2 flex">
               <text>鐘舵�侊細</text>
               <template v-if="item.status === '1'">
                 <wd-icon class="icon-color-success" name="check-outline" size="34rpx"></wd-icon>
                 <text class="ml-1">宸插畬鎴�</text>
+              </template>
+              <template v-else-if="item.status === '2'">
+                <wd-icon class="icon-color-warning" name="check-outline" size="34rpx"></wd-icon>
+                <text class="ml-1">宸茬‘璁�</text>
               </template>
               <template v-else>
                 <wd-icon class="icon-color-base" name="detection" size="40rpx"></wd-icon>
@@ -76,7 +81,7 @@
 </template>
 
 <script setup lang="ts">
-import { ref } from 'vue'
+import { ref, computed } from 'vue'
 import { getMaintStList } from '@/service/maint'
 import dayjs from 'dayjs'
 
@@ -99,12 +104,37 @@
   params?: NonNullable<unknown>
 }
 
+// 璁$畻宸ュ崟鍗$墖鐨勮儗鏅鑹茬被
+function getCardColorClass(planTime) {
+  if (!planTime) return ''
+
+  const now = dayjs()
+  const planDate = dayjs(planTime)
+  const diffDays = planDate.diff(now, 'day')
+
+  if (diffDays < 0) {
+    // 瓒呰繃璁″垝鏃堕棿锛岀孩鑹茶儗鏅�
+    return 'card-overdue'
+  } else if (diffDays <= 3) {
+    // 璺濈璁″垝鏃堕棿涓夊ぉ浠ュ唴锛岄粍鑹茶儗鏅�
+    return 'card-urgent'
+  } else {
+    // 姝e父鐘舵�侊紝鑳屾櫙棰滆壊涓嶅彉
+    return ''
+  }
+}
+
 // 椤甸潰鍙傛暟锛屼笂涓〉闈紶閫掕繃鏉ョ殑鍙傛暟
 const option = reactive<PageParams>({
   assetNo: '',
   from: '',
 })
-const status = ref<string>('-1')
+
+// 鏍囩椤电浉鍏�
+const activeTab = ref(0) // 榛樿閫変腑绗竴涓爣绛鹃〉锛堝緟淇濆吇锛�
+
+// 鍘熸湁鐘舵��
+const status = ref<string>('0') // 榛樿涓哄緟淇濆吇鐘舵��
 const equName = ref<string>('-1')
 const filterDate = ref<string>('1')
 
@@ -121,6 +151,25 @@
   { label: '宸插畬鎴�', value: '3' },
 ])
 const equList = ref<Record<string, any>[]>([{ label: '鎵�鏈夎澶�', value: '-1' }])
+
+// 鏍囩椤靛垏鎹㈠鐞嗗嚱鏁�
+function handleTabChange({ index }) {
+  // 鏍规嵁鏍囩椤电储寮曡缃搴旂殑鐘舵�佸��
+  if (index === 0) {
+    // 寰呬繚鍏�
+    status.value = '0'
+  } else if (index === 1) {
+    // 寰呯‘璁�
+    status.value = '1'
+  } else if (index === 2) {
+    // 宸插畬鎴�
+    status.value = '2'
+  }
+  // 閲嶆柊鍔犺浇鏁版嵁
+  reloadData()
+}
+
+// 鍘熸湁鍑芥暟
 function handleStatus({ value }) {}
 function handleEquName({ value }) {
   console.log(value)
@@ -185,6 +234,8 @@
 function reloadData() {
   paging.value.reload()
 }
+
+
 onLoad((options) => {
   Object.assign(option, options)
   uni.$on('maint-st-refresh', reloadData)
@@ -223,4 +274,12 @@
 :deep(.wd-card__title-content) {
   padding: 24rpx 0 !important;
 }
+
+/* 宸ュ崟鍗$墖鑳屾櫙棰滆壊 */
+.card-urgent {
+  background-color: rgba(255, 204, 0, 0.1); /* 榛勮壊鑳屾櫙 */
+}
+.card-overdue {
+  background-color: rgba(255, 0, 0, 0.1); /* 绾㈣壊鑳屾櫙 */
+}
 </style>
diff --git a/eims-ui-mobile/src/utils/RoleUtils.ts b/eims-ui-mobile/src/utils/RoleUtils.ts
index 3eac386..027a6fb 100644
--- a/eims-ui-mobile/src/utils/RoleUtils.ts
+++ b/eims-ui-mobile/src/utils/RoleUtils.ts
@@ -26,8 +26,9 @@
  * 鐧诲綍瑙掕壊鏄搷浣滃伐鎴栫淮淇伐
  */
 export const isOperatorOrRepair = () => {
-  const roles = useUserStore()?.userInfo?.roles || []
-  return roles.includes(ROLE_OPERATOR) || roles.includes(ROLE_REPAIR)
+  // const roles = useUserStore()?.userInfo?.roles || []
+  // return roles.includes(ROLE_OPERATOR) || roles.includes(ROLE_REPAIR)
+  return true
 }
 
 /**
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsMaintPlanBo.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsMaintPlanBo.java
index cf189bb..287ef5c 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsMaintPlanBo.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsMaintPlanBo.java
@@ -79,13 +79,13 @@
     /**
      * 淇濆吇浜�
      */
-    @NotNull(message = "淇濆吇浜轰笉鑳戒负绌�", groups = { AddGroup.class, EditGroup.class })
+//    @NotNull(message = "淇濆吇浜轰笉鑳戒负绌�", groups = { AddGroup.class, EditGroup.class })
     private Long maintUser;
 
     /**
      * 淇濆吇閮ㄩ棬
      */
-    @NotNull(message = "淇濆吇閮ㄩ棬涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+//    @NotNull(message = "淇濆吇閮ㄩ棬涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
     private Long maintDept;
 
     /**
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsMaintStVo.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsMaintStVo.java
index 130b421..01b0efe 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsMaintStVo.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsMaintStVo.java
@@ -57,7 +57,7 @@
      *
      */
     @ExcelProperty(value = "")
-    @JsonFormat(pattern = "yyyy-MM")
+    @JsonFormat(pattern = "yyyy-MM-dd")
     private Date planTime;
     /**
      *绋芥煡鏃ユ湡
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/job/MaintPlanToOrderJob.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/job/MaintPlanToOrderJob.java
index 2e2b6af..ca5e691 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/job/MaintPlanToOrderJob.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/job/MaintPlanToOrderJob.java
@@ -57,7 +57,7 @@
             Date oldNext = planVo.getMaintNextTime();
             int day = DateUtils.differentDays(today, oldNext);
             // 濡傛灉璁″垝鐢熸垚宸ュ崟鏃ユ湡澶т簬浠婂ぉ鍒欎笉鐢熸垚宸ュ崟
-            if (day >= 1) {
+            if (day >= 10) {
                 continue;
             }
 

--
Gitblit v1.9.3