From 991dfb176737ab9d8d686a10a8ef6ec776431b55 Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期六, 19 十月 2024 13:52:52 +0800
Subject: [PATCH] *
---
src/main/java/com/zy/asrs/task/RgvTaskReportingScheduler.java | 43 +++
src/main/java/com/zy/asrs/task/escalationParam/RgvTaskReportingParam.java | 39 +++
src/main/java/com/zy/asrs/utils/TimeCalculatorUtils.java | 387 ++++++++++++++++++++++++++++++++
src/main/java/com/zy/asrs/controller/OpenController.java | 11
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 3
src/main/java/com/zy/asrs/entity/param/WcsTaskDistributionParam.java | 2
src/main/resources/mapper/WrkMastMapper.xml | 2
src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java | 44 +++
/dev/null | 19 -
src/main/java/com/zy/asrs/service/WrkMastService.java | 2
src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java | 5
src/main/java/com/zy/asrs/mapper/WrkMastMapper.java | 3
src/main/java/com/zy/asrs/task/WorkLogScheduler.java | 44 +++
src/main/java/com/zy/asrs/task/handler/RgvTaskReportingHandler.java | 100 ++++++++
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java | 4
15 files changed, 676 insertions(+), 32 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java
index 13cc43f..025bc5b 100644
--- a/src/main/java/com/zy/asrs/controller/OpenController.java
+++ b/src/main/java/com/zy/asrs/controller/OpenController.java
@@ -57,17 +57,6 @@
}
- /**
- * 搴撳瓨缁熻
- */
- @RequestMapping("/stock/default/v1")
- public R queryStock(@RequestHeader(required = false) String appkey,
- HttpServletRequest request) {
- auth(appkey, null, request);
- return R.ok().add(openService.queryStock());
- }
-
-
private void auth(String appkey, Object obj, HttpServletRequest request) {
log.info("{}鎺ュ彛琚闂紱appkey:{}锛涜姹傛暟鎹細{}", "open/sensorType/list/auth/v1", appkey, JSON.toJSONString(obj));
request.setAttribute("cache", obj);
diff --git a/src/main/java/com/zy/asrs/entity/param/WcsTaskDistributionParam.java b/src/main/java/com/zy/asrs/entity/param/WcsTaskDistributionParam.java
index 601973a..7beafb5 100644
--- a/src/main/java/com/zy/asrs/entity/param/WcsTaskDistributionParam.java
+++ b/src/main/java/com/zy/asrs/entity/param/WcsTaskDistributionParam.java
@@ -20,7 +20,7 @@
add(131);add(132);add(133);
}};
- private Integer taskNo;//宸ヤ綔鍙�
+ private Long taskNo;//宸ヤ綔鍙�
private String startSta;//璧风偣
private String endSta;//缁堢偣
diff --git a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
index 60a15b5..a00872f 100644
--- a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
@@ -11,6 +11,9 @@
@Repository
public interface WrkMastMapper extends BaseMapper<WrkMast> {
+ @Insert("insert into asr_wrk_mast_log select * from asr_wrk_mast where wrk_no=#{workNo}")
+ int saveLog(Long workNo);
+
WrkMast selectByLocNo(@Param("sourceLocNo") String sourceLocNo);
WrkMast selectByLocNo1(@Param("sourceLocNo") String sourceLocNo);
diff --git a/src/main/java/com/zy/asrs/service/WrkMastService.java b/src/main/java/com/zy/asrs/service/WrkMastService.java
index 67469f8..5b3dc51 100644
--- a/src/main/java/com/zy/asrs/service/WrkMastService.java
+++ b/src/main/java/com/zy/asrs/service/WrkMastService.java
@@ -7,6 +7,8 @@
public interface WrkMastService extends IService<WrkMast> {
+ boolean saveLog(Long workNo);
+
int getWorkingMast(Integer devpNo);
List<WrkMast> selectToBeCompleteData();
diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
index 6ccfbbe..0bb8258 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -179,6 +179,8 @@
break runRgv;
}
wrkMast.setWrkSts(2L);
+ wrkMast.setRgvNo(rgvProtocol.getRgvNo());
+ wrkMast.setAppeTime(new Date());
try{
wrkMastService.updateById(wrkMast);
continue ;
@@ -225,6 +227,7 @@
break;
}
wrkMast.setWrkSts(3L);
+ wrkMast.setAppeTime(new Date());
wrkMastService.updateById(wrkMast);
}
}
diff --git a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
index 3a3a1ea..356576c 100644
--- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -12,6 +12,7 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import java.util.Date;
import java.util.List;
/**
@@ -33,6 +34,7 @@
@Override
@Transactional
public R wcsTaskDistribution(WcsTaskDistributionParam param) {
+ Date now = new Date();
WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", param.getTaskNo()));
if (!Cools.isEmpty(wrkMast1)){
return R.error("宸ヤ綔鍙峰凡瀛樺湪").add("宸ヤ綔鍙峰凡瀛樺湪锛宼askNo="+param.getTaskNo());
@@ -43,6 +45,8 @@
wrkMast.setStaNo(param.getEndSta$());
wrkMast.setWrkSts(1L);
wrkMast.setIoType(1);
+ wrkMast.setModiTime(now);
+ wrkMast.setAppeTime(now);
wrkMastService.insert(wrkMast);
return R.ok();
}
diff --git a/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
index 8c0b9e9..2079892 100644
--- a/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
@@ -13,6 +13,11 @@
public class WrkMastServiceImpl extends ServiceImpl<WrkMastMapper, WrkMast> implements WrkMastService {
@Override
+ public boolean saveLog(Long workNo) {
+ return this.baseMapper.saveLog(workNo) > 0;
+ }
+
+ @Override
public int getWorkingMast(Integer devpNo) {
return selectCount(new EntityWrapper<WrkMast>().eq("source_sta_no", devpNo).in("wrk_sts", 1, 6));
}
diff --git a/src/main/java/com/zy/asrs/task/RgvTaskReportingScheduler.java b/src/main/java/com/zy/asrs/task/RgvTaskReportingScheduler.java
new file mode 100644
index 0000000..c6bc4b7
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/RgvTaskReportingScheduler.java
@@ -0,0 +1,43 @@
+package com.zy.asrs.task;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.service.WrkMastService;
+import com.zy.asrs.task.core.ReturnT;
+import com.zy.asrs.task.handler.RgvTaskReportingHandler;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * Created by Monkey D. Luffy on 2024.10.19
+ * 骞夸笢娴风帥..............浠ヤ笅.............鐜┛璋冨害.............浠诲姟瀹屾垚淇℃伅涓婁紶
+ */
+@Slf4j
+@Component
+public class RgvTaskReportingScheduler {
+
+ @Autowired
+ private WrkMastService wrkMastService;
+ @Autowired
+ private RgvTaskReportingHandler rgvTaskReportingHandler;
+
+ @Scheduled(cron = "0/3 * * * * ? ")
+ private void execute(){//浠诲姟瀹屾垚淇℃伅涓婁紶
+ List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", 3L));
+ for (WrkMast wrkMast : wrkMasts){
+ try{
+ ReturnT<String> result = rgvTaskReportingHandler.start(wrkMast);
+ if (result.getCode()==200){
+ break;
+ }
+ }catch (Exception e){
+ log.error("宸ヤ綔鍙�"+wrkMast.getWrkNo()+"浠诲姟瀹屾垚淇℃伅涓婁紶澶勭悊澶辫触锛屽紓甯镐俊鎭細"+e);
+ }
+ }
+ }
+
+}
diff --git a/src/main/java/com/zy/asrs/task/WorkLogScheduler.java b/src/main/java/com/zy/asrs/task/WorkLogScheduler.java
new file mode 100644
index 0000000..a3ad25d
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/WorkLogScheduler.java
@@ -0,0 +1,44 @@
+package com.zy.asrs.task;
+
+import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.service.WrkMastService;
+import com.zy.asrs.task.core.ReturnT;
+import com.zy.asrs.task.handler.WorkLogHandler;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * Created by vincent on 2020/7/7
+ */
+@Slf4j
+@Component
+public class WorkLogScheduler {
+
+ @Autowired
+ private WorkLogHandler workLogHandler;
+ @Autowired
+ private WrkMastService wrkMastService;
+
+ @Scheduled(cron = "0/3 * * * * ? ")
+ private void execute(){
+ List<WrkMast> wrkMasts = wrkMastService.selectToBeHistoryData();
+ if (wrkMasts.isEmpty()) {
+ return;
+ }
+ for (WrkMast wrkMast : wrkMasts) {
+ try{
+ ReturnT<String> result = workLogHandler.start(wrkMast);
+ if (!result.isSuccess()) {
+ log.error("宸ヤ綔妗workNo={}]鍘嗗彶妗e鐞嗗け璐�", wrkMast.getWrkNo());
+ }
+ } catch (Exception e){
+
+ }
+ }
+ }
+
+}
diff --git a/src/main/java/com/zy/asrs/task/escalationParam/RgvTaskReportingParam.java b/src/main/java/com/zy/asrs/task/escalationParam/RgvTaskReportingParam.java
new file mode 100644
index 0000000..966e130
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/escalationParam/RgvTaskReportingParam.java
@@ -0,0 +1,39 @@
+package com.zy.asrs.task.escalationParam;
+
+import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.utils.TimeCalculatorUtils;
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/*
+ * Created by Monkey D. Luffy on 2023.07.19
+ * */
+@Data
+public class RgvTaskReportingParam {
+ private String taskNo; // 鏄� 瀛楃涓� 宸ヤ綔鍙�
+ private Long during; // 鏄� 瀛楃涓� 浣滀笟鏃堕暱
+ private String rgvNo; // 鏄� 瀛楃涓� 浣滀笟灏忚溅缂栧彿
+ private String startSta; // 鏄� 瀛楃涓� 璧峰浣滀笟绔欙紙鐜┛锛�
+ private String endSta; // 鏄� 瀛楃涓� 鐩爣浣滀笟绔欙紙鐜┛锛�
+ private Integer status; // 鏄� 瀛楃涓� 浠诲姟鐘舵�� 1锛氬垵濮� 2锛氫綔涓氫腑 3锛氬畬鎴�
+ private String startTime; // 鏄� 瀛楃涓� 寮�濮嬫椂闂达紙鏍煎紡锛歽yyy--MM-dd HH:mm:ss)
+ private String endTime; // 鏄� 瀛楃涓� 缁撴潫鏃堕棿锛堟牸寮忥細yyyy--MM-dd HH:mm:ss)
+ private List<String> error = new ArrayList<>(); // 鏄� 瀛楃涓� 寮傚父淇℃伅锛堝鏃犲紓甯稿垯涓虹┖鏁扮粍锛�
+
+
+ public RgvTaskReportingParam(){}
+
+ public RgvTaskReportingParam(WrkMast wrkMast){
+ this.taskNo = wrkMast.getWrkNo().toString();
+ this.rgvNo = wrkMast.getRgvNo().toString();
+ this.startTime = wrkMast.getModiTime$();
+ this.endTime = wrkMast.getAppeTime$();
+ this.startSta = wrkMast.getSourceStaNo().toString();
+ this.endSta = wrkMast.getStaNo().toString();
+ this.during = TimeCalculatorUtils.differenceInMilliseconds(wrkMast.getModiTime(),wrkMast.getAppeTime());
+ this.status = wrkMast.getWrkSts().intValue();
+ this.error.add(wrkMast.getErrorMemo());
+ }
+}
diff --git a/src/main/java/com/zy/asrs/task/escalationParam/ScaleEscalationParam.java b/src/main/java/com/zy/asrs/task/escalationParam/ScaleEscalationParam.java
deleted file mode 100644
index 2d6744c..0000000
--- a/src/main/java/com/zy/asrs/task/escalationParam/ScaleEscalationParam.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.zy.asrs.task.escalationParam;
-
-import lombok.Data;
-
-/*
- * Created by Monkey D. Luffy on 2023.07.19
- * */
-@Data
-public class ScaleEscalationParam {
- private String barcode;// 鏄� 瀛楃涓� 鎵樼洏鐮�
- private String boxType;// 鏄� 瀛楃涓� 鐮佸灈鏈ㄧ绫诲瀷锛堝悓涓�鎵樼洏涓�绉嶇被鍨嬶級
- private String palletizingNo;// 鏄� 瀛楃涓� 鐮佸灈鏈ㄧ绫诲瀷锛堝悓涓�鎵樼洏涓�绉嶇被鍨嬶級 搴熷純
- private String createTime;// 鏄� 瀛楃涓� 鍒涘缓鏃堕棿
- private Double weight;// 鏄� 瀛楃涓� 鍒涘缓鏃堕棿
- private Integer devNo;// 鏄� 瀛楃涓� 鏃堕棿鎴�
-
-
- public ScaleEscalationParam(){}
-
- public ScaleEscalationParam(Double weight,Integer devNo){
- this.weight = weight;
- this.devNo = devNo;
- }
-}
diff --git a/src/main/java/com/zy/asrs/task/escalationParam/StaEscalationParam.java b/src/main/java/com/zy/asrs/task/escalationParam/StaEscalationParam.java
deleted file mode 100644
index 0bd36a3..0000000
--- a/src/main/java/com/zy/asrs/task/escalationParam/StaEscalationParam.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.zy.asrs.task.escalationParam;
-
-import lombok.Data;
-
-/*
- * Created by Monkey D. Luffy on 2023.07.19
- * */
-@Data
-public class StaEscalationParam {
- private String uuid;// 鏄� 瀛楃涓� 鏃堕棿鎴�
- private String matnr;// 鏄� 瀛楃涓� 鏃堕棿鎴�
- private String batch;// 鏄� 瀛楃涓� 鏃堕棿鎴�
- private String orderNo;// 鏄� 瀛楃涓� 鏃堕棿鎴�
- private String taskNo;// 鏄� 瀛楃涓� 鏃堕棿鎴�
- private Integer ioType;// 鏄� 瀛楃涓� 鏃堕棿鎴�
- private Integer devNo;// 鏄� 瀛楃涓� 鏃堕棿鎴�
- private Double weight;// 鏄� 瀛楃涓� 鏃堕棿鎴�
- private String wrkno;// 鏄� 瀛楃涓� 鏃堕棿鎴�
-}
diff --git a/src/main/java/com/zy/asrs/task/handler/RgvTaskReportingHandler.java b/src/main/java/com/zy/asrs/task/handler/RgvTaskReportingHandler.java
new file mode 100644
index 0000000..597bfa5
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/handler/RgvTaskReportingHandler.java
@@ -0,0 +1,100 @@
+package com.zy.asrs.task.handler;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.core.exception.CoolException;
+import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.service.ApiLogService;
+import com.zy.asrs.service.WrkMastService;
+import com.zy.asrs.task.AbstractHandler;
+import com.zy.asrs.task.core.ReturnT;
+import com.zy.asrs.task.escalationParam.RgvTaskReportingParam;
+import com.zy.common.utils.HttpHandler;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+
+/**
+ * Created by Monkey D. Luffy on 2024.10.19
+ * 骞夸笢娴风帥..............浠ヤ笅.............鐜┛璋冨害.............浠诲姟瀹屾垚淇℃伅涓婁紶
+ */
+@Slf4j
+@Service
+@Transactional
+public class RgvTaskReportingHandler extends AbstractHandler<String> {
+
+ @Autowired
+ private WrkMastService wrkMastService;
+ @Autowired
+ private ApiLogService apiLogService;
+
+// @Value("${srHangJia.url}")
+ private String erpUrl = "192.168.18.229:16126";
+// @Value("${srHangJia.reportOutPath}")
+ private String reportOutPath = "open/rcs/task/cs/up/default/v1";
+
+ public ReturnT<String> start(WrkMast wrkMast) {
+ try {
+ Date now = new Date();
+ RgvTaskReportingParam rgvTaskReportingParam = new RgvTaskReportingParam(wrkMast);
+ ReturnT<String> result = postMesData(reportOutPath,rgvTaskReportingParam);
+ if (result.getCode()==200){
+ wrkMast.setWrkSts(4L);
+ wrkMast.setAppeTime(now);
+ wrkMastService.updateById(wrkMast);
+ return SUCCESS;
+ }else {
+ log.error("浠诲姟瀹屾垚淇℃伅涓婁紶澶辫触");
+ }
+ }catch (Exception e){
+ log.error("浠诲姟瀹屾垚淇℃伅涓婁紶寮傚父锛侊紒锛�"+e);
+ return FAIL;
+ }
+ return FAIL;
+ }
+
+ private ReturnT<String> postMesData(String erpPath,Object combParam){
+ if(combParam != null){
+ String response = "";
+ boolean success = false;
+ try {
+ response = new HttpHandler.Builder()
+ .setUri(erpUrl)
+ .setPath(erpPath)
+ .setJson(JSON.toJSONString(combParam))
+ .build()
+ .doPost();
+ JSONObject jsonObject = JSON.parseObject(response);
+ if (jsonObject.getInteger("code")==200) {
+ success = true;
+ } else {
+ log.error("浠诲姟瀹屾垚淇℃伅涓婁紶璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}"+erpUrl+erpPath, JSON.toJSONString(combParam), response);
+ throw new CoolException("涓婃姤wcs绯荤粺澶辫触");
+ }
+ } catch (Exception e) {
+ log.error("fail:涓婃姤wcs绯荤粺澶辫触==>", e);
+// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return FAIL.setMsg(e.getMessage());
+ } finally {
+ try {
+ // 淇濆瓨鎺ュ彛鏃ュ織
+ apiLogService.save(
+ "涓婃姤wcs绯荤粺",
+ erpUrl + erpPath,
+ null,
+ erpUrl,
+ JSON.toJSONString(combParam),
+ response,
+ success
+ );
+ } catch (Exception e) {
+ log.error("浠诲姟瀹屾垚淇℃伅涓婁紶淇濆瓨鎺ュ彛鏃ュ織寮傚父锛屽紓甯镐俊鎭細", e);
+ }
+ }
+ }
+ return SUCCESS;
+ }
+}
diff --git a/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java b/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
new file mode 100644
index 0000000..14cc3fc
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
@@ -0,0 +1,44 @@
+package com.zy.asrs.task.handler;
+
+import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.service.WrkMastService;
+import com.zy.asrs.task.AbstractHandler;
+import com.zy.asrs.task.core.ReturnT;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
+
+/**
+ * Created by Monkey D. Luffy on 2024.10.19
+ * 骞夸笢娴风帥..............浠ヤ笅.............鐜┛璋冨害.............浠诲姟瀹屾垚淇℃伅涓婁紶
+ */
+@Slf4j
+@Service
+public class WorkLogHandler extends AbstractHandler<String> {
+
+ @Autowired
+ private WrkMastService wrkMastService;
+
+ @Transactional
+ public ReturnT<String> start(WrkMast wrkMast) {
+ try {
+ // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
+ if (!wrkMastService.saveLog(wrkMast.getWrkNo())) {
+ exceptionHandle("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={0}]澶辫触", wrkMast.getWrkNo());
+ }
+ // 鍒犻櫎宸ヤ綔涓绘。
+ if (!wrkMastService.deleteById(wrkMast)) {
+ exceptionHandle("鍒犻櫎宸ヤ綔涓绘。[workNo={0}]澶辫触", wrkMast.getWrkNo());
+ }
+ } catch (Exception e) {
+ log.error("fail", e);
+ e.printStackTrace();
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return FAIL.setMsg(e.getMessage());
+ }
+ return SUCCESS;
+ }
+
+}
diff --git a/src/main/java/com/zy/asrs/utils/TimeCalculatorUtils.java b/src/main/java/com/zy/asrs/utils/TimeCalculatorUtils.java
new file mode 100644
index 0000000..e151d94
--- /dev/null
+++ b/src/main/java/com/zy/asrs/utils/TimeCalculatorUtils.java
@@ -0,0 +1,387 @@
+package com.zy.asrs.utils;
+
+import java.time.DayOfWeek;
+import java.time.LocalDate;
+import java.time.ZoneId;
+import java.time.temporal.ChronoUnit;
+import java.time.temporal.TemporalAdjusters;
+import java.time.temporal.WeekFields;
+import java.util.*;
+
+public class TimeCalculatorUtils {
+
+ //鑾峰彇褰撳墠鏃堕棿鐨勫皬鏃舵暟锛�24灏忔椂鍒讹級锛�
+ public static int nowTimeHour(){
+ // 鑾峰彇褰撳墠鏃堕棿鎴�
+ long timestamp = System.currentTimeMillis();
+
+ // 鍒涘缓Date瀵硅薄锛屽苟璁剧疆鏃堕棿鎴�
+ Date date = new Date(timestamp);
+
+ // 鍒涘缓TimeZone瀵硅薄锛岃缃负涓浗鍖椾含鏃堕棿
+ TimeZone timeZone = TimeZone.getTimeZone("Asia/Shanghai");
+
+ // 鍒涘缓Calendar瀵硅薄锛屽苟璁剧疆鏃跺尯
+ // 娉ㄦ剰锛欳alendar绫讳腑鐨勬湀浠芥槸浠�0寮�濮嬬殑锛屾墍浠ラ渶瑕佸噺鍘�1
+ Calendar calendar = Calendar.getInstance(timeZone);
+ calendar.setTime(date);
+
+ // 鑾峰彇褰撳墠灏忔椂鏁帮紙24灏忔椂鍒讹級
+ return calendar.get(Calendar.HOUR_OF_DAY);
+ }
+
+ //鑾峰彇褰撳ぉ灏忔椂鏁帮紙24灏忔椂鍒讹級涓浗鍖椾含鏃堕棿锛�
+ public static int timeTimeHour(Date date){
+ // 鍒涘缓TimeZone瀵硅薄锛岃缃负涓浗鍖椾含鏃堕棿
+ TimeZone timeZone = TimeZone.getTimeZone("Asia/Shanghai");
+
+ // 鍒涘缓Calendar瀵硅薄锛屽苟璁剧疆鏃跺尯
+ // 娉ㄦ剰锛欳alendar绫讳腑鐨勬湀浠芥槸浠�0寮�濮嬬殑锛屾墍浠ラ渶瑕佸噺鍘�1
+ Calendar calendar = Calendar.getInstance(timeZone);
+ calendar.setTime(date);
+
+ // 鑾峰彇褰撳墠灏忔椂鏁帮紙24灏忔椂鍒讹級
+ return calendar.get(Calendar.HOUR_OF_DAY);
+ }
+
+ //鑾峰彇鍓嶄竴澶╃殑鏃ユ湡锛堟棩鏈熷ぉ鏁板噺涓�锛�
+ public static Date timeYesterday(Date date){
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(date);
+ calendar.add(Calendar.DAY_OF_MONTH, -1);
+ return calendar.getTime();
+ }
+
+ //鑾峰彇涓冨ぉ鍓嶇殑鏃ユ湡锛堟棩鏈熷ぉ鏁板噺涓冿級
+ public static Date timeFrontSevenYesterday(Date date){
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(date);
+ calendar.add(Calendar.DAY_OF_MONTH, -7);
+ return calendar.getTime();
+ }
+
+ //鑾峰彇涓冨ぉ鍚庣殑鏃ユ湡锛堟棩鏈熷ぉ鏁板姞涓冿級
+ public static Date timeAfterSevenYesterday(Date date){
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(date);
+ calendar.add(Calendar.DAY_OF_MONTH, 7);
+ return calendar.getTime();
+ }
+
+ //鑾峰彇鐩稿樊n澶╃殑鏃ユ湡锛堟棩鏈熷ぉ鏁板姞N锛�
+ public static Date timeYesterdayN(Date date,int day){
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(date);
+ calendar.add(Calendar.DAY_OF_MONTH, day);
+ return calendar.getTime();
+ }
+
+ //鑾峰彇骞存湀鏃�
+ public static String timeYestMonthDay(Date date){
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(date);
+
+ int year = calendar.get(Calendar.YEAR);
+ int month = calendar.get(Calendar.MONTH) + 1; // 鏈堜唤浠�0寮�濮嬶紝闇�瑕佸姞1
+ int day = calendar.get(Calendar.DAY_OF_MONTH);
+ return year+"骞�"+month+"鏈�"+day+"鏃�";
+ }
+
+ //鑾峰彇骞�
+ public static int timeYest(Date date){
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(date);
+
+ return calendar.get(Calendar.YEAR);
+ }
+
+ //鑾峰彇鏈�
+ public static int timeMonth(Date date){
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(date);
+
+ return calendar.get(Calendar.MONTH) + 1;
+ }
+
+ //鑾峰彇鏃�
+ public static int timeDay(Date date){
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(date);
+
+ return calendar.get(Calendar.DAY_OF_MONTH);
+ }
+ //鑾峰彇骞村樊寮�
+ public static int DifferenceYest(Date startDay,Date endDay){
+ int startYest = timeYest(startDay);
+ int endYest = timeYest(endDay);
+ return endYest-startYest;
+ }
+ //鑾峰彇鏈堝樊寮�
+ public static int DifferenceMonth(Date startDay,Date endDay){
+ int startMonth = timeMonth(startDay);
+ int endMonth = timeMonth(endDay);
+ return endMonth-startMonth;
+ }
+ //鑾峰彇澶╁樊寮�
+ public static int DifferenceDayInt(Date startDay,Date endDay){
+ return DifferenceDayLong(startDay,endDay).intValue();
+ }
+ //鑾峰彇澶╁樊寮�
+ public static Long DifferenceDayLong(Date startDay,Date endDay){
+
+ LocalDate a = LocalDate.of(timeYest(startDay), timeMonth(startDay), timeDay(startDay));
+ LocalDate b = LocalDate.of(timeYest(endDay), timeMonth(endDay), timeDay(endDay));
+
+ return ChronoUnit.DAYS.between(a, b)+1;
+ }
+ //鑾峰彇澶╁樊寮�
+ public static Double DifferenceDayMorningAfternoon(Date startDay,Date endDay,int startTime,int endTime){
+ double between = DifferenceDayLong(startDay, endDay).doubleValue();
+ if (startTime==2){
+ between = between-0.5;
+ }
+ if (endTime == 1){
+ between = between-0.5;
+ }
+ return between;
+ }
+
+ //鑾峰彇姣宸紓
+ public static Long differenceInMilliseconds(Date startDay, Date endDay) {
+ if (startDay == null || endDay == null) {
+ throw new IllegalArgumentException("Dates cannot be null");
+ }
+
+ // 鑾峰彇姣宸紓
+ return endDay.getTime() - startDay.getTime();
+ }
+
+ public static boolean CompareData(Date startDay,Date endDay){
+
+ // 灏嗘棩鏈熷瓧绗︿覆瑙f瀽涓篖ocalDate瀵硅薄
+ LocalDate a = LocalDate.of(timeYest(startDay), timeMonth(startDay), timeDay(startDay));
+ LocalDate b = LocalDate.of(timeYest(endDay), timeMonth(endDay), timeDay(endDay));
+
+ // 姣旇緝鏃ユ湡
+ if (a.isAfter(b)) {
+ return false;
+ } else if (a.isBefore(b)) {
+ return true;
+ } else {
+ return true;
+ }
+ }
+
+ //java.time.LocalDate 杞崲涓� java.util.Date;
+ public static Date DateLocalDate(LocalDate localDate) {
+ return Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
+ }
+
+ //鑾峰彇鐜板湪鏃ユ湡鏄綋鏈堢鍑犲懆
+ public static int WeeklyNowMonthDay(Date date) {
+// int day = timeDay(date);
+// if (day<7){
+// if (WeeklyNowMonth(WeeklyMonday(date))>2){
+// return 1;
+// }
+// }
+ return WeeklyNowMonth(WeeklyMonday(date));
+ }
+ public static int WeeklyNowMonth(Date date) {
+// LocalDate currentDate = LocalDate.now();
+ LocalDate currentDate = LocalDate.of(timeYest(date), timeMonth(date), timeDay(date));
+
+ WeekFields weekFields = WeekFields.of(Locale.getDefault());
+
+ int weekOfMonth = currentDate.get(weekFields.weekOfMonth());
+
+
+ return weekOfMonth;
+ }
+
+ //闄愬埗涓や釜鏃ユ湡鏄懆涓�鍜屽懆鏈� 宸ヤ綔鏃� 鍛ㄤ竴鍒板懆鍏�
+ public static void WeeklySix(Date date) {
+// LocalDate startDate = LocalDate.of(2022, 9, 5); // 鍋囪寮�濮嬫棩鏈熸槸2022骞�9鏈�5鏃ワ紝鍛ㄤ竴
+ LocalDate startDate = LocalDate.of(timeYest(date), timeMonth(date), timeDay(date));
+ System.out.println("褰撳墠鏃ユ湡 " + startDate + " 鍛�");
+
+ LocalDate endDate = startDate.plus(6, ChronoUnit.DAYS); // 缁撴潫鏃ユ湡鏄紑濮嬫棩鏈熷姞涓�6澶�
+ System.out.println("褰撳墠鏃ユ湡鍔犱笂6澶╂槸 " + endDate + " 鍛�");
+
+
+ // 濡傛灉寮�濮嬫棩鏈熶笉鏄懆涓�锛屽垯灏嗗畠璋冩暣鍒颁笅涓�涓懆涓�
+ if (startDate.getDayOfWeek() != DayOfWeek.MONDAY) {
+ startDate = startDate.with(TemporalAdjusters.next(DayOfWeek.MONDAY));
+ }
+
+ // 濡傛灉缁撴潫鏃ユ湡涓嶆槸鍛ㄦ湯锛堝嵆鍛ㄥ叚鎴栧懆鏃ワ級锛屽垯灏嗗畠璋冩暣鍒颁笅涓�涓懆鏈�
+ if (endDate.getDayOfWeek() != DayOfWeek.SATURDAY && endDate.getDayOfWeek() != DayOfWeek.SUNDAY) {
+ endDate = endDate.with(TemporalAdjusters.next(DayOfWeek.SATURDAY));
+ }
+
+ // 纭繚涓や釜鏃ユ湡涔嬮棿鐩搁殧涓冨ぉ
+ while (startDate.plus(7, ChronoUnit.DAYS).isBefore(endDate)) {
+ startDate = startDate.plus(7, ChronoUnit.DAYS);
+ }
+
+ System.out.println("寮�濮嬫棩鏈燂細" + startDate);
+ System.out.println("缁撴潫鏃ユ湡锛�" + endDate);
+ }
+
+ //闄愬埗涓や釜鏃ユ湡鏄懆涓�鍜屽懆鏈� 鍛ㄤ竴鍒板懆鏃�
+ public static List<Date> WeeklySeven(Date date) {
+// LocalDate startDate = LocalDate.of(2022, 9, 5); // 鍋囪寮�濮嬫棩鏈熸槸2022骞�9鏈�5鏃ワ紝鍛ㄤ竴
+ LocalDate startDate = LocalDate.of(timeYest(date), timeMonth(date), timeDay(date));
+// System.out.println("褰撳墠鏃ユ湡 " + startDate + " 鍛�");
+
+ LocalDate endDate = startDate.plus(6, ChronoUnit.DAYS); // 缁撴潫鏃ユ湡鏄紑濮嬫棩鏈熷姞涓�6澶�
+// System.out.println("褰撳墠鏃ユ湡鍔犱笂6澶╂槸 " + endDate + " 鍛�");
+
+ // 濡傛灉寮�濮嬫棩鏈熶笉鏄懆涓�锛屽垯灏嗗畠璋冩暣鍒颁笅涓�涓懆涓�
+ if (startDate.getDayOfWeek() != DayOfWeek.MONDAY) {
+ startDate = startDate.with(TemporalAdjusters.next(DayOfWeek.MONDAY));
+ }
+
+ // 濡傛灉缁撴潫鏃ユ湡涓嶆槸鍛ㄦ棩锛屽垯灏嗗畠璋冩暣鍒颁笅涓�涓懆鏃�
+ if (endDate.getDayOfWeek() != DayOfWeek.SUNDAY) {
+ endDate = endDate.with(TemporalAdjusters.next(DayOfWeek.SUNDAY));
+ }
+
+ // 纭繚涓や釜鏃ユ湡涔嬮棿鐩搁殧涓冨ぉ
+ while (startDate.plus(7, ChronoUnit.DAYS).isBefore(endDate)) {
+ startDate = startDate.plus(7, ChronoUnit.DAYS);
+ }
+
+ List<Date> dateList = new ArrayList<>();
+ dateList.add(DateLocalDate(startDate));
+ dateList.add(DateLocalDate(endDate));
+ return dateList;
+// System.out.println("寮�濮嬫棩鏈燂細" + startDate);
+// System.out.println("缁撴潫鏃ユ湡锛�" + endDate);
+ }
+
+ //鍒ゆ柇鏄笉鏄懆涓�
+ public static boolean WeeklyOneSign(Date date) {
+ LocalDate localDate = LocalDate.of(timeYest(date), timeMonth(date), timeDay(date));
+ // 鍒ゆ柇鏄笉鏄懆涓�
+ if (localDate.getDayOfWeek() != DayOfWeek.MONDAY) {
+ return false;
+ }
+ return true;
+ }
+
+ //鑾峰彇鏈懆鍛ㄤ竴
+ public static Date WeeklyMonday (Date date) {
+ LocalDate localDate = LocalDate.of(timeYest(date), timeMonth(date), timeDay(date));
+ // 涓嬪懆鍛ㄤ竴
+ localDate = localDate.with(TemporalAdjusters.next(DayOfWeek.MONDAY));
+
+ // 灏哃ocalDate杞崲涓篋ate
+ Date monday = DateLocalDate(localDate);
+
+ // 鍒欏皢瀹冭皟鏁村埌鏈懆鍛ㄤ竴
+ return timeFrontSevenYesterday(monday);
+ }
+
+ //鑾峰彇褰撳墠鏃ユ湡鎵�鍦ㄧ殑鍛ㄤ竴鍙婂懆鏃ユ椂闂�
+ public static List<Date> WeeklyMondayAndSundayNow(Date date) {
+ Date nowMonday = WeeklyMonday(date);
+ return WeeklySeven(nowMonday);
+ }
+
+ //鑾峰彇褰撳墠鏃ユ湡涓婁竴鍛ㄥ懆涓�鍙婂懆鏃ユ椂闂�
+ public static List<Date> WeeklyMondayAndSundayFront(Date date) {
+ Date nowMonday = WeeklyMonday(date);
+ Date frontSevenYesterday = timeFrontSevenYesterday(nowMonday);
+ return WeeklySeven(frontSevenYesterday);
+ }
+
+ //鑾峰彇褰撳墠鏃ユ湡涓嬩竴鍛ㄥ懆涓�鍙婂懆鏃ユ椂闂�
+ public static List<Date> WeeklyMondayAndSundayAfter(Date date) {
+ Date nowMonday = WeeklyMonday(date);
+ Date afterSevenYesterday = timeAfterSevenYesterday(nowMonday);
+ return WeeklySeven(afterSevenYesterday);
+ }
+
+ //鑾峰彇鍛ㄤ竴鍒板懆鏈�
+ public static List<Date> WeeklyDays(Date date){
+ Date nowMonday = WeeklyMonday(date);
+ List<Date> dateList = new ArrayList<>();
+ dateList.add(nowMonday);
+ for (int i = 1; i<7 ; i++){
+ dateList.add(timeYesterdayN(nowMonday,i));
+ }
+ return dateList;
+ }
+
+ //鑾峰彇鍛ㄤ竴鍒板懆鏈�
+ public static List<Date> WeeklyListDays(List<Date> dates){
+ Date date = dates.get(0);
+ Date nowMonday = WeeklyMonday(date);
+ List<Date> dateList = new ArrayList<>();
+ dateList.add(nowMonday);
+ for (int i = 1; i<7 ; i++){
+ dateList.add(timeYesterdayN(nowMonday,i));
+ }
+ return dateList;
+ }
+
+ public static void main(String[] args) {
+ Date now = new Date();
+ int weeklyNowMonth = WeeklyNowMonthDay(now);
+ System.out.println("褰撳墠鏃ユ湡鏄 " + weeklyNowMonth + " 鍛�");
+
+ LocalDate startDate1 = LocalDate.of(2024, 2, 29);
+ int weeklyNowMonth1 = WeeklyNowMonthDay(DateLocalDate(startDate1));
+ System.out.println("褰撳墠鏃ユ湡鏄 " + weeklyNowMonth1 + " 鍛�");
+
+ LocalDate startDate2 = LocalDate.of(2024, 3, 5);
+ int weeklyNowMonth2 = WeeklyNowMonthDay(DateLocalDate(startDate2));
+ System.out.println("褰撳墠鏃ユ湡鏄 " + weeklyNowMonth2 + " 鍛�");
+
+ LocalDate startDate3 = LocalDate.of(2024, 3, 10);
+ int weeklyNowMonth3 = WeeklyNowMonthDay(DateLocalDate(startDate3));
+ System.out.println("褰撳墠鏃ユ湡鏄 " + weeklyNowMonth3 + " 鍛�");
+
+ LocalDate startDate4 = LocalDate.of(2024, 3, 31);
+ int weeklyNowMonth4 = WeeklyNowMonthDay(DateLocalDate(startDate4));
+ System.out.println("褰撳墠鏃ユ湡鏄 " + weeklyNowMonth4 + " 鍛�");
+
+ LocalDate startDate5 = LocalDate.of(2024, 4, 1);
+ int weeklyNowMonth5 = WeeklyNowMonthDay(DateLocalDate(startDate5));
+ System.out.println("褰撳墠鏃ユ湡鏄 " + weeklyNowMonth5 + " 鍛�");
+
+ LocalDate startDate6 = LocalDate.of(2024, 4, 7);
+ int weeklyNowMonth6 = WeeklyNowMonthDay(DateLocalDate(startDate6));
+ System.out.println("褰撳墠鏃ユ湡鏄 " + weeklyNowMonth6 + " 鍛�");
+ }
+
+// public static void main(String[] args) {
+// Date now = new Date();
+// //鏈懆
+// List<Date> dateList = WeeklyMondayAndSundayNow(now);
+// for (Date date : dateList){
+// System.out.println("------------------------------");
+// System.out.println(date);
+// }
+// //涓婂懆
+// List<Date> dateList1 = WeeklyMondayAndSundayFront(now);
+// for (Date date : dateList1){
+// System.out.println("------------------------------");
+// System.out.println(date);
+// }
+// //涓嬪懆
+// List<Date> dateList2 = WeeklyMondayAndSundayAfter(now);
+// for (Date date : dateList2){
+// System.out.println("------------------------------");
+// System.out.println(date);
+// }
+// //鍛�
+// List<Date> dateList3 = WeeklyDays(now);
+// for (Date date : dateList3){
+// System.out.println("------------------------------");
+// System.out.println(date);
+// }
+// }
+
+}
diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml
index 79abf49..a805e5e 100644
--- a/src/main/resources/mapper/WrkMastMapper.xml
+++ b/src/main/resources/mapper/WrkMastMapper.xml
@@ -80,7 +80,7 @@
<select id="selectToBeHistoryData" resultMap="BaseResultMap">
select * from asr_wrk_mast
- where wrk_sts=5
+ where wrk_sts=4
or (wrk_sts=15 and ove_mk='Y' and wrk_no not in (select wrk_no from asr_bas_devp))
or (wrk_sts=15 and dateadd(mi,15,crn_end_time) <= getdate() and wrk_no not in (select wrk_no from asr_bas_devp))
or (wrk_sts=15 and crn_end_time is null and wrk_no not in (select wrk_no from asr_bas_devp))
--
Gitblit v1.9.1