| | |
| | | package com.zy.asrs.entity; |
| | | |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * Created by vincent on 2020/6/12 |
| | | */ |
| | | @Data |
| | | public class MatCodeCountDto { |
| | | |
| | | private String matNo; |
| | | |
| | | private String batch; |
| | | |
| | | private Double count; |
| | | |
| | |
| | | this.count = count; |
| | | } |
| | | |
| | | public String getMatNo() { |
| | | return matNo; |
| | | } |
| | | |
| | | public void setMatNo(String matNo) { |
| | | public MatCodeCountDto(String matNo, String batch, Double count) { |
| | | this.matNo = matNo; |
| | | } |
| | | |
| | | public Double getCount() { |
| | | return count; |
| | | } |
| | | |
| | | public void setCount(Double count) { |
| | | this.batch = batch; |
| | | this.count = count; |
| | | } |
| | | } |
| | |
| | | private String supplier; |
| | | |
| | | /** |
| | | * 仓库号 |
| | | * 单据编号 |
| | | */ |
| | | @ApiModelProperty(value= "单据编号") |
| | | private String warehouse; |
| | |
| | | |
| | | @ApiModelProperty(value= "库位号") |
| | | @TableField("loc_no") |
| | | private Date locNo; |
| | | private String locNo; |
| | | |
| | | @ApiModelProperty(value= "状态") |
| | | private String status; |
| | |
| | | |
| | | import com.baomidou.mybatisplus.service.IService; |
| | | import com.zy.asrs.entity.WrkDetl; |
| | | import com.zy.asrs.entity.MatCodeCountDto; |
| | | import com.zy.common.model.DetlDto; |
| | | |
| | | import java.util.List; |
| | | |
| | | public interface WrkDetlService extends IService<WrkDetl> { |
| | | |
| | | void createWorkDetail(Integer workNo, List<MatCodeCountDto> matCodeCountDtos, String barcode, Long userId); |
| | | void createWorkDetail(Integer workNo, List<DetlDto> detlDtos, String barcode, Long userId); |
| | | |
| | | } |
| | |
| | | import com.zy.asrs.entity.param.FullStoreParam; |
| | | import com.zy.asrs.entity.param.LocDetlAdjustParam; |
| | | import com.zy.asrs.entity.param.StockOutParam; |
| | | import com.zy.asrs.entity.result.PakoutVo; |
| | | import com.zy.asrs.service.*; |
| | | import com.zy.asrs.utils.VersionUtils; |
| | | import com.zy.common.model.*; |
| | |
| | | throw new CoolException("保存工作档失败"); |
| | | } |
| | | // 生成工作档明细 |
| | | List<MatCodeCountDto> matDtos = new ArrayList<>(); |
| | | List<DetlDto> detlDtos = new ArrayList<>(); |
| | | param.getList().forEach(elem -> { |
| | | matDtos.add(new MatCodeCountDto(elem.getMatNo(), elem.getCount())); |
| | | detlDtos.add(new DetlDto(elem.getMatNo(), elem.getCount())); |
| | | }); |
| | | wrkDetlService.createWorkDetail(workNo, matDtos, param.getBarcode(), userId); |
| | | wrkDetlService.createWorkDetail(workNo, detlDtos, param.getBarcode(), userId); |
| | | // 更新源站点信息 |
| | | sourceStaNo.setWrkNo(workNo); |
| | | sourceStaNo.setModiUser(userId); |
| | |
| | | import com.core.exception.CoolException; |
| | | import com.zy.asrs.entity.MatCode; |
| | | import com.zy.asrs.entity.WrkDetl; |
| | | import com.zy.asrs.entity.MatCodeCountDto; |
| | | import com.zy.asrs.mapper.WrkDetlMapper; |
| | | import com.zy.asrs.service.MatCodeService; |
| | | import com.zy.asrs.service.WrkDetlService; |
| | | import com.zy.asrs.utils.VersionUtils; |
| | | import com.zy.common.model.DetlDto; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | |
| | | |
| | | @Override |
| | | @Transactional |
| | | public void createWorkDetail(Integer workNo, List<MatCodeCountDto> matCodeCountDtos, String barcode, Long userId) { |
| | | if (matCodeCountDtos.isEmpty()){ |
| | | public void createWorkDetail(Integer workNo, List<DetlDto> detlDtos, String barcode, Long userId) { |
| | | if (detlDtos.isEmpty()){ |
| | | return; |
| | | } |
| | | for (MatCodeCountDto dto : matCodeCountDtos) { |
| | | MatCode matCode = matCodeService.selectById(dto.getMatNo()); |
| | | for (DetlDto dto : detlDtos) { |
| | | MatCode matCode = matCodeService.selectById(dto.getMatnr()); |
| | | if (Cools.isEmpty(matCode)){ |
| | | throw new CoolException("物料条码数据为空"); |
| | | } |
| | |
| | | WrkDetl wrkDetl = new WrkDetl(); |
| | | wrkDetl.setWrkNo(workNo); |
| | | wrkDetl.setIoTime(new Date()); |
| | | wrkDetl.setAnfme(dto.getCount()); // 数量 |
| | | wrkDetl.setAnfme(dto.getAnfme()); // 数量 |
| | | VersionUtils.setWrkDetl(wrkDetl, matCode); // 版本控制 |
| | | wrkDetl.setZpallet(barcode); // 托盘条码 |
| | | wrkDetl.setAppeUser(userId); |
New file |
| | |
| | | package com.zy.asrs.task; |
| | | |
| | | import com.zy.asrs.service.OrderService; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.scheduling.annotation.Scheduled; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | /** |
| | | * Created by vincent on 2020/7/7 |
| | | */ |
| | | @Slf4j |
| | | @Component |
| | | public class OrderSyncScheduler { |
| | | |
| | | @Autowired |
| | | private OrderService orderService; |
| | | |
| | | @Scheduled(cron = "0/3 * * * * ? ") |
| | | private void queryAndSave(){ |
| | | // for (WrkMast wrkMast : wrkMasts) { |
| | | // ReturnT<String> result = workLogHandler.start(wrkMast); |
| | | // if (!result.isSuccess()) { |
| | | // log.error("工作档[workNo={}]历史档处理失败", wrkMast.getWrkNo()); |
| | | // } |
| | | // } |
| | | } |
| | | |
| | | @Scheduled(cron = "0/3 * * * * ? ") |
| | | private void completeAndReport(){ |
| | | // for (WrkMast wrkMast : wrkMasts) { |
| | | // ReturnT<String> result = workLogHandler.start(wrkMast); |
| | | // if (!result.isSuccess()) { |
| | | // log.error("工作档[workNo={}]历史档处理失败", wrkMast.getWrkNo()); |
| | | // } |
| | | // } |
| | | } |
| | | |
| | | } |
| | |
| | | import com.zy.asrs.service.WrkMastService; |
| | | import com.zy.asrs.task.core.ReturnT; |
| | | import com.zy.asrs.task.handler.WorkLogHandler; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.scheduling.annotation.Scheduled; |
| | | import org.springframework.stereotype.Component; |
| | |
| | | /** |
| | | * Created by vincent on 2020/7/7 |
| | | */ |
| | | @Slf4j |
| | | @Component |
| | | public class WorkLogScheduler { |
| | | |
| | | private static final Logger log = LoggerFactory.getLogger(WorkLogScheduler.class); |
| | | |
| | | @Autowired |
| | | private WorkLogHandler workLogHandler; |
| | |
| | | package com.zy.asrs.task.handler; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.core.common.Cools; |
| | | import com.core.common.SnowflakeIdWorker; |
| | | import com.zy.asrs.entity.RequestLog; |
| | | import com.zy.asrs.entity.WaitPakin; |
| | | import com.zy.asrs.entity.WrkDetl; |
| | | import com.zy.asrs.entity.WrkMast; |
| | |
| | | import org.springframework.transaction.interceptor.TransactionAspectSupport; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Optional; |
| | | |
| | |
| | | @Transactional |
| | | public ReturnT<String> start(WrkMast wrkMast) { |
| | | try { |
| | | |
| | | // 入库 |
| | | if (wrkMast.getWrkSts() == 5) { |
| | | |
| | | // 全板入库 |
| | | if (wrkMast.getIoType() == 1) { |
| | | String docNum = "PU-" + String.valueOf(snowflakeIdWorker.nextId()).substring(0, 15); |
| | | // 上报给erp |
| | | // 单据状态变更 作业中 ===>> 已完成 |
| | | List<MatnrDto> matnrDtos = new ArrayList<>(); |
| | | List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo())); |
| | | for (WrkDetl wrkDetl : wrkDetls) { |
| | |
| | | // exceptionHandle("删除工作明细档[workNo={0}]失败", wrkMast.getWrkNo()); |
| | | } |
| | | } catch (Exception e) { |
| | | log.error("", e); |
| | | e.printStackTrace(); |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg(e.getMessage()); |
New file |
| | |
| | | package com.zy.common.model; |
| | | |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * Created by vincent on 2022/3/25 |
| | | */ |
| | | @Data |
| | | public class DetlDto { |
| | | |
| | | private String orderNo; |
| | | |
| | | private String matnr; |
| | | |
| | | private String batch; |
| | | |
| | | private Double anfme; |
| | | |
| | | public DetlDto() { |
| | | } |
| | | |
| | | public DetlDto(String matnr, Double anfme) { |
| | | this.matnr = matnr; |
| | | this.anfme = anfme; |
| | | } |
| | | |
| | | public DetlDto(String orderNo, String matnr, String batch, Double anfme) { |
| | | this.orderNo = orderNo; |
| | | this.matnr = matnr; |
| | | this.batch = batch; |
| | | this.anfme = anfme; |
| | | } |
| | | } |
| | |
| | | import com.core.exception.CoolException; |
| | | import com.zy.asrs.entity.*; |
| | | import com.zy.asrs.service.*; |
| | | import com.zy.common.model.DetlDto; |
| | | import com.zy.common.model.LocTypeDto; |
| | | import com.zy.common.model.StartupDto; |
| | | import com.zy.common.service.CommonService; |
| | |
| | | throw new CoolException("保存工作档失败"); |
| | | } |
| | | // 修改通知档 |
| | | List<MatCodeCountDto> matDtos = new ArrayList<>(); |
| | | waitPakins.forEach(elem -> { |
| | | List<DetlDto> detlDtos = new ArrayList<>(); |
| | | waitPakins.forEach(waitPakin -> { |
| | | // todo:luxiaotao 修改通知档 |
| | | // matDtos.add(new MatCodeCountDto(elem.getBillNo(), elem.getSeqNo(), elem.getMatNo(), elem.getQty(),elem.getItemBatch(),elem.getOrderNo(),elem.getSpecs())); |
| | | // |
| | | // //更新组托数据状态为入库中 |
| | | // detlDtos.add(new MatCodeCountDto(waitPakin.getWarehouse(), waitPakin.getMatnr(), waitPakin.getBa(), waitPakin.getAnfme())); |
| | | |
| | | //更新组托数据状态为入库中 |
| | | // Wrapper<WaitPakin> wrapper = new EntityWrapper<WaitPakin>().eq("barcode", elem.getBarcode()) |
| | | // .eq("bill_no", elem.getBillNo()).eq("seq_no", elem.getSeqNo()).eq("mat_no", elem.getMatNo()); |
| | | // WaitPakin waitPakin = waitPakinService.selectOne(wrapper); |
| | | // waitPakin.setLocNo(dto.getLocNo()); |
| | | // waitPakin.setIoStatus(1);//入库中 |
| | | // waitPakinService.update(waitPakin, wrapper); |
| | | // WaitPakin one = waitPakinService.selectOne(wrapper); |
| | | // one.setLocNo(dto.getLocNo()); |
| | | // one.setIoStatus("Y");//入库中 |
| | | // waitPakinService.update(one, wrapper); |
| | | }); |
| | | // 生成工作档明细 |
| | | wrkDetlService.createWorkDetail(workNo, matDtos, barcode, null); |
| | | wrkDetlService.createWorkDetail(workNo, detlDtos, barcode, null); |
| | | // 更新源站点信息 |
| | | sourceStaNo.setWrkNo(workNo); |
| | | sourceStaNo.setModiTime(new Date()); |