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