package com.zy.asrs.common.wms.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.zy.asrs.common.domain.dto.DetlDto; import com.zy.asrs.common.domain.dto.LocTypeDto; import com.zy.asrs.common.domain.dto.StartupDto; import com.zy.asrs.common.domain.param.FullStoreParam; import com.zy.asrs.common.wms.entity.BasDevp; import com.zy.asrs.common.wms.entity.LocMast; import com.zy.asrs.common.wms.entity.WrkMast; import com.zy.asrs.common.wms.service.*; import com.zy.asrs.framework.common.BaseRes; import com.zy.asrs.framework.common.Cools; import com.zy.asrs.framework.exception.CoolException; 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.ArrayList; import java.util.Date; import java.util.List; /** * Created by vincent on 2020/6/11 */ @Slf4j @Service public class WorkServiceImpl implements WorkService { // 库位排号分配默认类别 private static final int DEFAULT_ROW_NO_TYPE = 1; @Autowired private BasDevpService basDevpService; @Autowired private CommonService commonService; @Autowired private WrkMastService wrkMastService; @Autowired private WrkDetlService wrkDetlService; @Autowired private LocMastService locMastService; @Override @Transactional public String startupFullPutStore(FullStoreParam param, Long userId) { // 参数非空判断 if (Cools.isEmpty(param.getDevpNo(), param.getList())) { throw new CoolException(BaseRes.PARAM); } Date now = new Date(); // // 源站点状态检测 // BasDevp sourceStaNo = basDevpService.checkSiteStatus(param.getDevpNo(), true); // // 检索库位 // LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo); LocTypeDto locTypeDto = new LocTypeDto(); StartupDto dto = commonService.getLocNo(DEFAULT_ROW_NO_TYPE, 1, param.getDevpNo(), null, locTypeDto, 0); // 生成工作号 int workNo = dto.getWorkNo(); // 生成工作档 WrkMast wrkMast = new WrkMast(); wrkMast.setWrkNo(workNo); wrkMast.setIoTime(new Date()); // wrkMast.setWrkSts(1L); // 工作状态:生成入库ID // wrkMast.setIoType(1); // 入出库状态:1.入库 // wrkMast.setIoPri(13D); // 优先级:13 // wrkMast.setCrnNo(dto.getCrnNo()); // wrkMast.setSourceStaNo(dto.getSourceStaNo()); // wrkMast.setStaNo(dto.getStaNo()); // wrkMast.setLocNo(dto.getLocNo()); // wrkMast.setBarcode(param.getBarcode()); // 托盘码 // wrkMast.setFullPlt("Y"); // 满板:Y // wrkMast.setPicking("N"); // 拣料 // wrkMast.setExitMk("N"); // 退出 // wrkMast.setEmptyMk("N"); // 空板 // wrkMast.setCtnType(sourceStaNo.getCtnType()); // 容器类型 // wrkMast.setAppeUser(String.valueOf(userId)); // wrkMast.setAppeTime(now); // wrkMast.setModiUser(String.valueOf(userId)); // wrkMast.setModiTime(now); if (!wrkMastService.save(wrkMast)) { throw new CoolException("保存工作档失败"); } // 生成工作档明细 List detlDtos = new ArrayList<>(); param.getList().forEach(elem -> { DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme()); if (DetlDto.has(detlDtos, detlDto)) { DetlDto detlDto1 = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch()); assert detlDto1 != null; detlDto1.setAnfme(detlDto1.getAnfme() + detlDto.getAnfme()); } else { detlDtos.add(detlDto); } }); // wrkDetlService.createWorkDetail(workNo, detlDtos, param.getBarcode(), userId); // // 更新源站点信息 // sourceStaNo.setWrkNo(workNo); // sourceStaNo.setModiUser(userId); // sourceStaNo.setModiTime(now); // if (!basDevpService.updateById(sourceStaNo)){ // throw new CoolException("更新源站失败"); // } // // 更新目标库位状态 // LocMast locMast = locMastService.getOne(new LambdaQueryWrapper().eq(LocMast::getLocNo, dto.getLocNo())); // if (locMast.getLocSts().equals("O")){ // locMast.setLocSts("S"); // S.入库预约 // locMast.setModiUser(userId); // locMast.setModiTime(now); // if (!locMastService.updateById(locMast)){ // throw new CoolException("改变库位状态失败"); // } // } else { // throw new CoolException(dto.getLocNo()+"目标库位已被占用"); // } return dto.getLocNo(); } }