Commit a04c3173 zshaohui

海康电子看板

1 个父辈 5dca14bb
......@@ -45,7 +45,7 @@ public class DataInitManager {
MainTimer mainTimer;
//@Value("${menu.show}")
private String[] menuShowList = new String[]{"commonIn","returnIn","cutIn"};
private String[] menuShowList = new String[]{"commonIn","returnIn","cutIn","elecKanban"};
//@Value("${menu.hide}")
private String[] menuHideList = new String[]{"singleDiskWarehousing"};
......@@ -127,6 +127,8 @@ public class DataInitManager {
Map<String,Menu> functionMenuMap = new HashMap<>();
addNewFunctionMenu(null, new ArrayList<Menu>(), 1, "elecKanban", "电子看板", 1, "elecKanban", "elekanban/index", "", 0, "kanban", functionMenuMap);
//物料管理:工单出库,查找出库(UID出库,PN出库),物料标签,料盒操作,出库策略,工单设置
Menu poutOut = Menu.CreatePMenu("物料管理", 20, "order", 2, "workOrder", null);
......
......@@ -148,4 +148,6 @@ public class Constants {
*/
public static final String CACHE_failedRequestMap = "CACHE_failedRequestMap";
public static final String CACHE_OrderProgress = "CACHE_OrderProgress";
}
package com.neotel.smfcore.core.order;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import com.google.common.base.Strings;
import com.google.common.collect.Lists;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.Constants;
import com.neotel.smfcore.common.utils.StringUtils;
import com.neotel.smfcore.core.barcode.service.manager.IComponentManager;
import com.neotel.smfcore.core.barcode.service.po.Component;
import com.neotel.smfcore.core.device.enums.OP;
......@@ -12,6 +14,7 @@ import com.neotel.smfcore.core.device.enums.OP_STATUS;
import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.hik.enums.IN_OUT_TYPE;
import com.neotel.smfcore.core.language.util.MessageUtils;
import com.neotel.smfcore.core.order.bean.OrderProgress;
import com.neotel.smfcore.core.order.enums.LITEORDER_STATUS;
import com.neotel.smfcore.core.order.enums.ORDER_COLOR;
import com.neotel.smfcore.core.order.rest.bean.mapstruct.OrderPnMapper;
......@@ -28,6 +31,7 @@ import com.neotel.smfcore.core.system.util.TaskService;
import com.neotel.smfcore.hikvision.HikApi;
import com.neotel.smfcore.hikvision.bean.HikOrderInfo;
import com.neotel.smfcore.hikvision.bean.result.ApiResult;
import com.neotel.smfcore.hikvision.util.ShiftUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort;
......@@ -105,6 +109,7 @@ public class LiteOrderCache implements ITaskListener {
liteOrderMap.remove(order.getOrderNo());
}
liteOrderMap.put(order.getOrderNo(), order);
updateOrderProgress(order,false);
}
public void removeOrder(LiteOrder order){
......@@ -115,6 +120,7 @@ public class LiteOrderCache implements ITaskListener {
public synchronized void updateOrder(LiteOrder order){
order = liteOrderManager.save(order);
liteOrderMap.put(order.getOrderNo(), order);
updateOrderProgress(order,false);
}
public LiteOrder findOrderById(String orderId){
......@@ -962,4 +968,63 @@ public class LiteOrderCache implements ITaskListener {
}
return outPos;
}
public void updateOrderProgress(LiteOrder order,boolean flag) {
try {
if (!flag) {
if (!order.isClosed()) {
return;
}
} else {
if (!order.isNew()) {
return;
}
}
if (StringUtils.isNotBlank(order.getReplenishmentNo())) {
return;
}
OrderProgress progress = dataCache.getCache(Constants.CACHE_OrderProgress);
if (progress == null) {
progress = new OrderProgress();
}
Date orderCreateDate = order.getCreateDate();
String orderCreateDateStr = DateUtil.format(orderCreateDate, "yyyy-MM-dd");
Date createDate = progress.getCreateDate();
String createDateStr = DateUtil.format(createDate, "yyyy-MM-dd");
//判断工单创建时间是否小于当前时间
if (DateUtil.parse(orderCreateDateStr, "yyyy-MM-dd").getTime() < DateUtil.parse(createDateStr, "yyyy-MM-dd").getTime()) {
return;
}
if (ShiftUtil.isA(orderCreateDate)) {
if (!orderCreateDateStr.equals(createDateStr)) {
progress = new OrderProgress();
}
if (order.isNew()) {
progress.setShiftAOrderCount(progress.getShiftAOrderCount() + 1);
} else if (order.isClosed()) {
progress.setShiftAOrderFinishedCount(progress.getShiftAOrderFinishedCount() + 1);
}
} else {
Date startDate = ShiftUtil.getShiftBSelectDate(orderCreateDate);
String startDateStr = DateUtil.format(startDate, "yyyy-MM-dd");
if (!startDateStr.equals(createDateStr)) {
progress = new OrderProgress();
}
if (order.isNew()) {
progress.setShiftBOrderCount(progress.getShiftBOrderCount() + 1);
} else if (order.isClosed()) {
progress.setShiftBOrderFinishedCount(progress.getShiftBOrderFinishedCount() + 1);
}
}
dataCache.updateCache(Constants.CACHE_OrderProgress, progress);
} catch (Exception e) {
log.error("更新工单信息报错",e);
e.printStackTrace();
}
}
}
package com.neotel.smfcore.core.order.bean;
import com.neotel.smfcore.common.base.BasePo;
import lombok.Data;
@Data
public class OrderProgress extends BasePo {
/**
* A班工单数量
*/
private int shiftAOrderCount = 0;
/**
* A班工单已完成数量
*/
private int shiftAOrderFinishedCount = 0;
/**
* B班工单数量
*/
private int shiftBOrderCount = 0;
/**
* B班工单已完成数量
*/
private int shiftBOrderFinishedCount = 0;
}
......@@ -74,4 +74,7 @@ public class StorageDto implements Serializable {
@ApiModelProperty("是否在线")
private boolean onLine=false;
@ApiModelProperty("分类:大盘料架,小盘料架")
private String sizeType;
}
......@@ -71,6 +71,10 @@ public class Storage extends BasePo implements Serializable {
*/
private boolean mergePos=false;
/**
* 分裂,大盘料架,小盘料架
*/
private String sizeType;
// /**
// * 是否是上下层的在线料仓
......
......@@ -8,7 +8,6 @@ import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.Constants;
import com.neotel.smfcore.common.utils.ReelLockPosUtil;
import com.neotel.smfcore.common.utils.SecurityUtils;
import com.neotel.smfcore.common.utils.StorageConstants;
import com.neotel.smfcore.core.barcode.enums.COMPONENT_TYPE;
import com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager;
import com.neotel.smfcore.core.barcode.service.po.Barcode;
......@@ -17,22 +16,15 @@ import com.neotel.smfcore.core.device.enums.OP;
import com.neotel.smfcore.core.device.enums.OP_STATUS;
import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.hik.enums.IN_OUT_TYPE;
import com.neotel.smfcore.core.order.enums.LITEORDER_STATUS;
import com.neotel.smfcore.core.order.enums.ORDER_COLOR;
import com.neotel.smfcore.core.order.service.po.LiteOrder;
import com.neotel.smfcore.core.order.service.po.LiteOrderItem;
import com.neotel.smfcore.core.storage.enums.CHECKOUT_TYPE;
import com.neotel.smfcore.core.storage.enums.DeviceType;
import com.neotel.smfcore.core.storage.rest.dto.TacticsOutDto;
import com.neotel.smfcore.core.storage.service.manager.IStorageManager;
import com.neotel.smfcore.core.storage.service.manager.IStoragePosManager;
import com.neotel.smfcore.core.storage.service.manager.impl.StorageManagerImpl;
import com.neotel.smfcore.core.storage.service.manager.impl.StoragePosManagerImpl;
import com.neotel.smfcore.core.storage.service.po.Storage;
import com.neotel.smfcore.core.storage.service.po.StoragePos;
import com.neotel.smfcore.core.system.listener.ITaskListener;
import com.neotel.smfcore.core.system.service.dao.IDataLogDao;
import com.neotel.smfcore.core.system.service.po.DataLog;
import com.neotel.smfcore.hikvision.service.manager.IHikTaskCountManager;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -56,6 +48,9 @@ public class TaskService {
@Autowired
protected IStoragePosManager storagePosManager;
@Autowired
protected IHikTaskCountManager hikTaskCountManager;
@Autowired
private List<ITaskListener> taskListenerList = new ArrayList<>();
......@@ -169,6 +164,11 @@ public class TaskService {
for (ITaskListener taskListener : taskListenerList) {
taskListener.onTaskStatusChange(task);
}
try {
hikTaskCountManager.updateInOutCount(task);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
......
......@@ -93,7 +93,7 @@ public class HikvisionApiController {
liteOrderManager.createWithItems(order);
liteOrderCache.addOrderToMap(order);
log.info("新建工单[" + order.getOrderNo() + "]工单详情"+order.getOrderItems().size()+"条" );
liteOrderCache.updateOrderProgress(order,true);
} else {
if (order.getStatus() > LITEORDER_STATUS.NEW) {
log.info("工单[" + orderNo + "]已存在,且状态为[" + order.getStatus() + "],不能修改工单信息:" + outInfo.toString());
......
package com.neotel.smfcore.hikvision;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import com.neotel.smfcore.common.bean.ResultBean;
import com.neotel.smfcore.common.utils.Constants;
import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.order.bean.OrderProgress;
import com.neotel.smfcore.core.storage.service.po.Storage;
import com.neotel.smfcore.hikvision.bean.InOutDetailInfo;
import com.neotel.smfcore.hikvision.bean.StorageInventoryInfo;
import com.neotel.smfcore.hikvision.bean.eums.StorageSizeType;
import com.neotel.smfcore.hikvision.service.manager.IHikTaskCountManager;
import com.neotel.smfcore.hikvision.service.po.TaskCount;
import com.neotel.smfcore.hikvision.util.ShiftUtil;
import com.neotel.smfcore.security.annotation.AnonymousAccess;
import io.swagger.annotations.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Api(tags = "海康看板")
@Slf4j
@RestController
@RequestMapping("/kanBan")
public class HikvisionKanBanController {
@Autowired
private DataCache dataCache;
@Autowired
private IHikTaskCountManager hikTaskCountManager;
@ApiOperation("获取库容信息")
@GetMapping("/getStorageInventoryInfo")
@AnonymousAccess
public ResultBean<StorageInventoryInfo> getStorageInventoryInfo() {
StorageInventoryInfo info = new StorageInventoryInfo();
for (Storage storage : dataCache.getAllStorage().values()) {
int totalSlots = storage.getTotalSlots();
int emptySlots = storage.getEmptySlots();
int noEmptySlots = totalSlots - emptySlots;
if (StorageSizeType.BIG_REEL.equals(storage.getSizeType())) {
info.setBigReelTotalCount(info.getBigReelTotalCount() + totalSlots);
info.setBigReelUsedCount(info.getBigReelUsedCount() + noEmptySlots);
info.setBigReelNoUsedCount(info.getBigReelNoUsedCount() + emptySlots);
} else if (StorageSizeType.SMALL_REEL.equals(storage.getSizeType())) {
info.setSmallReelTotalCount(info.getSmallReelTotalCount() + totalSlots);
info.setSmallReelUsedCount(info.getSmallReelUsedCount() + noEmptySlots);
info.setSmallReelNoUsedCount(info.getSmallReelNoUsedCount() + emptySlots);
}
info.setTotalCount(info.getTotalCount() + totalSlots);
info.setTotalUsedCount(info.getTotalUsedCount() + noEmptySlots);
info.setTotalNoUsedCount(info.getTotalNoUsedCount() + emptySlots);
}
return ResultBean.newOkResult(info);
}
@ApiOperation("入库或者备料")
@GetMapping("inOutDetail")
@ApiImplicitParams(value = {
@ApiImplicitParam(name = "date", value = "日期,格式为yyyy-MM-dd", dataType = "String", required = true)
})
@AnonymousAccess
public ResultBean<InOutDetailInfo> inOutDetail(@RequestParam(value = "date") String date) {
InOutDetailInfo info = new InOutDetailInfo();
List<TaskCount> taskCountList = hikTaskCountManager.findTaskCountByDate(DateUtil.parse(date, "yyyy-MM-dd"));
if (taskCountList != null && !taskCountList.isEmpty()) {
for (TaskCount taskCount : taskCountList) {
if (ShiftUtil.SHIFT_A.equals(taskCount.getShift())) {
info.setShiftAList(taskCount);
} else if (ShiftUtil.SHIFT_B.equals(taskCount.getShift())) {
info.setShiftBList(taskCount);
}
}
}
return ResultBean.newOkResult(info);
}
@ApiOperation("入库或备料趋势图")
@GetMapping("inOutTrend")
@ApiImplicitParam(name = "type", value = "1:是按日分布 2:是按年分布", dataType = "String", required = true)
@AnonymousAccess
public ResultBean inOutTrend(@RequestParam("type") String type) {
InOutTrendInfo info = new InOutTrendInfo();
Date startDate = null;
//日期列表
List<Date> timeList = new ArrayList<>();
//格式化类型
String formatStr = "";
if ("1".equals(type)) {
startDate = getFirSevenDaysDate();
timeList = getDayTimeFrame(startDate, 7);
formatStr = "MM月dd日";
} else {
startDate = getFirTwelveMonthsDate();
timeList = getMouthTimeFrame(startDate, 12);
formatStr = "yy年MM月";
}
//获取具体详情
List<TaskCount> taskCountList = hikTaskCountManager.findTaskCountByDate(startDate);
//开始处理信息
for (int i = 0; i < timeList.size(); i++) {
Date date = timeList.get(i);
InOutTrendDetail detail = new InOutTrendDetail();
detail.setDateStr(DateUtil.format(date, formatStr));
int putInCount = 0;
int checkOutCount = 0;
for (TaskCount taskCount : taskCountList) {
if (i == timeList.size() - 1) {
if (taskCount.getCreateDate().getTime() > timeList.get(i).getTime()) {
putInCount = putInCount + taskCount.getPutInCount();
checkOutCount = checkOutCount + taskCount.getCheckOutCount();
}
} else {
if (taskCount.getCreateDate().getTime() >= timeList.get(i).getTime() && taskCount.getCreateDate().getTime() < timeList.get(i + 1).getTime()) {
putInCount = putInCount + taskCount.getPutInCount();
checkOutCount = checkOutCount + taskCount.getCheckOutCount();
}
}
}
detail.setPutInCount(putInCount);
detail.setCheckOutCount(checkOutCount);
info.setTrendList(detail);
}
return ResultBean.newOkResult(info);
}
@ApiOperation("获取工单的进度")
@GetMapping("/getOrderProgress")
@AnonymousAccess
public ResultBean getOrderProgress() {
OrderProgress progress = dataCache.getCache(Constants.CACHE_OrderProgress);
if (progress == null) {
progress = new OrderProgress();
}
return ResultBean.newOkResult(progress);
}
private static Date getFirTwelveMonthsDate() {
Date currentDate = new Date();
String currentMonth = DateUtil.format(currentDate, "yyyyMM");
Date currentMouthDate = DateUtil.parse(currentMonth, "yyyyMM");
return DateUtil.offsetMonth(currentMouthDate, -11);
}
private static Date getFirSevenDaysDate() {
Date currentDate = new Date();
String currentDay = DateUtil.format(currentDate, "yyyy-MM-dd");
Date currentDayDate = DateUtil.parse(currentDay, "yyyy-MM-dd");
return DateUtil.offsetDay(currentDayDate, -6);
}
private static List<Date> getDayTimeFrame(Date startDate, int days) {
List<Date> dateList = new ArrayList<>();
for (int i = 0; i < days; i++) {
dateList.add(DateUtil.offsetDay(startDate, i));
}
return dateList;
}
private static List<Date> getMouthTimeFrame(Date startDate, int mouths) {
List<Date> dateList = new ArrayList<>();
for (int i = 0; i < mouths; i++) {
dateList.add(DateUtil.offsetMonth(startDate, i));
}
return dateList;
}
}
package com.neotel.smfcore.hikvision;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
@ApiModel(value = "入库/备料趋势图")
@Data
public class InOutTrendInfo {
@ApiModelProperty(value = "趋势详情集合")
private List<InOutTrendDetail> trendList;
public void setTrendList(InOutTrendDetail detail){
if (trendList == null){
trendList = new ArrayList<>();
}
trendList.add(detail);
}
}
@Data
class InOutTrendDetail {
private String dateStr = "";
private int putInCount;
private int checkOutCount;
}
package com.neotel.smfcore.hikvision.bean;
import com.neotel.smfcore.hikvision.service.po.TaskCount;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import javafx.concurrent.Task;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
@Data
@ApiModel(value = "inOutDetail--入库或者备料统计")
public class InOutDetailInfo {
@ApiModelProperty("A班详情")
private List<TaskCount> shiftAList;
@ApiModelProperty("B班详情")
private List<TaskCount> shiftBList;
public void setShiftAList(TaskCount taskCount) {
if (shiftAList == null) {
shiftAList = new ArrayList<>();
}
shiftAList.add(taskCount);
}
public void setShiftBList(TaskCount taskCount) {
if (shiftBList == null) {
shiftBList = new ArrayList<>();
}
shiftBList.add(taskCount);
}
}
package com.neotel.smfcore.hikvision.bean;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "getStorageInventoryInfo-库容信息", description = "库容信息")
public class StorageInventoryInfo {
@ApiModelProperty(value = "总量")
private int totalCount = 11;
@ApiModelProperty(value = "总的使用量")
private int totalUsedCount= 11;
@ApiModelProperty(value = "总的未使用量")
private int totalNoUsedCount= 11;
@ApiModelProperty(value = "大盘总量")
private int bigReelTotalCount= 11;
@ApiModelProperty(value = "大盘使用量")
private int bigReelUsedCount= 11;
@ApiModelProperty(value = "大盘未使用未使用量")
private int bigReelNoUsedCount= 11;
@ApiModelProperty(value = "小盘总量")
private int smallReelTotalCount= 11;
@ApiModelProperty(value = "小盘使用量")
private int smallReelUsedCount= 11;
@ApiModelProperty(value = "小盘未使用量")
private int smallReelNoUsedCount= 11;
}
package com.neotel.smfcore.hikvision.bean.eums;
/**
* 大小盘分类
*/
public class StorageSizeType {
public static final String BIG_REEL = "1";
public static final String SMALL_REEL = "2";
}
package com.neotel.smfcore.hikvision.service.dao;
import com.neotel.smfcore.common.base.IBaseDao;
import com.neotel.smfcore.hikvision.service.po.TaskCount;
import java.util.Date;
import java.util.List;
public interface IHikTaskCountDao extends IBaseDao {
TaskCount getByOperatorAndShift(String operator, String shift, Date createDate);
List<TaskCount> findTaskCountByDate(Date date);
}
package com.neotel.smfcore.hikvision.service.dao.impl;
import com.neotel.smfcore.common.base.AbstractBaseDao;
import com.neotel.smfcore.hikvision.service.po.TaskCount;
import com.neotel.smfcore.hikvision.service.dao.IHikTaskCountDao;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
@Service
public class HikTaskCountDaoImpl extends AbstractBaseDao implements IHikTaskCountDao {
@Override
public Class getEntityClass() {
return TaskCount.class;
}
@Override
public TaskCount getByOperatorAndShift(String operator, String shift, Date createDate) {
return findOne(new Query(Criteria.where("name").is(operator).and("shift").is(shift).and("createDate").gte(createDate)));
}
@Override
public List<TaskCount> findTaskCountByDate(Date date) {
return findByQuery(new Query(Criteria.where("createDate").gte(date)));
}
}
package com.neotel.smfcore.hikvision.service.manager;
import com.neotel.smfcore.core.system.service.po.DataLog;
import com.neotel.smfcore.hikvision.service.po.TaskCount;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
public interface IHikTaskCountManager {
void updateInOutCount(DataLog task);
List<TaskCount> findTaskCountByDate(Date date);
}
package com.neotel.smfcore.hikvision.service.manager.impl;
import com.neotel.smfcore.common.utils.StringUtils;
import com.neotel.smfcore.core.system.service.po.DataLog;
import com.neotel.smfcore.hikvision.service.po.TaskCount;
import com.neotel.smfcore.hikvision.service.dao.IHikTaskCountDao;
import com.neotel.smfcore.hikvision.service.manager.IHikTaskCountManager;
import com.neotel.smfcore.hikvision.util.ShiftUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
@Slf4j
@Service
public class HikTaskCountManagerImpl implements IHikTaskCountManager {
@Autowired
private IHikTaskCountDao hikTaskCountDao;
@Override
public void updateInOutCount(DataLog task) {
if (task.isFinished()) {
//获取到操作人,班次,和查询时间
String operator = task.getOperator();
if (StringUtils.isBlank(operator)) {
operator = "other";
}
String shift = "";
Date createDate = null;
if (ShiftUtil.isA(task.getCreateDate())) {
shift = ShiftUtil.SHIFT_A;
createDate = ShiftUtil.getShiftASelectDate();
} else {
shift = ShiftUtil.SHIFT_B;
createDate = ShiftUtil.getShiftBSelectDate(task.getCreateDate());
}
//保存数据
TaskCount taskCount = hikTaskCountDao.getByOperatorAndShift(operator, shift, createDate);
if (taskCount == null) {
taskCount = new TaskCount();
taskCount.setName(operator);
taskCount.setShift(shift);
}
if (task.isPutInTask()) {
taskCount.setPutInCount(taskCount.getPutInCount() + 1);
} else {
taskCount.setCheckOutCount(taskCount.getCheckOutCount() + 1);
}
hikTaskCountDao.save(taskCount);
}
}
@Override
public List<TaskCount> findTaskCountByDate(Date date) {
return hikTaskCountDao.findTaskCountByDate(date);
}
}
package com.neotel.smfcore.hikvision.service.po;
import com.neotel.smfcore.common.base.BasePo;
import lombok.Data;
@Data
public class TaskCount extends BasePo {
/**
* 班次
*/
private String shift;
/**
* 姓名
*/
private String name;
/**
* 入库数量
*/
private int putInCount = 0;
/**
* 出库数量
*/
private int checkOutCount = 0;
}
package com.neotel.smfcore.hikvision.util;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import java.util.Date;
public class ShiftUtil {
// A班
public static final String SHIFT_A = "A";
// B班
public static final String SHIFT_B = "B";
public static final String START = "00:00:00";
public static final String SHIFT_A_START = "08:30:00";
public static final String SHIFT_A_END = "20:30:00";
/**
* 获取A班开始时间
*
* @return
*/
public static Date getShiftAStartDate() {
String currentDateStr = DateUtil.format(new Date(), "yyyy-MM-dd");
return DateUtil.parse(currentDateStr + " " + SHIFT_A_START, "yyyy-MM-dd HH:mm:ss");
}
/**
* 获取A班结束时间
*
* @return
*/
public static Date getShiftAEndDate() {
String currentDateStr = DateUtil.format(new Date(), "yyyy-MM-dd");
return DateUtil.parse(currentDateStr + " " + SHIFT_A_END, "yyyy-MM-dd HH:mm:ss");
}
/**
* 判断是否属于A班
*
* @param date
* @return
*/
public static boolean isA(Date date) {
return date.getTime() >= getShiftAStartDate().getTime() && date.getTime() < getShiftAEndDate().getTime();
}
public static Date getShiftASelectDate() {
String currentDateStr = DateUtil.format(new Date(), "yyyy-MM-dd");
return DateUtil.parse(currentDateStr + " " + START, "yyyy-MM-dd 00:00:00");
}
public static Date getShiftBSelectDate(Date paramDate) {
String currentDateStr = DateUtil.format(new Date(), "yyyy-MM-dd");
Date currentDate = DateUtil.parse(currentDateStr + " " + START, "yyyy-MM-dd 00:00:00");
Date shiftAStartDate = getShiftAStartDate();
String paramDateStr = DateUtil.format(paramDate, "yyyy-MM-dd");
DateTime resultDate = DateUtil.parse(paramDateStr, "yyyy-MM-dd");
if (paramDate.getTime() >= currentDate.getTime() && paramDate.getTime() < shiftAStartDate.getTime()) {
return DateUtil.offsetDay(resultDate, -1);
}
return resultDate;
}
}
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!