出库相关接口

This commit is contained in:
李广豪 2022-01-01 23:15:06 +08:00
parent f3b97b9559
commit e0a61480eb
16 changed files with 2099 additions and 36 deletions

File diff suppressed because it is too large Load Diff

View File

@ -18,7 +18,7 @@ import lombok.experimental.Accessors;
* </p> * </p>
* *
* @author mt * @author mt
* @since 2021-11-18 * @since 2021-12-27
*/ */
@Data @Data
@EqualsAndHashCode(callSuper = false) @EqualsAndHashCode(callSuper = false)
@ -104,10 +104,10 @@ public class ParEleValue extends Model<ParEleValue> {
private Float totalBat; private Float totalBat;
/** /**
* 扩展字段1 * 时间段类型0半小时12
*/ */
@TableField("add_a") @TableField("date_type")
private Float addA; private Integer dateType;
/** /**
* 扩展字段2 * 扩展字段2
@ -166,7 +166,7 @@ public class ParEleValue extends Model<ParEleValue> {
public static final String TOTAL_BAT = "total_bat"; public static final String TOTAL_BAT = "total_bat";
public static final String ADD_A = "add_a"; public static final String DATE_TYPE = "date_type";
public static final String ADD_B = "add_b"; public static final String ADD_B = "add_b";

View File

@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
* </p> * </p>
* *
* @author mt * @author mt
* @since 2021-11-18 * @since 2021-12-27
*/ */
public interface ParEleValueMapper extends BaseMapper<ParEleValue> { public interface ParEleValueMapper extends BaseMapper<ParEleValue> {

View File

@ -17,7 +17,7 @@
<result column="b_current_value" property="bCurrentValue" /> <result column="b_current_value" property="bCurrentValue" />
<result column="c_current_value" property="cCurrentValue" /> <result column="c_current_value" property="cCurrentValue" />
<result column="total_bat" property="totalBat" /> <result column="total_bat" property="totalBat" />
<result column="add_a" property="addA" /> <result column="date_type" property="dateType" />
<result column="add_b" property="addB" /> <result column="add_b" property="addB" />
<result column="add_c" property="addC" /> <result column="add_c" property="addC" />
<result column="orther_a" property="ortherA" /> <result column="orther_a" property="ortherA" />
@ -27,7 +27,7 @@
<!-- 通用查询结果列 --> <!-- 通用查询结果列 -->
<sql id="Base_Column_List"> <sql id="Base_Column_List">
id, create_time, inter_code, status, kiln_id, par_id, a_voltagev_value, b_voltagev_value, c_voltagev_value, a_current_value, b_current_value, c_current_value, total_bat, add_a, add_b, add_c, orther_a, orther_b, orther_c id, create_time, inter_code, status, kiln_id, par_id, a_voltagev_value, b_voltagev_value, c_voltagev_value, a_current_value, b_current_value, c_current_value, total_bat, date_type, add_b, add_c, orther_a, orther_b, orther_c
</sql> </sql>
</mapper> </mapper>

View File

@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
* </p> * </p>
* *
* @author mt * @author mt
* @since 2021-11-18 * @since 2021-12-27
*/ */
public interface ParEleValueServiceBiz extends IService<ParEleValue> { public interface ParEleValueServiceBiz extends IService<ParEleValue> {

View File

@ -12,7 +12,7 @@ import org.springframework.stereotype.Service;
* </p> * </p>
* *
* @author mt * @author mt
* @since 2021-11-18 * @since 2021-12-27
*/ */
@Service @Service
public class ParEleValueServiceBizImpl extends ServiceImpl<ParEleValueMapper, ParEleValue> implements ParEleValueServiceBiz { public class ParEleValueServiceBizImpl extends ServiceImpl<ParEleValueMapper, ParEleValue> implements ParEleValueServiceBiz {

View File

@ -12,6 +12,7 @@ import com.mt.wms.empty.params.ElectricQueryParam;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
@ -19,12 +20,17 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.annotation.PostConstruct;
import javax.validation.groups.Default; import javax.validation.groups.Default;
import java.time.DayOfWeek;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.LocalTime; import java.time.LocalTime;
import java.time.temporal.ChronoUnit; import java.time.temporal.ChronoUnit;
import java.time.temporal.TemporalAdjusters;
import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* @Author: liguanghao * @Author: liguanghao
@ -37,6 +43,34 @@ import java.util.List;
@Api(value = "电能消耗相关接口", tags = "电能消耗相关接口", hidden = false) @Api(value = "电能消耗相关接口", tags = "电能消耗相关接口", hidden = false)
public class ElectricController extends BaseController { public class ElectricController extends BaseController {
//@PostConstruct
public void test(){
LocalDateTime time=LocalDateTime.of(2021, 3, 31, 0, 0, 0);
Float f=29000F;
LocalDate timeDate=time.toLocalDate();
LocalDateTime timeEnd = LocalDateTime.of(timeDate, LocalTime.MAX).minus(5,ChronoUnit.SECONDS);
for (int i = 0; i < 10; i++) {
ParEleValue parEleValue=new ParEleValue();
parEleValue.setDateType(2);
parEleValue.setParId(1);
parEleValue.setKilnId(1);
parEleValue.setTotalBat(Float.valueOf(String.valueOf(f+(Math.random()*24000))));
parEleValue.setCreateTime(timeEnd);
timeEnd=timeEnd.plus(1,ChronoUnit.MONTHS);
f=parEleValue.getTotalBat();
parEleValueServiceBiz.save(parEleValue);
System.out.println(parEleValue);
}
}
public void test1(){
}
@Autowired @Autowired
private ParEleValueServiceBiz parEleValueServiceBiz; private ParEleValueServiceBiz parEleValueServiceBiz;
@ -44,10 +78,7 @@ public class ElectricController extends BaseController {
@ApiOperation(value = "根据窑炉id获取电能消耗情况") @ApiOperation(value = "根据窑炉id获取电能消耗情况")
private R<String> list(@Validated({Default.class}) @RequestBody ElectricQueryParam electricQueryParam) { private R<String> list(@Validated({Default.class}) @RequestBody ElectricQueryParam electricQueryParam) {
Long kiln = electricQueryParam.getKilnId(); Long kiln = electricQueryParam.getKilnId();
//窑炉id为0代表全部 //窑炉id为0代表全部存储的时候计算全部
if (kiln==0){
}else {
JSONObject jsonObject=new JSONObject(); JSONObject jsonObject=new JSONObject();
//指定时间节点 //指定时间节点
LocalDate timeDate = electricQueryParam.getTime().toLocalDate(); LocalDate timeDate = electricQueryParam.getTime().toLocalDate();
@ -71,12 +102,13 @@ public class ElectricController extends BaseController {
List<ParEleValue> yesterdayEleValueList = parEleValueServiceBiz.list(new QueryWrapper<ParEleValue>() List<ParEleValue> yesterdayEleValueList = parEleValueServiceBiz.list(new QueryWrapper<ParEleValue>()
.eq("kiln_id", kiln) .eq("kiln_id", kiln)
.between("create_time", yesterdayStart, yesterdayEnd) .between("create_time", yesterdayStart, yesterdayEnd)
.eq("date_type",0)
.orderByAsc("create_time")); .orderByAsc("create_time"));
Float yesterdayTotalBat= yesterdayEleValueList.get(yesterdayEleValueList.size()-1).getTotalBat()-yesterdayEleValueList.get(0).getTotalBat(); Float yesterdayTotalBat= yesterdayEleValueList.get(yesterdayEleValueList.size()-1).getTotalBat()-yesterdayEleValueList.get(0).getTotalBat();
jsonObject.put("yesterdayCountEle",yesterdayTotalBat); jsonObject.put("yesterdayCountEle",yesterdayTotalBat);
//指定日期当天的电能消耗 //指定日期当天的电能消耗
if (electricQueryParam.getDateType()==1){ if (electricQueryParam.getDateType()==0){
List<ParEleValue> dateEleValueList = parEleValueServiceBiz.list(new QueryWrapper<ParEleValue>() List<ParEleValue> dateEleValueList = parEleValueServiceBiz.list(new QueryWrapper<ParEleValue>()
.eq("kiln_id", kiln) .eq("kiln_id", kiln)
.between("create_time", timeStart, timeEnd) .between("create_time", timeStart, timeEnd)
@ -88,12 +120,90 @@ public class ElectricController extends BaseController {
} }
jsonObject.put("dateCountEle",dateCountEle); jsonObject.put("dateCountEle",dateCountEle);
//分时消耗量 //分时消耗量
Map<String,Float> timeJsonObject=new LinkedHashMap();
for (int i = 0; i < dateEleValueList.size() - 1; ++i) { for (int i = 0; i < dateEleValueList.size() - 1; ++i) {
// TODO: 2021/12/16 // TODO: 2021/12/16
float eleValue = dateEleValueList.get(i).getTotalBat() - dateEleValueList.get(i - 1).getTotalBat(); float eleValue = dateEleValueList.get(i).getTotalBat() - dateEleValueList.get(i - 1).getTotalBat();
int j=i+1;
if (j%2==0){
String time=(j-1)/2+":30";
timeJsonObject.put(time,eleValue);
}else {
String time=(j-1)/2+":00";
timeJsonObject.put(time,eleValue);
} }
} }
jsonObject.put("timeEle",timeJsonObject);
} }
return null; //指定日期当周的每天电能消耗
if(electricQueryParam.getDateType()==1){
LocalDate monday = timeDate.with(DayOfWeek.MONDAY);
LocalDate sunday = timeDate.with(DayOfWeek.SUNDAY);
List<ParEleValue> timeWeekEleValueList = parEleValueServiceBiz.list(new QueryWrapper<ParEleValue>()
.eq("kiln_id", kiln)
.between("create_time", monday, sunday.plusDays(1))
.eq("date_type", 1)
.orderByAsc("create_time"));
//总耗电量
Float dateCountEle=0F;
if (timeWeekEleValueList.size()!=0){
dateCountEle= timeWeekEleValueList.get(timeWeekEleValueList.size()-1).getTotalBat()-timeWeekEleValueList.get(0).getTotalBat();
}
jsonObject.put("dateCountEle",dateCountEle);
Map<String,Float> timeJsonObject=new LinkedHashMap();
for (ParEleValue parEleValue:timeWeekEleValueList
) {
LocalDate localDate = parEleValue.getCreateTime().toLocalDate();
timeJsonObject.put(localDate.toString(),parEleValue.getTotalBat());
}
jsonObject.put("timeEle",timeJsonObject);
}
//指定日期当月的每天电能消耗
if(electricQueryParam.getDateType()==2){
LocalDate firstday = LocalDate.of(timeDate.getYear(), timeDate.getMonthValue(), 1);
LocalDate lastDay = timeDate.with(TemporalAdjusters.lastDayOfMonth());
List<ParEleValue> timeMonthEleValueList = parEleValueServiceBiz.list(new QueryWrapper<ParEleValue>()
.eq("kiln_id", kiln)
.between("create_time", firstday, lastDay.plusDays(1))
.eq("date_type", 1)
.orderByAsc("create_time"));
//总耗电量
Float dateCountEle=0F;
if (timeMonthEleValueList.size()!=0){
dateCountEle= timeMonthEleValueList.get(timeMonthEleValueList.size()-1).getTotalBat()-timeMonthEleValueList.get(0).getTotalBat();
}
jsonObject.put("dateCountEle",dateCountEle);
Map<String,Float> timeJsonObject=new LinkedHashMap();
for (ParEleValue parEleValue:timeMonthEleValueList
) {
LocalDate localDate = parEleValue.getCreateTime().toLocalDate();
timeJsonObject.put(localDate.toString(),parEleValue.getTotalBat());
}
jsonObject.put("timeEle",timeJsonObject);
}
//指定日期当年的每月电能消耗
if(electricQueryParam.getDateType()==2){
LocalDate firstDay = timeDate.with(TemporalAdjusters.firstDayOfYear());
LocalDate lastDay = timeDate.with(TemporalAdjusters.lastDayOfYear());
List<ParEleValue> timeYearEleValueList = parEleValueServiceBiz.list(new QueryWrapper<ParEleValue>()
.eq("kiln_id", kiln)
.between("create_time", firstDay, lastDay.plusDays(1))
.eq("date_type", 2)
.orderByAsc("create_time"));
//总耗电量
Float dateCountEle=0F;
if (timeYearEleValueList.size()!=0){
dateCountEle= timeYearEleValueList.get(timeYearEleValueList.size()-1).getTotalBat()-timeYearEleValueList.get(0).getTotalBat();
}
jsonObject.put("dateCountEle",dateCountEle);
Map<String,Float> timeJsonObject=new LinkedHashMap();
for (ParEleValue parEleValue:timeYearEleValueList
) {
LocalDate localDate = parEleValue.getCreateTime().toLocalDate();
timeJsonObject.put(localDate.toString(),parEleValue.getTotalBat());
}
jsonObject.put("timeEle",timeJsonObject);
}
return successful(jsonObject.toJSONString());
} }
} }

View File

@ -24,9 +24,9 @@ public class AlarmInfoQueryParam extends BasePageParam {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "设备ID", required = false) @ApiModelProperty(value = "设备ID", required = false)
private Long equipmentID; private Long equipmentId;
@ApiModelProperty(value = "报警类型", required = true) @ApiModelProperty(value = "报警类型0窑炉1表示车辆", required = true)
private Integer type; private Integer type;
@ApiModelProperty(value = "开始时间", required = false) @ApiModelProperty(value = "开始时间", required = false)

View File

@ -33,7 +33,7 @@ public class AlarmInfoServiceImpl extends BaseService implements AlarmInfoServic
QueryWrapper<AlarmInfo> wrapper = new QueryWrapper<>(); QueryWrapper<AlarmInfo> wrapper = new QueryWrapper<>();
wrapper.between(alarmInfoQueryParam.getStartTime() != null, AlarmInfo.CREATE_TIME, alarmInfoQueryParam.getStartTime(), alarmInfoQueryParam.getEndTime()) wrapper.between(alarmInfoQueryParam.getStartTime() != null, AlarmInfo.CREATE_TIME, alarmInfoQueryParam.getStartTime(), alarmInfoQueryParam.getEndTime())
.eq(AlarmInfo.TYPE, alarmInfoQueryParam.getType()) .eq(AlarmInfo.TYPE, alarmInfoQueryParam.getType())
.eq(alarmInfoQueryParam.getEquipmentID() != null, AlarmInfo.EQUIPMENT_ID, alarmInfoQueryParam.getEquipmentID()) .eq(alarmInfoQueryParam.getEquipmentId() != null, AlarmInfo.EQUIPMENT_ID, alarmInfoQueryParam.getEquipmentId())
.orderByDesc(AlarmInfo.CREATE_TIME); .orderByDesc(AlarmInfo.CREATE_TIME);
Page<AlarmInfo> page = alarmInfoServiceBiz.page(new Page<>(alarmInfoQueryParam.getCurrent(), alarmInfoQueryParam.getSize()), wrapper); Page<AlarmInfo> page = alarmInfoServiceBiz.page(new Page<>(alarmInfoQueryParam.getCurrent(), alarmInfoQueryParam.getSize()), wrapper);
return successful(new PageVo<>(page, AlarmInfoVo.class)); return successful(new PageVo<>(page, AlarmInfoVo.class));

View File

@ -3,13 +3,19 @@ package com.mt.wms.empty.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.mt.wms.core.base.BaseService; import com.mt.wms.core.base.BaseService;
import com.mt.wms.core.dal.entity.InStockInfo; import com.mt.wms.core.dal.entity.InStockInfo;
import com.mt.wms.core.dal.entity.InStockInfoHis;
import com.mt.wms.core.dal.entity.RunTask;
import com.mt.wms.core.dal.entity.VehicleInfo; import com.mt.wms.core.dal.entity.VehicleInfo;
import com.mt.wms.core.dal.service.InStockInfoHisServiceBiz;
import com.mt.wms.core.dal.service.InStockInfoServiceBiz; import com.mt.wms.core.dal.service.InStockInfoServiceBiz;
import com.mt.wms.core.dal.service.RunTaskServiceBiz;
import com.mt.wms.core.dal.service.VehicleInfoServiceBiz; import com.mt.wms.core.dal.service.VehicleInfoServiceBiz;
import com.mt.wms.core.dal.service.impl.InStockInfoHisServiceBizImpl;
import com.mt.wms.core.vo.R; import com.mt.wms.core.vo.R;
import com.mt.wms.empty.params.OutStockParam; import com.mt.wms.empty.params.OutStockParam;
import com.mt.wms.empty.service.OutStockService; import com.mt.wms.empty.service.OutStockService;
import com.mt.wms.empty.task.AsynRunTaskService; import com.mt.wms.empty.task.AsynRunTaskService;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -33,11 +39,14 @@ public class OutStockServiceImpl extends BaseService implements OutStockService
private AsynRunTaskService asynRunTaskService; private AsynRunTaskService asynRunTaskService;
@Resource @Resource
private InStockInfoServiceBiz inStockInfoServiceBiz; private InStockInfoServiceBiz inStockInfoServiceBiz;
@Resource
private RunTaskServiceBiz runTaskServiceBiz;
@Override @Override
public R<String> outTask(OutStockParam outStockParam) { public R<String> outTask(OutStockParam outStockParam) {
// TODO: 2021/12/17 出库 // TODO: 2021/12/17 出库
Long localtionId = outStockParam.getLocaltionId(); Long locationId = outStockParam.getLocaltionId();
//提升台 //提升台
Integer code = outStockParam.getCode(); Integer code = outStockParam.getCode();
//查询是否有空闲车辆若有占用车辆若无返回暂无可用车辆 //查询是否有空闲车辆若有占用车辆若无返回暂无可用车辆
@ -52,14 +61,22 @@ public class OutStockServiceImpl extends BaseService implements OutStockService
}else { }else {
return R.failed("暂无可用车辆!请稍后重试!"); return R.failed("暂无可用车辆!请稍后重试!");
} }
//生成调度任务
RunTask runTask=new RunTask();
runTask.setBeginTime(LocalDateTime.now());
runTask.setVehicleId(vehicleInfoList.get(0).getId());
// TODO: 2021/12/22 库位id对应的位置 提升平台对应的位置
runTask.setStartPosition("库位位置");
runTask.setEndPosition("提升台位置");
setCommonField(runTask);
runTaskServiceBiz.save(runTask);
//异步调用车辆 //异步调用车辆
asynRunTaskService.asynRunOutStock(); asynRunTaskService.asynRunOutStock(runTask.getId(),locationId);
//修改库位状态 //修改库位状态
InStockInfo inStockInfo = inStockInfoServiceBiz InStockInfo inStockInfo = inStockInfoServiceBiz
.getOne(new QueryWrapper<InStockInfo>().eq("Location_id", localtionId)); .getOne(new QueryWrapper<InStockInfo>().eq("Location_id", locationId));
inStockInfo.setStatus(1); inStockInfo.setStatus(1);
inStockInfoServiceBiz.updateById(inStockInfo); inStockInfoServiceBiz.updateById(inStockInfo);
return R.ok("操作成功"); return R.ok("操作成功");
} }
} }

View File

@ -5,9 +5,11 @@ import com.mt.wms.core.base.BaseService;
import com.mt.wms.core.dal.entity.CurrTaskDet; import com.mt.wms.core.dal.entity.CurrTaskDet;
import com.mt.wms.core.dal.entity.InStockInfo; import com.mt.wms.core.dal.entity.InStockInfo;
import com.mt.wms.core.dal.entity.Location; import com.mt.wms.core.dal.entity.Location;
import com.mt.wms.core.dal.entity.OrderInfo;
import com.mt.wms.core.dal.service.CurrTaskDetServiceBiz; import com.mt.wms.core.dal.service.CurrTaskDetServiceBiz;
import com.mt.wms.core.dal.service.InStockInfoServiceBiz; import com.mt.wms.core.dal.service.InStockInfoServiceBiz;
import com.mt.wms.core.dal.service.LocationServiceBiz; import com.mt.wms.core.dal.service.LocationServiceBiz;
import com.mt.wms.core.dal.service.OrderInfoServiceBiz;
import com.mt.wms.core.params.IdParam; import com.mt.wms.core.params.IdParam;
import com.mt.wms.core.vo.R; import com.mt.wms.core.vo.R;
import com.mt.wms.empty.params.StockInfoQueryParam; import com.mt.wms.empty.params.StockInfoQueryParam;
@ -36,11 +38,18 @@ public class StockInfoServiceImpl extends BaseService implements StockInfoServic
private LocationServiceBiz locationServiceBiz; private LocationServiceBiz locationServiceBiz;
@Resource @Resource
private CurrTaskDetServiceBiz currTaskDetServiceBiz; private CurrTaskDetServiceBiz currTaskDetServiceBiz;
@Resource
private OrderInfoServiceBiz orderInfoServiceBiz;
@Override @Override
public R<List<CurrTaskDetVo>> get(IdParam idParam) { public R<List<CurrTaskDetVo>> get(IdParam idParam) {
Long taskId = inStockInfoServiceBiz.getById(idParam).getTaskId(); Long taskId = inStockInfoServiceBiz.getById(idParam).getTaskId();
List<CurrTaskDet> currTaskDetList = currTaskDetServiceBiz.list(new QueryWrapper<CurrTaskDet>().eq("curr_task_id", taskId)); List<CurrTaskDet> currTaskDetList = currTaskDetServiceBiz.list(new QueryWrapper<CurrTaskDet>().eq("curr_task_id", taskId));
List<CurrTaskDetVo> currTaskDetVoList = com.mt.wms.core.utils.BeanUtils.copyList(currTaskDetList, CurrTaskDetVo.class); List<CurrTaskDetVo> currTaskDetVoList = com.mt.wms.core.utils.BeanUtils.copyList(currTaskDetList, CurrTaskDetVo.class);
for (CurrTaskDetVo currTaskDetVo:currTaskDetVoList
) {
String costomerName = orderInfoServiceBiz.getOne(new QueryWrapper<OrderInfo>().eq("order_no", currTaskDetVo.getOrderNo())).getCustomerName();
currTaskDetVo.setCustomer(costomerName);
}
return successful(currTaskDetVoList); return successful(currTaskDetVoList);
} }
@ -55,11 +64,13 @@ public class StockInfoServiceImpl extends BaseService implements StockInfoServic
//库位为空 //库位为空
if (location.getStatus()!=1){ if (location.getStatus()!=1){
stockInfoVo.setEmpty(1); stockInfoVo.setEmpty(1);
stockInfoVo.setLocaltionId(location.getId()); stockInfoVo.setLocationId(location.getId());
stockInfoVo.setLocationName(location.getLocationNameAlias());
}else { }else {
InStockInfo inStockInfo = inStockInfoServiceBiz.getOne(new QueryWrapper<InStockInfo>() InStockInfo inStockInfo = inStockInfoServiceBiz.getOne(new QueryWrapper<InStockInfo>()
.eq("localtion_id", location.getId())); .eq("location_id", location.getId()));
BeanUtils.copyProperties(inStockInfo,stockInfoVo); BeanUtils.copyProperties(inStockInfo,stockInfoVo);
stockInfoVo.setEmpty(0);
} }
stockInfoVoList.add(stockInfoVo); stockInfoVoList.add(stockInfoVo);
} }

View File

@ -7,6 +7,7 @@ import com.mt.wms.core.dal.service.*;
import com.mt.wms.core.utils.IDGenerator; import com.mt.wms.core.utils.IDGenerator;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -32,7 +33,8 @@ public class AsynRunTaskService extends BaseService {
private LocationServiceBiz locationServiceBiz; private LocationServiceBiz locationServiceBiz;
@Resource @Resource
private InStockInfoServiceBiz inStockInfoServiceBiz; private InStockInfoServiceBiz inStockInfoServiceBiz;
@Resource
private InStockInfoHisServiceBiz inStockInfoHisServiceBiz;
//窑炉可用未满的情况下调用车辆起点为提升台终点为窑炉 //窑炉可用未满的情况下调用车辆起点为提升台终点为窑炉
@Async("asyncServiceExecutor") @Async("asyncServiceExecutor")
public void asynRunTask(Long currTaskId,Long vehicleId){ public void asynRunTask(Long currTaskId,Long vehicleId){
@ -84,6 +86,7 @@ public class AsynRunTaskService extends BaseService {
runTask.setVehicleId(vehicleId); runTask.setVehicleId(vehicleId);
runTask.setBeginTime(LocalDateTime.now()); runTask.setBeginTime(LocalDateTime.now());
runTask.setStartPosition(currTask.getStartPosition()); runTask.setStartPosition(currTask.getStartPosition());
// TODO: 2021/12/28 location对应的点位
runTask.setEndPosition(location.getCode()); runTask.setEndPosition(location.getCode());
runTaskServiceBiz.save(runTask); runTaskServiceBiz.save(runTask);
//更新 location 表对应库位状态为占用 //更新 location 表对应库位状态为占用
@ -135,12 +138,108 @@ public class AsynRunTaskService extends BaseService {
} }
//窑炉加工完成调用车辆入库到缓存区 //窑炉加工完成调用车辆入库到缓存区
@Async("asyncServiceExecutor") @Async("asyncServiceExecutor")
public void asynRunTaskForKilnToWarehouse(Long kilnId,Long vehicleId){ public void asynRunTaskForKilnToWarehouse(Long currTaskId,Long vehicleId){
CurrTask currTask = currTaskServiceBiz.getById(currTaskId);
// TODO: 2021/12/28 location排序
Location location = locationServiceBiz.list(new QueryWrapper<Location>()
.eq(Location.STATUS, 1)
.eq(Location.VALID, 1)).get(0);
currTask.setOutStartPosition(currTask.getTargetPosition());
// TODO: 2021/12/28 location对应的点位
currTask.setOutTargetPosition(location.getCode());
currTaskServiceBiz.updateById(currTask);
//新建一条执行任务的关系表存放任务执行信息,终点为缓存区空闲库位
RunTask runTask=new RunTask();
setCommonField(runTask);
runTask.setTaskId(currTask.getId());
runTask.setTaskCode(currTask.getTaskCode());
runTask.setVehicleId(vehicleId);
runTask.setBeginTime(LocalDateTime.now());
runTask.setStartPosition(currTask.getOutStartPosition());
runTask.setEndPosition(currTask.getOutTargetPosition());
runTaskServiceBiz.save(runTask);
//更新 location 表对应库位状态为占用
location.setStatus(1);
location.setUpdateTime(LocalDateTime.now());
locationServiceBiz.updateById(location);
currTask.setOutRunTaskId(runTask.getId());
currTaskServiceBiz.updateById(currTask);
//添加一条库位详情到in_stock_info表
InStockInfo inStockInfo=new InStockInfo();
inStockInfo.setStatus(1);
inStockInfo.setInterCode(IDGenerator.gen("HCT", "yyyyMMddHHmm", 2, "WAREHOUSE_CODE"));
inStockInfo.setTaskId(currTask.getId());
inStockInfo.setTaskCode(currTask.getTaskCode());
inStockInfo.setKilnId(currTask.getKilnId());
inStockInfo.setKilnName(currTask.getKilnName());
inStockInfo.setLocationId(location.getId());
inStockInfo.setLocationName(location.getLocationNameAlias());
inStockInfo.setType(0);
setCommonField(inStockInfo);
inStockInfoServiceBiz.save(inStockInfo);
// TODO: 2021/12/14 调用车辆填入起终点,得到车辆执行结果,填入任务号待确认
if (true){
//更新关系表状态为完成
runTask.setUpdateTime(LocalDateTime.now());
runTask.setStatus(2);
runTask.setEndTime(LocalDateTime.now());
runTaskServiceBiz.updateById(runTask);
//更新currTask表
currTask.setIsOut(2);
currTask.setUpdateTime(LocalDateTime.now());
currTask.setStatus(2);
currTaskServiceBiz.updateById(currTask);
//更新in_stock_info表
inStockInfo.setStatus(2);
inStockInfo.setInTime(LocalDateTime.now());
inStockInfoServiceBiz.updateById(inStockInfo);
}else {
runTask.setStatus(3);
runTask.setUpdateTime(LocalDateTime.now());
runTaskServiceBiz.updateById(runTask);
logger.info("任务 "+currTask.getTaskCode()+" 车辆从窑炉到缓存区过程中失败。");
// TODO: 2021/12/14 websocket推送到前端
}
} }
//出库起点为缓存区库位终点为提升台 //出库起点为缓存区库位终点为提升台
@Async("asyncServiceExecutor") @Async("asyncServiceExecutor")
public void asynRunOutStock(){ public void asynRunOutStock(Long runTaskId,Long locationId){
//修改调度任务状态
RunTask runTask = runTaskServiceBiz.getById(runTaskId);
//修改缓存区状态
InStockInfo inStockInfo = inStockInfoServiceBiz.getOne(new QueryWrapper<InStockInfo>()
.eq("location_id", locationId));
inStockInfo.setStatus(1);
inStockInfoServiceBiz.updateById(inStockInfo);
// TODO: 2021/12/14 调用车辆填入起终点,得到车辆执行结果,填入任务号待确认
if (true){
//更新关系表状态为完成
runTask.setUpdateTime(LocalDateTime.now());
runTask.setStatus(2);
runTask.setEndTime(LocalDateTime.now());
runTaskServiceBiz.updateById(runTask);
//更新in_stock_info表
inStockInfo.setStatus(2);
inStockInfo.setInTime(LocalDateTime.now());
inStockInfoServiceBiz.updateById(inStockInfo);
//缓存区存储历史
InStockInfoHis inStockInfoHis=new InStockInfoHis();
BeanUtils.copyProperties(inStockInfo,inStockInfoHis);
inStockInfoHisServiceBiz.save(inStockInfoHis);
inStockInfoServiceBiz.removeById(inStockInfo.getId());
//更新库位状态
Location location = locationServiceBiz.getById(locationId);
location.setStatus(0);
locationServiceBiz.updateById(location);
}else {
runTask.setStatus(3);
runTask.setUpdateTime(LocalDateTime.now());
runTaskServiceBiz.updateById(runTask);
logger.info("任务 "+runTask.getTaskCode()+" 车辆从缓存区到提升平台过程中失败。");
// TODO: 2021/12/14 websocket推送到前端
}
} }
} }

View File

@ -106,7 +106,40 @@ public class RunTaskUtils {
* 呼叫车辆暂存缓存区车辆调度任务结束后结束后再查询缓存区队列避免车辆路线冲突查询该窑炉的缓存区队列开始下一托盘货物调度进窑炉 * 呼叫车辆暂存缓存区车辆调度任务结束后结束后再查询缓存区队列避免车辆路线冲突查询该窑炉的缓存区队列开始下一托盘货物调度进窑炉
* @return * @return
*/ */
public R runTaskForOutKiln(){ public R runTaskForOutKiln(Long kilnId){
return null; //查询正在该窑炉加工的currTask
CurrTask currTask = currTaskServiceBiz.getOne(new QueryWrapper<CurrTask>()
.eq("is_in", 1)
.eq("status", 1)
.eq("kiln_id", kilnId));
//查询缓存区库位是否已满
int count = locationServiceBiz.count(new QueryWrapper<Location>()
.eq(Location.STATUS, 0)
.eq(Location.VALID, 1));
//缓存区未满
if (count >0) {
//查询是否有空闲车辆若有占用车辆若无返回暂无可用车辆
List<VehicleInfo> vehicleInfoList = vehicleInfoServiceBiz.list(new QueryWrapper<VehicleInfo>()
.eq(VehicleInfo.STATUS, 0)
.eq(VehicleInfo.VALID, 1));
if (vehicleInfoList.size()>0){
VehicleInfo vehicleInfo = vehicleInfoList.get(0);
vehicleInfo.setStatus(1);
vehicleInfo.setUpdateTime(LocalDateTime.now());
vehicleInfoServiceBiz.updateById(vehicleInfo);
}else {
return R.failed("暂无可用车辆!请稍后重试!");
}
currTask.setIsOut(0);
currTask.setTaskType(2);
currTask.setUpdateTime(LocalDateTime.now());
currTaskServiceBiz.updateById(currTask);
//异步调用车辆
asynRunTaskService.asynRunTaskForKilnToWarehouse(currTask.getId(),vehicleInfoList.get(0).getId());
return R.ok("操作成功!当前目标窑炉已满,托盘加入缓存区待加工队列。");
}else {
return R.ok("当前缓存区已满,无法从加工炉出炉到缓存区。");
}
} }
} }

View File

@ -14,6 +14,34 @@ public class ScheduledTask {
*/ */
@Scheduled @Scheduled
public void taskForStockToKiln(){ public void taskForStockToKiln(){
//遍历窑炉状态若加工完毕查询空车占用异步处理继续遍历下一个窑炉状态 //遍历currTask为进行中且is_in为正在加工的窑炉状态若加工完毕调用runTaskForOutKiln
} }
//每个小时的0分和30分执行
@Scheduled(cron = "0 0/30 * * * ?")
//获取全部窑炉每半小时电能消耗数据计算存储
public void getAllEleValue(){
// TODO: 2021/12/27
// 获取每台窑炉的电度值存入par_ele_value,dateType为0,kilnId为窑炉Id
// 获取11台窑炉的电度值相加,存入par_ele_value,dateType为0,kilnId为0
}
//每日2355执行
@Scheduled(cron = "0 55 23 * * ?")
//获取全部窑炉每天电能消耗数据计算存储
public void getAllEleValueForDay(){
// TODO: 2021/12/27
// 获取每台窑炉的电度值存入par_ele_value,dateType为0,kilnId为窑炉Id
// 获取11台窑炉的电度值相加,存入par_ele_value,dateType为0,kilnId为0
}
//每月最后一日2355执行
@Scheduled(cron = "0 55 23 L * ?")
//获取全部窑炉每天电能消耗数据计算存储
public void getAllEleValueForMonth(){
// TODO: 2021/12/27
// 获取每台窑炉的电度值存入par_ele_value,dateType为0,kilnId为窑炉Id
// 获取11台窑炉的电度值相加,存入par_ele_value,dateType为0,kilnId为0
}
} }

View File

@ -87,7 +87,7 @@ public class CurrTaskDetVo extends BaseVo implements PageVo.ConvertVo {
* 单位 * 单位
*/ */
@ApiModelProperty("单位") @ApiModelProperty("单位")
private Float unit; private String unit;
/** /**
* 数量手动输入 * 数量手动输入

View File

@ -36,12 +36,12 @@ public class StockInfoVo extends BaseVo implements PageVo.ConvertVo{
* 库位id * 库位id
*/ */
@ApiModelProperty(value = "库位id",example = "0") @ApiModelProperty(value = "库位id",example = "0")
private Long localtionId; private Long locationId;
/** /**
* 库位名称 * 库位名称
*/ */
@ApiModelProperty(value = "库位名称",example = "0") @ApiModelProperty(value = "库位名称",example = "0")
private String localtionName; private String locationName;
/** /**
* 任务id * 任务id
*/ */