| | |
| | | };
|
| | |
|
| | | const onSearch = () => {
|
| | | // console.log('search');
|
| | | getPage()
|
| | | }
|
| | |
|
| | |
| | | {
|
| | | title: formatMessage('db.man_cache_site.order_no', '订单编号'),
|
| | | dataIndex: 'orderNo',
|
| | | width: 140,
|
| | | width: 180,
|
| | | ellipsis: true,
|
| | | ...getColumnSearchProps('orderNo'),
|
| | | },
|
| | |
| | | {
|
| | | title: formatMessage('db.man_wave_seed.site_no', '站点编号'),
|
| | | dataIndex: 'siteNo',
|
| | | width: 140,
|
| | | width: 110,
|
| | | ellipsis: true,
|
| | | ...getColumnSearchProps('siteNo'),
|
| | | },
|
| | | {
|
| | | title: formatMessage('db.man_wave_seed.orderNo', '订单编号'),
|
| | | dataIndex: ['orderDetl$', 'orderNo'],
|
| | | width: 140,
|
| | | width: 220,
|
| | | ellipsis: true,
|
| | | ...getColumnSearchProps('orderNo'),
|
| | | },
|
| | | {
|
| | | title: formatMessage('db.man_wave_seed.matnr', '商品编号'),
|
| | | dataIndex: ['orderDetl$', 'mat$', 'matnr'],
|
| | | width: 140,
|
| | | width: 220,
|
| | | ellipsis: true,
|
| | | ...getColumnSearchProps('matnr'),
|
| | | },
|
| | |
| | | return waveManagentService.getSowSeeds(); |
| | | } |
| | | |
| | | |
| | | @GetMapping("/sow/tasks") |
| | | public R getTasks() { |
| | | return waveManagentService.getTask(); |
| | | } |
| | | |
| | | /** |
| | | * 审核播种状态任务 |
| | | * @param reviewParam |
| | |
| | | //流动通知下发完成后,修改任务状态为输送线流动中。。
|
| | | taskService.update(new LambdaUpdateWrapper<Task>()
|
| | | .eq(Task::getId, task.getId())
|
| | | .set(Task::getTaskSts, TaskStsType.WAVE_SEED.id));
|
| | | .set(Task::getTaskSts, TaskStsType.COMPLETE_IN.id));
|
| | |
|
| | | // log.info(task.getTaskNo() + "下发流动通知" + commonReponse.getMsg());
|
| | | // } else {
|
| | |
| | | package com.zy.asrs.wms.apis.wcs.services.Impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| | | import com.zy.asrs.framework.common.R; |
| | | import com.zy.asrs.framework.exception.CoolException; |
| | | import com.zy.asrs.wms.apis.wcs.entity.response.SowSeeds; |
| | | import com.zy.asrs.wms.apis.wcs.services.WaveManagentService; |
| | | import com.zy.asrs.wms.asrs.entity.Task; |
| | | import com.zy.asrs.wms.asrs.entity.WaveSeed; |
| | | import com.zy.asrs.wms.asrs.entity.param.WaveSeedReviewParam; |
| | | import com.zy.asrs.wms.asrs.service.TaskService; |
| | | import com.zy.asrs.wms.asrs.service.WaveSeedService; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | public class WaveManagentServiceImpl implements WaveManagentService { |
| | | @Autowired |
| | | private WaveSeedService waveSeedService; |
| | | |
| | | @Autowired |
| | | private TaskService taskService; |
| | | |
| | | @Override |
| | | public R getSowSeeds() { |
| | |
| | | return waveSeedService.removeSowById(id); |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public R getTask() { |
| | | List<Task> list = taskService.list(new LambdaQueryWrapper<Task>().ge(Task::getTaskType, 101)); |
| | | return R.ok(list); |
| | | } |
| | | } |
| | |
| | | throw new CoolException(errMsg);
|
| | | }
|
| | | } else if (callbackParam.getEventType().equals(EssTaskStatus.TASK_EVENT_STATUS.event)) { //上报完成状态
|
| | | if (task.getTaskSts() == TaskStsType.WCS_EXECUTE_OUT_TOTE_UNLOAD.id) {
|
| | | taskStsType = TaskStsType.WCS_EXECUTE_OUT_TASK_DONE;
|
| | | if (task.getTaskSts() == TaskStsType.WCS_EXECUTE_OUT_TOTE_UNLOAD.id || task.getTaskSts() == TaskStsType.WCS_EXECUTE_OUT_TASK_DONE.id) {
|
| | | //出库任务完成,修改状态为播种中,定时任务生成播种波次
|
| | | taskStsType = TaskStsType.WAVE_SEED;
|
| | | } else {
|
| | | String errMsg = "任务编号:" + task.getTaskNo() + "状态为不匹配," + "不能执行:" + TaskStsType.WCS_EXECUTE_OUT_TASK_DONE.desc + "任务";
|
| | | log.error(errMsg);
|
| | |
| | | |
| | | int removeSowSeed(Long id); |
| | | |
| | | R getTask(); |
| | | } |
| | |
| | | import com.zy.asrs.wms.asrs.service.*;
|
| | | import com.zy.asrs.wms.system.entity.Host;
|
| | | import com.zy.asrs.wms.system.entity.User;
|
| | | import lombok.experimental.Accessors;
|
| | | import org.springframework.format.annotation.DateTimeFormat;
|
| | | import java.util.Date;
|
| | |
|
| | |
| | | @ApiModelProperty(value= "波次ID")
|
| | | private Long waveId;
|
| | |
|
| | | /**
|
| | | * 波次号
|
| | | */
|
| | | @ApiModelProperty(value = "波次号")
|
| | | private String waveNo;
|
| | |
|
| | | public TaskDetl() {}
|
| | |
|
| | | public TaskDetl(Long taskId,String taskNo,Double anfme,String batch,String barcode,Long orderId,String orderNo,Long detlId,Long matId,Long hostId,Integer status,Integer deleted,Date createTime,Long createBy,Date updateTime,Long updateBy,String memo) {
|
| | |
| | | import com.zy.asrs.wms.asrs.service.TaskDetlService;
|
| | | import com.zy.asrs.wms.system.entity.Host;
|
| | | import com.zy.asrs.wms.system.entity.User;
|
| | | import lombok.experimental.Accessors;
|
| | | import org.springframework.format.annotation.DateTimeFormat;
|
| | | import java.text.SimpleDateFormat;
|
| | | import java.util.Date;
|
| | |
| | | import java.util.Date;
|
| | |
|
| | | @Data
|
| | | @Accessors(chain = true)
|
| | | @TableName("man_wave_seed")
|
| | | public class WaveSeed implements Serializable {
|
| | |
|
| | |
| | | private Long siteId;
|
| | |
|
| | | /**
|
| | | * 波次ID
|
| | | */
|
| | | @ApiModelProperty(value = "波次ID")
|
| | | private Long waveId;
|
| | |
|
| | | /**
|
| | | * 波次号
|
| | | */
|
| | | @ApiModelProperty(value = "波次编号")
|
| | | private String waveNo;
|
| | |
|
| | | /**
|
| | | * 站点编号
|
| | | */
|
| | | @ApiModelProperty(value= "站点编号")
|
| | |
| | | throw new CoolException("未生成波次");
|
| | | }
|
| | |
|
| | | Wave wave = waveService.getById(dto.getWaveId());
|
| | | if (Objects.isNull(wave)) {
|
| | | throw new CoolException("波次不存在");
|
| | | }
|
| | |
|
| | | List<OrderOutMergeParam> params = dto.getList();
|
| | |
|
| | | if (params.isEmpty()) {
|
| | | throw new CoolException("参数不能为空");
|
| | | }
|
| | |
|
| | | Long waveId = dto.getWaveId();
|
| | |
|
| | |
|
| | | // Long waveId = dto.getWaveId();
|
| | | // String waveNo = dto.getw
|
| | |
|
| | | List<Long> filterParamsList = new ArrayList<>();
|
| | | List<OrderOutMergeParam> filterParams = new ArrayList<>();
|
| | |
| | | HashMap<String, Double> stockMap = new HashMap<>();
|
| | | for (OrderOutMergeParam param : filterParams) {
|
| | | String matUniqueKey = Utils.getMatUniqueKey(param.getMatnr(), param.getBatch(), param.getFieldParams());
|
| | | WaveDetl waveDetl = waveDetlService.getOne(new LambdaQueryWrapper<WaveDetl>().eq(WaveDetl::getStockIndex, matUniqueKey).eq(WaveDetl::getWaveId, waveId));
|
| | | WaveDetl waveDetl = waveDetlService.getOne(new LambdaQueryWrapper<WaveDetl>().eq(WaveDetl::getStockIndex, matUniqueKey).eq(WaveDetl::getWaveId, wave.getId()));
|
| | | if(waveDetl == null){
|
| | | throw new CoolException("波次数据不存在");
|
| | | }
|
| | |
| | | taskDetl.setTaskNo(task.getTaskNo());
|
| | | taskDetl.setAnfme(merge.getAnfme());
|
| | | taskDetl.setStock(locDetl.getAnfme());
|
| | | taskDetl.setWaveId(waveId);
|
| | | taskDetl.setWaveId(wave.getId());
|
| | | taskDetl.setWaveNo(wave.getWaveNo());
|
| | | taskDetl.setOrderId(null);
|
| | | taskDetl.setOrderNo(null);
|
| | | if (!taskDetlService.save(taskDetl)) {
|
| | |
| | | //TODO 确认后,需将注释打开
|
| | | String matUniqueKey = Utils.getMatUniqueKey(taskDetl.getMatnr(), taskDetl.getBatch(), taskDetl.getUniqueField());
|
| | | // WaveDetl waveDetl = waveDetlService.getOne(new LambdaQueryWrapper<WaveDetl>().eq(WaveDetl::getStockIndex, matUniqueKey).eq(WaveDetl::getWaveId, waveId));
|
| | | WaveDetl waveDetl = waveDetlService.getOne(new LambdaQueryWrapper<WaveDetl>().eq(WaveDetl::getWaveId, waveId), false);
|
| | | WaveDetl waveDetl = waveDetlService.getOne(new LambdaQueryWrapper<WaveDetl>().eq(WaveDetl::getWaveId, wave.getId()), false);
|
| | | if (waveDetl == null) {
|
| | | throw new CoolException("波次数据不存在");
|
| | | }
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | // //库存更新逻辑
|
| | | List<Long> orderIds = dto.getList().stream().findFirst().get().getOrderIds();
|
| | | List<OrderDetl> orderDetls = orderDetlService.list(new LambdaQueryWrapper<OrderDetl>().in(OrderDetl::getOrderId, orderIds));
|
| | | orderDetls.forEach(orderDetl -> {
|
| | | orderUtils.updateWorkQty(orderDetl.getId(), orderDetl.getAnfme());
|
| | | });
|
| | | //出库库存更新逻辑
|
| | | // List<Long> orderIds = dto.getList().stream().findFirst().get().getOrderIds();
|
| | | // List<OrderDetl> orderDetls = orderDetlService.list(new LambdaQueryWrapper<OrderDetl>().in(OrderDetl::getOrderId, orderIds));
|
| | | // orderDetls.forEach(orderDetl -> {
|
| | | // orderUtils.updateWorkQty(orderDetl.getId(), orderDetl.getAnfme());
|
| | | // });
|
| | |
|
| | | //库位F => R
|
| | | loc.setLocStsId(LocStsType.R.val());
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | Wave wave = waveService.getById(waveId);
|
| | | if (wave == null) {
|
| | | throw new CoolException("波次不存在");
|
| | | }
|
| | | // Wave wave = waveService.getById(dto.getWaveId());
|
| | | // if (wave == null) {
|
| | | // throw new CoolException("波次不存在");
|
| | | // }
|
| | |
|
| | | wave.setWaveStatus(WaveStatusType.GENERATE.id);
|
| | | wave.setUpdateTime(new Date());
|
| | |
| | | throw new CoolException("库存更新失败");
|
| | | } else {
|
| | | //CacheSite 释放已被占用的通道 //fixme 播种功能完成后,需要将这里注释掉
|
| | | List<TaskDetl> detls = taskDetlService.list(new LambdaQueryWrapper<TaskDetl>().eq(TaskDetl::getTaskId, task.getId()));
|
| | | if (!Collections.isEmpty(detls)) {
|
| | | List<Long> waveIds = detls.stream().map(TaskDetl::getWaveId).collect(Collectors.toList());
|
| | | List<Order> orders = orderService.list(new LambdaQueryWrapper<Order>().in(Order::getWaveId, waveIds));
|
| | | List<Long> orderIds = orders.stream().map(Order::getId).collect(Collectors.toList());
|
| | | cacheSiteService.update(new LambdaUpdateWrapper<CacheSite>()
|
| | | .in(CacheSite::getOrderId, orderIds)
|
| | | .set(CacheSite::getSiteStatus, 0)
|
| | | .set(CacheSite::getOrderId, null)
|
| | | .set(CacheSite::getOrderNo, null));
|
| | | }
|
| | | // List<TaskDetl> detls = taskDetlService.list(new LambdaQueryWrapper<TaskDetl>().eq(TaskDetl::getTaskId, task.getId()));
|
| | | // if (!Collections.isEmpty(detls)) {
|
| | | // List<Long> waveIds = detls.stream().map(TaskDetl::getWaveId).collect(Collectors.toList());
|
| | | // List<Order> orders = orderService.list(new LambdaQueryWrapper<Order>().in(Order::getWaveId, waveIds));
|
| | | // List<Long> orderIds = orders.stream().map(Order::getId).collect(Collectors.toList());
|
| | | // cacheSiteService.update(new LambdaUpdateWrapper<CacheSite>()
|
| | | // .in(CacheSite::getOrderId, orderIds)
|
| | | // .set(CacheSite::getSiteStatus, 0)
|
| | | // .set(CacheSite::getOrderId, null)
|
| | | // .set(CacheSite::getOrderNo, null));
|
| | | // }
|
| | | }
|
| | | }
|
| | | } catch (Exception e) {
|
| | |
| | | //入库
|
| | | private void executeTask1(Task task) {
|
| | | Long hostId = task.getHostId();
|
| | | //fixme 暂时关闭HOSTID
|
| | | Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getLocNo, task.getTargetLoc()).eq(Loc::getHostId, hostId));
|
| | | // Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getLocNo, task.getTargetLoc()));
|
| | | if (loc == null) {
|
| | | throw new CoolException("库位不存在");
|
| | | }
|
| | |
| | | Double anfme = taskDetl.getAnfme();
|
| | | for (OrderDetl orderDetl : orderDetls) {
|
| | | //fixme 作业中数量调整放至,生成出库任务成功后
|
| | | // double issued = Optional.of(orderDetl.getAnfme() - orderDetl.getQty() - orderDetl.getWorkQty()).orElse(0.0D);
|
| | | // if (issued <= 0.0D) { continue; }
|
| | | // if (anfme <= 0.0D) { break; }
|
| | | //
|
| | | // double workQty = issued;
|
| | | // if(anfme - issued < 0){
|
| | | // workQty = anfme;
|
| | | // }
|
| | | // anfme -= workQty;
|
| | | //
|
| | | // orderUtils.updateWorkQty(orderDetl.getId(), workQty, true);
|
| | | double issued = Optional.of(orderDetl.getAnfme() - orderDetl.getQty() - orderDetl.getWorkQty()).orElse(0.0D);
|
| | | if (issued <= 0.0D) { continue; }
|
| | | if (anfme <= 0.0D) { break; }
|
| | |
|
| | | double workQty = issued;
|
| | | if(anfme - issued < 0){
|
| | | workQty = anfme;
|
| | | }
|
| | | anfme -= workQty;
|
| | |
|
| | | orderUtils.updateWorkQty(orderDetl.getId(), workQty, true);
|
| | |
|
| | | CacheSite cacheSite = cacheSiteService.getOne(new LambdaQueryWrapper<CacheSite>().eq(CacheSite::getOrderId, orderDetl.getOrderId()).eq(CacheSite::getHostId, hostId));
|
| | | if (cacheSite == null) {
|
| | |
| | | waveSeed.setOrderNo(orderDetl.getOrderNo());
|
| | | waveSeed.setOrderId(orderDetl.getOrderId());
|
| | | waveSeed.setOrderDetlId(orderDetl.getId());
|
| | | waveSeed.setWaveId(taskDetl.getWaveId()).setWaveNo(taskDetl.getWaveNo());
|
| | | waveSeed.setTaskDetlId(taskDetl.getId());
|
| | | waveSeed.setAnfme(taskDetl.getAnfme());
|
| | | waveSeed.setWorkQty(0D);
|