Browse Source

循环盘点生成申请。

master
刘忱 2 years ago
parent
commit
3f2974e061
  1. 6
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/countPlan/CountPlanMainDO.java
  2. 47
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/job/CountPlanCycleJob.java
  3. 6
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countPlan/CountPlanMainService.java
  4. 21
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countPlan/CountPlanMainServiceImpl.java

6
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/countPlan/CountPlanMainDO.java

@ -39,6 +39,10 @@ public class CountPlanMainDO extends BaseDO {
* 执行周期
*/
private String crontab;
/**
* 下一执行时间
*/
private LocalDateTime nextTime;
/**
* 维度
*
@ -131,6 +135,6 @@ public class CountPlanMainDO extends BaseDO {
/**
* 租户编号
*/
private Integer tenantId;
private Long tenantId;
}

47
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/job/CountPlanCycleJob.java

@ -0,0 +1,47 @@
package com.win.module.wms.job;
import com.win.framework.quartz.core.handler.JobHandler;
import com.win.framework.quartz.core.util.CronUtils;
import com.win.framework.tenant.core.context.TenantContextHolder;
import com.win.module.wms.dal.dataobject.countPlan.CountPlanMainDO;
import com.win.module.wms.dal.mysql.countPlan.CountPlanMainMapper;
import com.win.module.wms.service.countPlan.CountPlanMainService;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.List;
@Component
public class CountPlanCycleJob implements JobHandler {
@Resource
private CountPlanMainService countPlanMainService;
@Resource
private CountPlanMainMapper countPlanMainMapper;
@Override
public String execute(String param) {
StringBuilder message = new StringBuilder();
TenantContextHolder.setIgnore(true);
List<CountPlanMainDO> countPlanMainDOList = countPlanMainService.getCountPlanCycle();
TenantContextHolder.setIgnore(false);
for(CountPlanMainDO countPlanMainDO : countPlanMainDOList) {
TenantContextHolder.setTenantId(countPlanMainDO.getTenantId());
LocalDateTime now = LocalDateTime.now();
if(now.isAfter(countPlanMainDO.getNextTime())) {
countPlanMainService.generateRequest(countPlanMainDO);
countPlanMainDO.setNextTime(null);
// 计算下一个执行时间
List<LocalDateTime> nextTimes = CronUtils.getNextTimes(countPlanMainDO.getCrontab(), 1);
if(!nextTimes.isEmpty()) {
countPlanMainDO.setNextTime(nextTimes.get(0));
}
countPlanMainMapper.updateById(countPlanMainDO);
message.append("盘点计划 ").append(countPlanMainDO.getNumber()).append(" 生成了盘点申请");
}
}
return message.toString();
}
}

6
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countPlan/CountPlanMainService.java

@ -144,4 +144,10 @@ public interface CountPlanMainService {
* @param mainDO 盘点申请主
*/
void generateRequest(CountPlanMainDO mainDO);
/**
* 获取所有循环盘点用于定时生成盘点申请
* @return 可用循环盘点
*/
List<CountPlanMainDO> getCountPlanCycle();
}

21
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countPlan/CountPlanMainServiceImpl.java

@ -30,12 +30,12 @@ import com.win.module.wms.dal.mysql.balance.BalanceMapper;
import com.win.module.wms.dal.mysql.countPlan.CountPlanDetailMapper;
import com.win.module.wms.dal.mysql.countPlan.CountPlanMainMapper;
import com.win.module.wms.dal.mysql.countRequest.CountRequestMainMapper;
import com.win.module.wms.enums.plan.PlanStatusEnum;
import com.win.module.wms.enums.plan.PlanStatusState;
import com.win.module.wms.service.countRequest.CountRequestMainService;
import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.location.LocationService;
import com.win.module.wms.util.JobUtils;
import org.quartz.SchedulerException;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -279,11 +279,10 @@ public class CountPlanMainServiceImpl implements CountPlanMainService {
if(mainDO.getType().equals("MANUAL")) {//指定盘点
this.generateRequest(mainDO);
} else if (mainDO.getType().equals("CYCLE")) {//循环盘点
// 添加 Job 到 Quartz 中
try {
schedulerManager.addJob(mainDO.getId() + 10000, "countPlanJob", String.valueOf(mainDO.getId()) + "," + mainDO.getTenantId(), mainDO.getCrontab(), 3, 60*10);
} catch (SchedulerException e) {
throw new ServiceException(COUNT_PLAN_CRON_ERROR);
// 计算下一个执行时间
List<LocalDateTime> nextTimes = CronUtils.getNextTimes(mainDO.getCrontab(), 1);
if(!nextTimes.isEmpty()) {
mainDO.setNextTime(nextTimes.get(0));
}
}
return countPlanMainMapper.updateById(mainDO);
@ -458,4 +457,14 @@ public class CountPlanMainServiceImpl implements CountPlanMainService {
}
return balanceMapper.selectList(queryWrapper);
}
@Override
public List<CountPlanMainDO> getCountPlanCycle() {
QueryWrapper<CountPlanMainDO> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("`type`", "CYCLE");
queryWrapper.eq("`status`", PlanStatusEnum.PUBLISHED.getCode());
queryWrapper.eq("available", "TRUE");
return countPlanMainMapper.selectList(queryWrapper);
}
}

Loading…
Cancel
Save