并板入库,并板途中拣料,拣料途中并板,以及相关查询接口
| | |
| | | import com.core.common.R; |
| | | import com.core.exception.CoolException; |
| | | import com.zy.asrs.entity.*; |
| | | import com.zy.asrs.entity.param.CombParam; |
| | | import com.zy.asrs.entity.param.GDYKConfirmGoodsParam; |
| | | import com.zy.asrs.entity.param.MobileAdjustParam; |
| | | import com.zy.asrs.entity.param.OffSaleParam; |
| | | import com.zy.asrs.entity.param.*; |
| | | import com.zy.asrs.entity.result.MobileAdjustResult; |
| | | import com.zy.asrs.mapper.ManLocDetlMapper; |
| | | import com.zy.asrs.service.*; |
| | |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.*; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * 移动端接口控制器 |
| | |
| | | @Autowired |
| | | private WrkDetlLogService wrkDetlLogService; |
| | | |
| | | @Resource |
| | | private StaDescService staDescService; |
| | | |
| | | @RequestMapping("/pda/WarehouseOut/v1") |
| | | @ManagerAuth(memo = "并板途中拣料-参考念初") |
| | | public R WarehouseOutV1(@RequestBody CombParam combParam) { |
| | | return mobileService.WarehouseOutV1(combParam, getHostId(), getUserId()); |
| | | } |
| | | |
| | | @RequestMapping("/pda/WarehouseOutPickMerge/v1") |
| | | @ManagerAuth(memo = "拣料途中并板") |
| | | public R WarehouseOutPickMergeV1(@RequestBody WarehouseOutPickMergeParam param) { |
| | | if (Cools.isEmpty(param,param.getLocNo(),param.getBarcode(),param.getCombMats())) { |
| | | return R.parse("参数不能为空!"); |
| | | } |
| | | return mobileService.WarehouseOutPickMergeV1(param, getHostId(), getUserId()); |
| | | } |
| | | |
| | | @RequestMapping("/pick/in") |
| | | @ManagerAuth(memo = "并板入库") |
| | | public R pickConfirm(@RequestBody PickConfirmParam param) { |
| | | |
| | | if(Cools.isEmpty(param,param.getList(),param.getLocNo(),param.getStaNo())) { |
| | | return R.parse("参数不完整"); |
| | | } |
| | | return mobileService.pickConfirm(param, getUserId()); |
| | | } |
| | | |
| | | @RequestMapping("/barcode/list/all") |
| | | @ManagerAuth(memo = "并板入库途中拣料出库获取任务信息") |
| | | public R orderOutListOrder(@RequestParam(required = false) String barcode) { |
| | | return mobileService.orderOutListOrder(barcode, getUserId()); |
| | | } |
| | | |
| | | @RequestMapping("/barcode/list/pick") |
| | | @ManagerAuth(memo = "拣料入库途中并板获取任务信息") |
| | | public R orderOutListOrderPick(@RequestParam(required = false) String barcode) { |
| | | return mobileService.orderOutListOrderPick(barcode, getUserId()); |
| | | } |
| | | |
| | | @RequestMapping("/loc/f/list") |
| | | @ManagerAuth(memo = "获取在库库位") |
| | | public R locNoF(@RequestParam(required = false) String locNo) { |
| | | Wrapper<LocMast> wrapper = new EntityWrapper<LocMast>() |
| | | .eq("loc_sts", "F"); |
| | | if (!Cools.isEmpty(locNo)) { |
| | | wrapper.like("loc_no", locNo); |
| | | } |
| | | List<LocMast> list = locMastService.selectList(wrapper); |
| | | return R.ok().add(list); |
| | | } |
| | | |
| | | @RequestMapping("/pick/sta/list") |
| | | @ManagerAuth(memo = "获取并板站") |
| | | public R pickSta() { |
| | | List<StaDesc> list = staDescService.selectList(new EntityWrapper<StaDesc>() |
| | | .eq("type_no", 104)); |
| | | return R.ok().add(list); |
| | | } |
| | | |
| | | @RequestMapping("/pick/mat/list") |
| | | @ManagerAuth(memo = "获取并板物料") |
| | | public R pickMats(@RequestParam(required = false) String matnr, @RequestParam(required = false) String orderNo) { |
| | | return mobileService.pickMats(matnr, orderNo); |
| | | } |
| | | |
| | | // 商品上架 |
| | | @RequestMapping("/mat/onSale/auth") |
| | |
| | | DocType docType = docTypeService.selectById(param.getDocType()); |
| | | if(!Cools.isEmpty(docType)){ |
| | | prefix = docType.getPakin() == 1 ? "RK" : "CK"; |
| | | status = (prefix == "RK" ? 1 : (prefix == "CK" ? 2 : 0)); |
| | | status = (prefix.equals("RK") ? 1 : (prefix.equals("CK") ? 2 : 0)); |
| | | } |
| | | param.setOrderNo(prefix + snowflakeIdWorker.nextId()); |
| | | } else { |
| | |
| | | package com.zy.asrs.entity.param; |
| | | |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.List; |
| | |
| | | private String barcode; |
| | | |
| | | // 库位编号 |
| | | private String locno; |
| | | private String locNo; |
| | | |
| | | private List<CombMat> combMats; |
| | | |
| | | @Data |
| | | public static class CombMat { |
| | | |
| | | private String orderNo; |
| | | |
| | | // 物料编号 |
| | | private String matnr = ""; |
| | | |
New file |
| | |
| | | package com.zy.asrs.entity.param; |
| | | |
| | | import lombok.Data; |
| | | |
| | | import java.util.List; |
| | | |
| | | @Data |
| | | public class PickConfirmParam { |
| | | |
| | | private String locNo; |
| | | |
| | | private Integer staNo; |
| | | |
| | | private List<PickMatParam> list; |
| | | |
| | | } |
New file |
| | |
| | | package com.zy.asrs.entity.param; |
| | | |
| | | import com.baomidou.mybatisplus.annotations.TableField; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | public class PickMatParam { |
| | | |
| | | private String matnr; |
| | | |
| | | private String batch; |
| | | |
| | | private String brand; |
| | | |
| | | private String orderNo; |
| | | |
| | | private Long orderId; |
| | | |
| | | private Double count; |
| | | |
| | | private Double useCount; |
| | | |
| | | /** |
| | | * 备用1 |
| | | */ |
| | | @ApiModelProperty(value= "备用1") |
| | | private String standby1 = ""; |
| | | |
| | | /** |
| | | * 备用2 |
| | | */ |
| | | @ApiModelProperty(value= "备用2") |
| | | private String standby2 = ""; |
| | | |
| | | /** |
| | | * 备用3 |
| | | */ |
| | | @ApiModelProperty(value= "备用3") |
| | | private String standby3 = ""; |
| | | |
| | | /** |
| | | * 备用1 |
| | | */ |
| | | @ApiModelProperty(value= "备用1") |
| | | @TableField("box_type1") |
| | | private String boxType1 = "1"; |
| | | |
| | | /** |
| | | * 备用2 |
| | | */ |
| | | @ApiModelProperty(value= "备用2") |
| | | @TableField("box_type2") |
| | | private String boxType2 = "1"; |
| | | |
| | | /** |
| | | * 备用3 |
| | | */ |
| | | @ApiModelProperty(value= "备用3") |
| | | @TableField("box_type3") |
| | | private String boxType3 = "1"; |
| | | |
| | | } |
| | |
| | | package com.zy.asrs.entity.param; |
| | | |
| | | import com.baomidou.mybatisplus.annotations.TableField; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.List; |
| | |
| | | // 数量 |
| | | private Double count; |
| | | |
| | | private String brand; |
| | | |
| | | /** |
| | | * 备用1 |
| | | */ |
| | | @ApiModelProperty(value= "备用1") |
| | | private String standby1 = ""; |
| | | |
| | | /** |
| | | * 备用2 |
| | | */ |
| | | @ApiModelProperty(value= "备用2") |
| | | private String standby2 = ""; |
| | | |
| | | /** |
| | | * 备用3 |
| | | */ |
| | | @ApiModelProperty(value= "备用3") |
| | | private String standby3 = ""; |
| | | |
| | | /** |
| | | * 备用1 |
| | | */ |
| | | @ApiModelProperty(value= "备用1") |
| | | @TableField("box_type1") |
| | | private String boxType1 = "1"; |
| | | |
| | | /** |
| | | * 备用2 |
| | | */ |
| | | @ApiModelProperty(value= "备用2") |
| | | @TableField("box_type2") |
| | | private String boxType2 = "1"; |
| | | |
| | | /** |
| | | * 备用3 |
| | | */ |
| | | @ApiModelProperty(value= "备用3") |
| | | @TableField("box_type3") |
| | | private String boxType3 = "1"; |
| | | |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.zy.asrs.entity.param; |
| | | |
| | | import com.zy.asrs.entity.OrderDetl; |
| | | import lombok.Data; |
| | | |
| | | import java.util.List; |
| | | |
| | | @Data |
| | | public class WarehouseOutPickMergeParam { |
| | | |
| | | // 单据编号 |
| | | private String orderNo; |
| | | |
| | | // 库位编号 |
| | | private String locNo; |
| | | |
| | | // 条码 |
| | | private String barcode; |
| | | |
| | | //组托物料 |
| | | private List<OrderDetl> combMats; |
| | | |
| | | } |
| | |
| | | |
| | | Integer listByPageCount(Map<String, Object> map); |
| | | |
| | | LocDetl selectItem(@Param("locNo")String locNo, @Param("matnr")String matnr, @Param("batch")String batch); |
| | | LocDetl selectItem(@Param("locNo")String locNo, @Param("matnr")String matnr, @Param("batch")String batch, |
| | | @Param("brand")String brand,@Param("standby1")String standby1,@Param("standby2")String standby2, |
| | | @Param("standby3")String standby3,@Param("boxType1")String boxType1,@Param("boxType2")String boxType2,@Param("boxType3")String boxType3 ); |
| | | |
| | | int deleteItem(@Param("locNo")String locNo, @Param("matnr")String matnr, @Param("batch")String batch); |
| | | int deleteItem(@Param("locNo")String locNo, @Param("matnr")String matnr, @Param("batch")String batch, |
| | | @Param("brand")String brand,@Param("standby1")String standby1,@Param("standby2")String standby2, |
| | | @Param("standby3")String standby3,@Param("boxType1")String boxType1,@Param("boxType2")String boxType2,@Param("boxType3")String boxType3 ); |
| | | |
| | | int updateAnfme(@Param("anfme")Double anfme, @Param("locNo")String locNo, @Param("matnr")String matnr, @Param("batch")String batch); |
| | | int updateAnfme(@Param("anfme")Double anfme, @Param("locNo")String locNo, @Param("matnr")String matnr, @Param("batch")String batch, |
| | | @Param("brand")String brand,@Param("standby1")String standby1,@Param("standby2")String standby2, |
| | | @Param("standby3")String standby3,@Param("boxType1")String boxType1,@Param("boxType2")String boxType2,@Param("boxType3")String boxType3 ); |
| | | |
| | | List<LocDetl> getStockOutPage(Map<String, Object> map); |
| | | |
| | |
| | | , @Param("boxType1")String boxType1, |
| | | @Param("boxType2")String boxType2, |
| | | @Param("boxType3")String boxType3, @Param("workQty")Double workQty); |
| | | int increaseWorkQtyByOrderNo(@Param("orderNo") String orderNo, @Param("matnr") String matnr, @Param("batch") String batch, @Param("qty") Double qty); |
| | | |
| | | int increaseWorkQty(@Param("orderId")Long orderId, @Param("matnr")String matnr, @Param("batch")String batch, @Param("brand")String brand, @Param("standby1")String standby1, @Param("standby2")String standby2, @Param("standby3")String standby3, @Param("workQty")Double workQty); |
| | | |
| | | } |
| | |
| | | int selectAllCount(LocDetlDTO locDetlDTO); |
| | | |
| | | |
| | | LocDetl selectItem(String locNo, String matnr, String batch); |
| | | LocDetl selectItem(String locNo, String matnr, String batch,String brand,String standby1,String standby2,String standby3,String boxType1,String boxType2,String boxType3); |
| | | |
| | | Page<LocDetl> getStockOut(Page<LocDetl> page); |
| | | |
| | |
| | | /** |
| | | * 修改库存明细数量,如果数量为0,则删除记录 |
| | | */ |
| | | boolean updateAnfme(Double anfme, String locNo, String matnr, String batch); |
| | | boolean updateAnfme(Double anfme, String locNo, String matnr |
| | | ,String batch,String brand,String standby1,String standby2,String standby3,String boxType1,String boxType2,String boxType3); |
| | | |
| | | boolean updateLocNo(String newLocNo, String oldLocNo); |
| | | |
| | |
| | | package com.zy.asrs.service; |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.core.common.R; |
| | | import com.zy.asrs.entity.BasDevp; |
| | | import com.zy.asrs.entity.LocDetl; |
| | | import com.zy.asrs.entity.OrderDetl; |
| | | import com.zy.asrs.entity.param.CombParam; |
| | | import com.zy.asrs.entity.param.MobileAdjustParam; |
| | | import com.zy.asrs.entity.param.OffSaleParam; |
| | | import com.zy.asrs.entity.param.*; |
| | | |
| | | import java.util.Date; |
| | | |
| | | public interface MobileService { |
| | | |
| | | /** |
| | | * 并板途中拣料 |
| | | */ |
| | | R WarehouseOutV1(CombParam combParam, Long hostId, Long userId); |
| | | |
| | | /** |
| | | * 拣料途中并板 |
| | | */ |
| | | R WarehouseOutPickMergeV1(WarehouseOutPickMergeParam param, Long hostId, Long userId); |
| | | |
| | | /** |
| | | * 并板入库 |
| | | */ |
| | | R pickConfirm(PickConfirmParam param, Long userId); |
| | | |
| | | /** |
| | | * 并板入库途中拣料出库获取任务信息 |
| | | */ |
| | | R orderOutListOrder(String barcode, Long userId); |
| | | |
| | | /** |
| | | * 拣料入库途中并板获取任务信息 |
| | | */ |
| | | R orderOutListOrderPick(String barcode, Long userId); |
| | | |
| | | /** |
| | | *获取并板物料 |
| | | */ |
| | | R pickMats(String matnr, String orderNo); |
| | | |
| | | /** |
| | | * 组托 |
| | | */ |
| | | void comb(CombParam param, Long userId); |
| | |
| | | } |
| | | |
| | | @Override |
| | | public boolean updateAnfme(Double anfme, String locNo, String matnr, String batch) { |
| | | public boolean updateAnfme(Double anfme, String locNo, String matnr, String batch, |
| | | String brand,String standby1,String standby2,String standby3,String boxType1,String boxType2,String boxType3) { |
| | | if (anfme <= 0) { |
| | | return this.baseMapper.deleteItem(locNo, matnr, batch) > 0; |
| | | return this.baseMapper.deleteItem(locNo, matnr, batch, brand, standby1, standby2, standby3, boxType1, boxType2, boxType3) > 0; |
| | | } else { |
| | | return baseMapper.updateAnfme(anfme, locNo, matnr, batch) > 0; |
| | | return baseMapper.updateAnfme(anfme, locNo, matnr, batch, brand, standby1, standby2, standby3, boxType1, boxType2, boxType3) > 0; |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | |
| | | @Override |
| | | public LocDetl selectItem(String locNo, String matnr, String batch) { |
| | | return this.baseMapper.selectItem(locNo, matnr, batch); |
| | | public LocDetl selectItem(String locNo, String matnr, String batch,String brand,String standby1,String standby2,String standby3,String boxType1,String boxType2,String boxType3) { |
| | | return this.baseMapper.selectItem(locNo, matnr, batch,brand,standby1,standby2,standby3,boxType1,boxType2,boxType3); |
| | | } |
| | | |
| | | @Override |
| | |
| | | import com.core.common.*; |
| | | import com.core.exception.CoolException; |
| | | import com.zy.asrs.entity.*; |
| | | import com.zy.asrs.entity.param.CombParam; |
| | | import com.zy.asrs.entity.param.MobileAdjustParam; |
| | | import com.zy.asrs.entity.param.OffSaleParam; |
| | | import com.zy.asrs.entity.param.OpenOrderPakinParam; |
| | | import com.zy.asrs.entity.param.*; |
| | | import com.zy.asrs.mapper.LocMastMapper; |
| | | import com.zy.asrs.mapper.ManLocDetlMapper; |
| | | import com.zy.asrs.service.*; |
| | | import com.zy.asrs.utils.MatUtils; |
| | | import com.zy.asrs.utils.OrderInAndOutUtil; |
| | | import com.zy.common.CodeRes; |
| | | import com.zy.common.constant.MesConstant; |
| | | import com.zy.common.entity.Parameter; |
| | | import com.zy.common.model.DetlDto; |
| | | import com.zy.common.model.MesCombParam; |
| | | import com.zy.common.model.enums.WorkNoType; |
| | | import com.zy.common.service.CommonService; |
| | | import com.zy.common.utils.HttpHandler; |
| | | import lombok.extern.slf4j.Slf4j; |
| | |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.Iterator; |
| | | import java.util.List; |
| | | import javax.annotation.Resource; |
| | | import java.util.*; |
| | | |
| | | /** |
| | | * 移动端服务核心类 |
| | |
| | | @Autowired |
| | | private ManLocDetlMapper manLocDetlMapper; |
| | | |
| | | @Autowired |
| | | private AdjDetlService adjDetlService; |
| | | |
| | | @Resource |
| | | private LocMastMapper locMastMapper; |
| | | |
| | | @Resource |
| | | private DocTypeService docTypeService; |
| | | |
| | | @Resource |
| | | private OrderDetlPakinService orderDetlPakinService; |
| | | |
| | | @Resource |
| | | private OrderPakinService orderPakinService; |
| | | |
| | | @Resource |
| | | private OrderPakoutService orderPakoutService; |
| | | |
| | | @Resource |
| | | private OrderDetlPakoutService orderDetlPakoutService; |
| | | |
| | | @Override |
| | | @Transactional |
| | | public R WarehouseOutPickMergeV1(WarehouseOutPickMergeParam param, Long hostId, Long userId) { |
| | | //判断库位状态 |
| | | LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", param.getLocNo())); |
| | | if (Cools.isEmpty(locMast)){ |
| | | return R.error("该库位不存在"); |
| | | } |
| | | if (!locMast.getLocSts().equals("P")){ |
| | | return R.error("该库位状态为:"+locMast.getLocSts()+",不满足拣料途中并板条件!!!"); |
| | | } |
| | | |
| | | Date now = new Date(); |
| | | // 创建入库工作主档 |
| | | WrkMast wrkMast = new WrkMast(); |
| | | wrkMast.setWrkNo(commonService.getWorkNo(0)); |
| | | wrkMast.setIoTime(now); |
| | | wrkMast.setWrkSts(4L); // 工作状态:入库完成 |
| | | wrkMast.setIoType(8); // 入出库状态:8.拣料途中并板 |
| | | wrkMast.setIoPri(13D); // 优先级 |
| | | wrkMast.setCrnNo(1); |
| | | wrkMast.setSourceStaNo(1); |
| | | wrkMast.setStaNo(1); |
| | | wrkMast.setLocNo(param.getLocNo()); |
| | | wrkMast.setBarcode(param.getBarcode()); // 托盘码 |
| | | wrkMast.setFullPlt("Y"); // 满板:Y |
| | | wrkMast.setPicking("N"); // 拣料 |
| | | wrkMast.setExitMk("N"); // 退出 |
| | | wrkMast.setEmptyMk("N"); // 空板 |
| | | wrkMast.setLinkMis("Y"); |
| | | wrkMast.setCtnType(0); // 容器类型 |
| | | // 操作人员数据 |
| | | wrkMast.setAppeTime(now); |
| | | wrkMast.setModiTime(now); |
| | | wrkMast.setAppeUser(userId); |
| | | wrkMast.setModiUser(userId); |
| | | wrkMastService.insert(wrkMast); |
| | | |
| | | for (OrderDetl orderDetl : param.getCombMats()) { |
| | | Mat mat = matService.selectOne(new EntityWrapper<Mat>().eq("matnr",orderDetl.getMatnr())); |
| | | if (mat == null) { |
| | | throw new CoolException("保存工作档失败,物料信息不存在:" + orderDetl.getMatnr()); |
| | | } |
| | | WrkDetl wrkDetl = new WrkDetl(); |
| | | wrkDetl.sync(mat); |
| | | wrkDetl.setOrderNo(orderDetl.getOrderNo()); |
| | | wrkDetl.setWrkNo(wrkMast.getWrkNo()); |
| | | wrkDetl.setIoTime(now); |
| | | wrkDetl.setAnfme(orderDetl.getAnfme()); // 数量 |
| | | wrkDetl.setAppeTime(now); |
| | | wrkDetl.setAppeUser(userId); |
| | | wrkDetl.setModiTime(now); |
| | | wrkDetl.setModiUser(userId); |
| | | wrkDetl.setZpallet(wrkMast.getBarcode()); |
| | | wrkDetl.setBatch(orderDetl.getBatch()); |
| | | if(Cools.isEmpty(orderDetl.getBatch())){ |
| | | wrkDetl.setBatch(""); |
| | | } |
| | | wrkDetl.setBoxType1(orderDetl.getBoxType1()); |
| | | wrkDetl.setBoxType2(orderDetl.getBoxType2()); |
| | | wrkDetl.setBoxType3(orderDetl.getBoxType3()); |
| | | wrkDetl.setStandby1(orderDetl.getStandby1()); |
| | | wrkDetl.setStandby2(orderDetl.getStandby2()); |
| | | wrkDetl.setStandby3(orderDetl.getStandby3()); |
| | | // 生成工作档明细 |
| | | wrkDetlService.insert(wrkDetl); |
| | | |
| | | if (!Cools.isEmpty(orderDetl.getOrderNo())) { |
| | | OrderPakin order = orderPakinService.selectByNo(orderDetl.getOrderNo()); |
| | | if (Cools.isEmpty(order)){ |
| | | continue; |
| | | } |
| | | OrderDetlPakin orderDetlPakin = orderDetlPakinService.selectItem(order.getId(), orderDetl.getMatnr(), orderDetl.getBatch(),orderDetl.getBrand(),orderDetl.getStandby1(),orderDetl.getStandby2(),orderDetl.getStandby3(),orderDetl.getBoxType1(),orderDetl.getBoxType2(),orderDetl.getBoxType3()); |
| | | if (Cools.isEmpty(orderDetlPakin)){ |
| | | continue; |
| | | } |
| | | if (orderDetlPakin.getAnfme() < (orderDetlPakin.getWorkQty() + orderDetl.getAnfme())) { |
| | | throw new CoolException("并板数量出错,订单剩余出库数量小于已出库数量与将并板数量之和!!!"); |
| | | } |
| | | // 修改订单明细作业数量 |
| | | if (!orderDetlPakinService.increaseWorkQty(orderDetlPakin.getOrderId(), orderDetlPakin.getMatnr(), orderDetlPakin.getBatch(), orderDetlPakin.getBrand(), |
| | | orderDetlPakin.getStandby1(), orderDetlPakin.getStandby2(), orderDetlPakin.getStandby3(), orderDetlPakin.getBoxType1(), orderDetlPakin.getBoxType2(), orderDetlPakin.getBoxType3(),orderDetl.getAnfme())) { |
| | | throw new CoolException("修改单据明细工作数量失败"); |
| | | } |
| | | |
| | | if (order.getSettle() == 1){ |
| | | orderPakinService.updateSettle(order.getId(), 2L, userId); |
| | | } |
| | | } |
| | | } |
| | | |
| | | return R.ok(); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional |
| | | public R pickConfirm(PickConfirmParam param,Long userId) { |
| | | |
| | | LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>() |
| | | .eq("loc_no", param.getLocNo())); |
| | | if (!locMast.getLocSts().equals("F")) { |
| | | return R.error("库位状态不是在库"); |
| | | } |
| | | |
| | | // 判断库位是否冻结 |
| | | String sourceLocFrozen = locMastMapper.findFirstFrozenLocNo(Collections.singletonList(locMast.getLocNo())); |
| | | if (sourceLocFrozen != null) { |
| | | throw new CoolException(sourceLocFrozen + "库位已被冻结!"); |
| | | } |
| | | |
| | | StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>() |
| | | .eq("type_no", 104) |
| | | .eq("stn_no", param.getStaNo())); |
| | | if (staDesc == null) { |
| | | return R.error("站点不存在"); |
| | | } |
| | | OrderDetlPakin orderDetlPakin = null; |
| | | //检验传参是否和订单明细匹配 |
| | | for (PickMatParam matParam : param.getList()) { |
| | | orderDetlPakin = orderDetlPakinService.selectItem |
| | | (matParam.getOrderNo(), matParam.getMatnr(),matParam.getBatch(),matParam.getBrand(), |
| | | matParam.getStandby1(),matParam.getStandby2(),matParam.getStandby3(), |
| | | matParam.getBoxType1(),matParam.getBoxType2(),matParam.getBoxType3()); |
| | | if (orderDetlPakin == null) { |
| | | return R.error("物料数据不存在"); |
| | | } |
| | | |
| | | //剩余可用数量 |
| | | double count = orderDetlPakin.getAnfme() - orderDetlPakin.getWorkQty(); |
| | | if (matParam.getCount() != count) { |
| | | return R.error("物料数据已过期"); |
| | | } |
| | | |
| | | if (matParam.getUseCount() > count) { |
| | | return R.error("可用数量不足"); |
| | | } |
| | | } |
| | | |
| | | Date now = new Date(); |
| | | // 生成工作号 |
| | | int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(104)); |
| | | // 生成工作档 |
| | | WrkMast wrkMast = new WrkMast(); |
| | | wrkMast.setWrkNo(workNo); |
| | | wrkMast.setIoTime(now); |
| | | wrkMast.setWrkSts(11L); // 工作状态:101.生成出库 |
| | | wrkMast.setIoType(104); // 入出库状态 |
| | | wrkMast.setIoPri(13D); // 优先级:13 |
| | | wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 源站 |
| | | wrkMast.setStaNo(staDesc.getStnNo()); // 目标站 |
| | | wrkMast.setSourceLocNo(param.getLocNo()); // 源库位 |
| | | wrkMast.setFullPlt("Y"); // 满板:Y |
| | | wrkMast.setPicking("Y"); // 拣料 |
| | | wrkMast.setExitMk("N"); // 退出 |
| | | wrkMast.setEmptyMk("N"); // 空板 |
| | | wrkMast.setBarcode(locMast.getBarcode()); |
| | | wrkMast.setAppeUser(userId); // 操作人员数据 |
| | | wrkMast.setAppeTime(now); |
| | | wrkMast.setModiUser(userId); |
| | | wrkMast.setModiTime(now); |
| | | wrkMast.setCrnNo(staDesc.getCrnNo()); |
| | | if (!wrkMastService.insert(wrkMast)) { |
| | | throw new CoolException("保存工作档失败,出库库位号:" + param.getLocNo()); |
| | | } |
| | | // 生成工作档明细 |
| | | for (PickMatParam matParam : param.getList()) { |
| | | Wrapper<Mat> wrapper = new EntityWrapper<>(); |
| | | wrapper.eq("status", 1); |
| | | wrapper.eq("matnr", matParam.getMatnr()); |
| | | Mat mat = matService.selectOne(wrapper); |
| | | if (mat == null) { |
| | | throw new CoolException("保存工作档失败,物料信息不存在:" + matParam.getMatnr()); |
| | | } |
| | | |
| | | WrkDetl wrkDetl = new WrkDetl(); |
| | | wrkDetl.sync(mat); |
| | | wrkDetl.setBatch(matParam.getBatch()); |
| | | wrkDetl.setOrderNo(matParam.getOrderNo()); |
| | | wrkDetl.setWrkNo(workNo); |
| | | wrkDetl.setIoTime(now); |
| | | wrkDetl.setAnfme(matParam.getUseCount()); // 数量 |
| | | wrkDetl.setAppeTime(now); |
| | | wrkDetl.setAppeUser(userId); |
| | | wrkDetl.setModiTime(now); |
| | | wrkDetl.setModiUser(userId); |
| | | wrkDetl.setZpallet(wrkMast.getBarcode()); |
| | | if(Cools.isEmpty(matParam.getBatch())){ |
| | | wrkDetl.setBatch(""); |
| | | } |
| | | if (!wrkDetlService.insert(wrkDetl)) { |
| | | throw new CoolException("保存工作档明细失败"); |
| | | } |
| | | |
| | | //更新订单工作数量 |
| | | orderDetlPakinService.increaseWorkQty(orderDetlPakin.getOrderId(), matParam.getMatnr(), |
| | | matParam.getBatch(),matParam.getBrand(),matParam.getStandby1(),matParam.getStandby2(),matParam.getStandby3(), |
| | | matParam.getBoxType1(),matParam.getBoxType2(),matParam.getBoxType3(),matParam.getUseCount()); |
| | | // 更新工作档状态 |
| | | orderPakinService.updateSettle(orderDetlPakin.getOrderId(),2L,userId); |
| | | } |
| | | // 修改库位状态: F.在库 ====>>> R.出库预约/P.拣料/盘点/并板出库中 |
| | | locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", param.getLocNo())); |
| | | if (locMast.getLocSts().equals("F")) { |
| | | locMast.setLocSts("P"); |
| | | locMast.setModiUser(userId); |
| | | locMast.setModiTime(now); |
| | | if (!locMastService.updateById(locMast)) { |
| | | throw new CoolException("预约库位状态失败,库位号:" + param.getLocNo()); |
| | | } |
| | | } else { |
| | | throw new CoolException(param.getLocNo() + "库位不是在库状态"); |
| | | } |
| | | |
| | | return R.ok(); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional |
| | | public R WarehouseOutV1(CombParam combParam, Long hostId, Long userId) { |
| | | //判断库位状态 |
| | | LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", combParam.getLocNo())); |
| | | if (Cools.isEmpty(locMast)){ |
| | | return R.error("该库位不存在"); |
| | | } |
| | | if (!locMast.getLocSts().equals("P")){ |
| | | return R.error("该库位状态为:"+locMast.getLocSts()+",不满足并板途中拣选条件!!!"); |
| | | } |
| | | //查询库存数据 |
| | | for (CombParam.CombMat combMat :combParam.getCombMats()){ |
| | | List<LocDetl> locDetlList = locDetlService.selectList(new EntityWrapper<LocDetl>() |
| | | .eq("loc_no", combParam.getLocNo()) |
| | | .eq("matnr", combMat.getMatnr()) |
| | | ); |
| | | if (locDetlList.isEmpty()){ |
| | | return R.error("未查询到库存数据"); |
| | | } |
| | | if (locDetlList.size()>1){ |
| | | return R.error("库存数据大于1条,为保证数据准确性,请用正常流程出库!!!"); |
| | | } |
| | | LocDetl locDetl = locDetlList.get(0); |
| | | if (combMat.getAnfme() > locDetl.getAnfme()){ |
| | | return R.error("拣选数量错误,超出库存数量"); |
| | | } |
| | | if (!Cools.isEmpty(combMat.getOrderNo())){ |
| | | OrderPakout orderPakout = orderPakoutService.selectByNo(combMat.getOrderNo()); |
| | | if (Cools.isEmpty(orderPakout)){ |
| | | continue; |
| | | } |
| | | if (orderPakout.getSettle() == 1){ |
| | | OrderInAndOutUtil.updateOrder(false,orderPakout.getId(), 2L, 9527L); |
| | | } |
| | | OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(orderPakout.getId(), combMat.getMatnr(), combMat.getBatch(), |
| | | combMat.getBrand(), combMat.getStandby1(), combMat.getStandby2(), combMat.getStandby3(), combMat.getBoxType1(), combMat.getBoxType2(), combMat.getBoxType3()); |
| | | if (Cools.isEmpty(orderDetlPakout)){ |
| | | continue; |
| | | } |
| | | if (orderDetlPakout.getAnfme() < (orderDetlPakout.getWorkQty()+combMat.getAnfme())){ |
| | | throw new CoolException("拣选数量出错,订单剩余出库数量小于已出库数量与将拣选数量之和!!!"); |
| | | } |
| | | // 修改订单明细作业数量 |
| | | if (!orderDetlPakoutService.increaseWorkQty(orderDetlPakout.getOrderId(), combMat.getMatnr(), combMat.getBatch(), combMat.getBrand(), |
| | | combMat.getStandby1(), combMat.getStandby2(), combMat.getStandby3(), combMat.getBoxType1(), combMat.getBoxType2(), combMat.getBoxType3(),combMat.getAnfme())) { |
| | | throw new CoolException("修改单据明细工作数量失败"); |
| | | } |
| | | // // 修改订单明细完成数量 |
| | | // if (!orderDetlPakoutService.increase(orderPakout.getId(),combMat.getMatnr(), combMat.getBatch(), combMat.getBrand(), |
| | | // combMat.getStandby1(), combMat.getStandby2(), combMat.getStandby3(), combMat.getBoxType1(), combMat.getBoxType2(), combMat.getBoxType3(),combMat.getAnfme())) { |
| | | // throw new CoolException("修改单据明细完成数量失败"); |
| | | // } |
| | | // // 修改订单状态 作业中 ===>> 已完成 |
| | | // orderPakoutService.checkComplete(combMat.getOrderNo()); |
| | | } |
| | | try { |
| | | Date now = new Date(); |
| | | // 创建入库工作档 |
| | | WrkMast wrkMast = new WrkMast(); |
| | | wrkMast.setWrkNo(commonService.getWorkNo(2)); |
| | | wrkMast.setIoTime(now); |
| | | wrkMast.setWrkSts(14L); // 工作状态:出库完成 |
| | | wrkMast.setIoType(108); // 入出库状态:出库,拣料入库 |
| | | wrkMast.setIoPri(13D); // 优先级 |
| | | wrkMast.setCrnNo(1); |
| | | wrkMast.setSourceStaNo(1); |
| | | wrkMast.setStaNo(1); |
| | | wrkMast.setSourceLocNo(combParam.getLocNo()); |
| | | wrkMast.setBarcode(combParam.getBarcode()); // 托盘码 |
| | | wrkMast.setFullPlt("Y"); // 满板:Y |
| | | wrkMast.setPicking("N"); // 拣料 |
| | | wrkMast.setExitMk("N"); // 退出 |
| | | wrkMast.setEmptyMk("N"); // 空板 |
| | | wrkMast.setLinkMis("Y"); |
| | | wrkMast.setCtnType(0); // 容器类型 |
| | | // 操作人员数据 |
| | | wrkMast.setAppeTime(now); |
| | | wrkMast.setModiTime(now); |
| | | wrkMast.setAppeUser(userId); |
| | | wrkMast.setModiUser(userId); |
| | | wrkMastService.insert(wrkMast); |
| | | |
| | | Mat mat = matService.selectOne(new EntityWrapper<Mat>().eq("matnr",combMat.getMatnr())); |
| | | if (mat == null) { |
| | | throw new CoolException("保存工作档失败,物料信息不存在:" + combMat.getMatnr()); |
| | | } |
| | | |
| | | WrkDetl wrkDetl = new WrkDetl(); |
| | | wrkDetl.sync(mat); |
| | | wrkDetl.setOrderNo(combMat.getOrderNo()); |
| | | wrkDetl.setWrkNo(wrkMast.getWrkNo()); |
| | | wrkDetl.setIoTime(now); |
| | | wrkDetl.setAnfme(combMat.getAnfme()); // 数量 |
| | | wrkDetl.setAppeTime(now); |
| | | wrkDetl.setAppeUser(userId); |
| | | wrkDetl.setModiTime(now); |
| | | wrkDetl.setModiUser(userId); |
| | | wrkDetl.setZpallet(wrkMast.getBarcode()); |
| | | wrkDetl.setBatch(combMat.getBatch()); |
| | | if(Cools.isEmpty(combMat.getBatch())){ |
| | | wrkDetl.setBatch(""); |
| | | } |
| | | wrkDetl.setBoxType1(combMat.getBoxType1()); |
| | | wrkDetl.setBoxType2(combMat.getBoxType2()); |
| | | wrkDetl.setBoxType3(combMat.getBoxType3()); |
| | | wrkDetl.setStandby1(combMat.getStandby1()); |
| | | wrkDetl.setStandby2(combMat.getStandby2()); |
| | | wrkDetl.setStandby3(combMat.getStandby3()); |
| | | // 生成工作档明细 |
| | | wrkDetlService.insert(wrkDetl); |
| | | System.out.println("正常"); |
| | | |
| | | }catch (Exception e) { |
| | | throw new CoolException("操作数据异常:"+e.getMessage()); |
| | | } |
| | | } |
| | | return R.ok("操作成功!"); |
| | | } |
| | | |
| | | @Override |
| | | public R orderOutListOrder(String barcode, Long userId) { |
| | | ArrayList<WrkMast> wrkMastArrayList = new ArrayList<>(); |
| | | if (Cools.isEmpty(barcode) || barcode.isEmpty()) { |
| | | List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>() |
| | | .eq("wrk_sts", 14L) |
| | | .eq("io_type", 104)); |
| | | wrkMastArrayList.addAll(wrkMasts); |
| | | List<WrkMast> wrkMasts1 = wrkMastService.selectList(new EntityWrapper<WrkMast>() |
| | | .eq("wrk_sts", 14L) |
| | | .eq("io_type", 107)); |
| | | wrkMastArrayList.addAll(wrkMasts1); |
| | | } else { |
| | | List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>() |
| | | .like("barcode", barcode) |
| | | .eq("wrk_sts", 199L) |
| | | .eq("io_type", 104)); |
| | | wrkMastArrayList.addAll(wrkMasts); |
| | | List<WrkMast> wrkMasts1 = wrkMastService.selectList(new EntityWrapper<WrkMast>() |
| | | .like("barcode", barcode) |
| | | .eq("wrk_sts", 199L) |
| | | .eq("io_type", 107)); |
| | | wrkMastArrayList.addAll(wrkMasts1); |
| | | } |
| | | return R.ok().add(wrkMastArrayList); |
| | | } |
| | | |
| | | @Override |
| | | public R orderOutListOrderPick(String barcode, Long userId) { |
| | | ArrayList<WrkMast> wrkMastArrayList = new ArrayList<>(); |
| | | if (Cools.isEmpty(barcode) || barcode.isEmpty()) { |
| | | List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>() |
| | | .eq("wrk_sts", 199L) |
| | | .eq("io_type", 103)); |
| | | wrkMastArrayList.addAll(wrkMasts); |
| | | List<WrkMast> wrkMasts1 = wrkMastService.selectList(new EntityWrapper<WrkMast>() |
| | | .eq("wrk_sts", 199L) |
| | | .eq("io_type", 107)); |
| | | wrkMastArrayList.addAll(wrkMasts1); |
| | | } else { |
| | | List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>() |
| | | .like("barcode", barcode) |
| | | .eq("wrk_sts", 199L) |
| | | .eq("io_type", 103) |
| | | ); |
| | | wrkMastArrayList.addAll(wrkMasts); |
| | | List<WrkMast> wrkMasts1 = wrkMastService.selectList(new EntityWrapper<WrkMast>() |
| | | .like("barcode", barcode) |
| | | .eq("wrk_sts", 199L) |
| | | .eq("io_type", 107)); |
| | | wrkMastArrayList.addAll(wrkMasts1); |
| | | } |
| | | return R.ok().add(wrkMastArrayList); |
| | | } |
| | | |
| | | @Override |
| | | public R pickMats(String matnr, String orderNo) { |
| | | List<DocType> docTypes = docTypeService.selectList(new EntityWrapper<DocType>().like("pakin", "1")); |
| | | ArrayList<Long> typeList = new ArrayList<>(); |
| | | for (DocType docType : docTypes) { |
| | | typeList.add(docType.getDocId()); |
| | | } |
| | | |
| | | Wrapper<Order> wrapper = new EntityWrapper<>(); |
| | | wrapper.eq("status", 1); |
| | | wrapper.in("doc_type", typeList); |
| | | List<Order> orders = orderService.selectList(wrapper); |
| | | |
| | | ArrayList<Long> orderIds = new ArrayList<>(); |
| | | for (Order order : orders) { |
| | | orderIds.add(order.getId()); |
| | | } |
| | | |
| | | //搜索明细 |
| | | Wrapper<OrderDetl> wrapper1 = new EntityWrapper<>(); |
| | | wrapper1.eq("status", 1); |
| | | wrapper1.in("order_id", orderIds); |
| | | wrapper1.orderBy("create_time",false); |
| | | if (!Cools.isEmpty(matnr)) { |
| | | wrapper1.like("matnr", matnr); |
| | | } |
| | | if (!Cools.isEmpty(orderNo)) { |
| | | wrapper1.like("order_no", orderNo); |
| | | } |
| | | List<OrderDetl> list = orderDetlService.selectList(wrapper1); |
| | | |
| | | ArrayList<PickMatParam> maps = new ArrayList<>(); |
| | | for (OrderDetl orderDetl : list) { |
| | | //剩余可用数量 |
| | | double count = orderDetl.getAnfme() - orderDetl.getWorkQty(); |
| | | if (count <= 0) { |
| | | continue; |
| | | } |
| | | |
| | | PickMatParam matParam = new PickMatParam(); |
| | | matParam.setMatnr(orderDetl.getMatnr()); |
| | | matParam.setBatch(orderDetl.getBatch()); |
| | | matParam.setOrderNo(orderDetl.getOrderNo()); |
| | | matParam.setOrderId(orderDetl.getOrderId()); |
| | | matParam.setCount(count); |
| | | matParam.setUseCount(count); |
| | | maps.add(matParam); |
| | | } |
| | | return R.ok().add(maps); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional |
| | |
| | | public void onSale(CombParam param) { |
| | | Date now = new Date(); |
| | | // 获取库位号 |
| | | String locno = param.getLocno(); |
| | | String locno = param.getLocNo(); |
| | | Node node = nodeService.selectByUuid(locno); |
| | | if (Cools.isEmpty(node)) { |
| | | throw new CoolException(param.getLocno() + ":库位不存在"); |
| | | throw new CoolException(param.getLocNo() + ":库位不存在"); |
| | | } |
| | | |
| | | // 获取商品列表 |
| | |
| | | List<LocDetlDto> locDetlDtos = new ArrayList<>(); |
| | | for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) { |
| | | if (!Cools.isEmpty(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getCount())) { |
| | | LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch()); |
| | | LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch(),paramLocDetl.getBrand() |
| | | ,paramLocDetl.getStandby1(),paramLocDetl.getStandby2(),paramLocDetl.getStandby3(),paramLocDetl.getBoxType1(),paramLocDetl.getBoxType2(),paramLocDetl.getBoxType3()); |
| | | if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount())); |
| | | } |
| | | } |
| | |
| | | List<LocDetlDto> locDetlDtos = new ArrayList<>(); |
| | | for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) { |
| | | if (!Cools.isEmpty(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getCount())) { |
| | | LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch()); |
| | | LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch(),paramLocDetl.getBrand() |
| | | ,paramLocDetl.getStandby1(),paramLocDetl.getStandby2(),paramLocDetl.getStandby3(),paramLocDetl.getBoxType1(),paramLocDetl.getBoxType2(),paramLocDetl.getBoxType3()); |
| | | if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount())); |
| | | } |
| | | } |
| | |
| | | if (!locDetl.getAnfme().equals(adjust.getCount())) { |
| | | // todo 盘点记录 |
| | | // 修改库存 |
| | | if (!locDetlService.updateAnfme(adjust.getCount(), locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch())) { |
| | | if (!locDetlService.updateAnfme(adjust.getCount(), locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(),locDetl.getBrand(), |
| | | locDetl.getStandby1(),locDetl.getStandby2(),locDetl.getStandby3(),locDetl.getBoxType1(),locDetl.getBoxType2(),locDetl.getBoxType3())) { |
| | | throw new CoolException(locDetl.getLocNo() + "库位," + locDetl.getMatnr() + "商品," + locDetl.getBatch() + "批号修改数量失败"); |
| | | } |
| | | // 保存调整记录 |
| | |
| | | // 删除库存 |
| | | for (LocDetl locDetl : locDetls) { |
| | | // todo 盘点记录 |
| | | if (!locDetlService.updateAnfme(-1.0D, locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch())) { |
| | | if (!locDetlService.updateAnfme(-1.0D, locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(),locDetl.getBrand(), |
| | | locDetl.getStandby1(),locDetl.getStandby2(),locDetl.getStandby3(),locDetl.getBoxType1(),locDetl.getBoxType2(),locDetl.getBoxType3())) { |
| | | throw new CoolException("删除" + locDetl.getLocNo() + "库位," + locDetl.getMatnr() + "商品," + locDetl.getBatch() + "批号库存明细失败"); |
| | | } |
| | | // 保存调整记录 |
| | |
| | | WrkDetl wrkDetl = iterator.next(); |
| | | if (!Cools.isEmpty(wrkDetl.getOrderNo())) { |
| | | // orderService.checkComplete(wrkDetl.getOrderNo()); |
| | | if (wrkMast.getIoType() == 1 || wrkMast.getIoType() == 54 || wrkMast.getIoType() == 104){ |
| | | if (wrkMast.getIoType() == 1 || wrkMast.getIoType() == 8 || wrkMast.getIoType() == 54 || wrkMast.getIoType() == 104){ |
| | | OrderInAndOutUtil.checkComplete(Boolean.TRUE,wrkDetl.getOrderNo()); |
| | | } else { |
| | | OrderInAndOutUtil.checkComplete(Boolean.FALSE,wrkDetl.getOrderNo()); |
| | |
| | | if (!Cools.isEmpty(wrkMast.getBarcode())) { |
| | | // 保存入库通知档历史档 |
| | | if (!waitPakinLogService.save(wrkMast.getBarcode())) { |
| | | exceptionHandle("保存入库通知档历史档[workNo={0}]失败", wrkMast.getWrkNo()); |
| | | // exceptionHandle("保存入库通知档历史档[workNo={0}]失败", wrkMast.getWrkNo()); |
| | | } |
| | | // 删除入库通知档 |
| | | if (!waitPakinService.delete(new EntityWrapper<WaitPakin>().eq("zpallet", wrkMast.getBarcode()))) { |
| | | exceptionHandle("删除入库通知档[workNo={0}]失败", wrkMast.getWrkNo()); |
| | | // exceptionHandle("删除入库通知档[workNo={0}]失败", wrkMast.getWrkNo()); |
| | | } |
| | | } |
| | | // // 手动入库生成单据 【 上报三方平台 】 |
| | |
| | | // 遍历工作明细,更新库存明细和入库通知档 |
| | | for (WrkDetl wrkDetl : wrkDetls) { |
| | | |
| | | LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch()); |
| | | LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand() |
| | | ,wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(),wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3()); |
| | | if (null != locDetl) { |
| | | if (!locDetlService.updateAnfme(wrkDetl.getAnfme(), wrkMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch())) { |
| | | if (!locDetlService.updateAnfme(wrkDetl.getAnfme(), wrkMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand(),wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3() |
| | | ,wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3())) { |
| | | // exceptionHandle("全板入库 ===>> 更新库存明细失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg("全板入库 ===>> 更新库存明细失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); |
| | |
| | | } |
| | | } |
| | | break; |
| | | // 拣料途中并板 |
| | | case 8: |
| | | // 根据工作号,查询工作明细档 |
| | | List<WrkDetl> wrkDetls8 = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo())); |
| | | if (wrkDetls8.isEmpty()) { |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg("拣料途中并板 ===>> 工作明细档不存在; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); |
| | | } |
| | | // 遍历工作明细,更新库存明细和入库通知档 |
| | | for (WrkDetl wrkDetl : wrkDetls8) { |
| | | |
| | | LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand() |
| | | , wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3()); |
| | | if (null != locDetl) { |
| | | if (!locDetlService.updateAnfme(wrkDetl.getAnfme() + locDetl.getAnfme(), wrkMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3() |
| | | , wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3())) { |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg("拣料途中并板 ===>> 更新库存明细失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); |
| | | } |
| | | } else { |
| | | locDetl = new LocDetl(); |
| | | locDetl.sync(wrkDetl); |
| | | locDetl.setLocNo(wrkMast.getLocNo()); // 库位号 |
| | | locDetl.setAnfme(wrkDetl.getAnfme()); // 数量 |
| | | locDetl.setZpallet(wrkDetl.getZpallet()); // 托盘条码 |
| | | locDetl.setModiTime(now); |
| | | locDetl.setAppeTime(now); |
| | | if (!locDetlService.insert(locDetl)) { |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg("拣料途中并板 ===>> 添加库存明细失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); |
| | | } |
| | | } |
| | | |
| | | if (!Cools.isEmpty(wrkDetl.getOrderNo())) { |
| | | // 更新订单完成数量 |
| | | if (!orderDetlPakinService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), |
| | | wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), |
| | | wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(), wrkDetl.getAnfme())) { |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg("拣料途中并板 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | // 拣料入库 |
| | | case 53: |
| | | // 根据工作号,查询工作明细档 |
| | |
| | | } |
| | | for (WrkDetl wrkDetl : wrkDetls53) { |
| | | |
| | | LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch()); |
| | | LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand() |
| | | ,wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(),wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3()); |
| | | if (null != locDetl) { |
| | | if (!locDetlService.updateAnfme(locDetl.getAnfme() - wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch())) { |
| | | if (!locDetlService.updateAnfme(locDetl.getAnfme() - wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand(),wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3() |
| | | ,wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3())) { |
| | | // exceptionHandle("拣料入库 ===>> 修改库存明细数量失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg("拣料入库 ===>> 修改库存明细数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); |
| | |
| | | // 修改库存明细数量,如无库存,曾新增 |
| | | for (WrkDetl wrkDetl:wrkDetls54) { |
| | | |
| | | LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch()); |
| | | LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand() |
| | | ,wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(),wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3()); |
| | | if (null != locDetl) { |
| | | if (!locDetlService.updateAnfme(wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch())) { |
| | | if (!locDetlService.updateAnfme(wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand(),wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3() |
| | | ,wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3())) { |
| | | // exceptionHandle("并板入库 ===>> 修改库存明细数量失败;[workNo={0}],[matnr={1}]", wrkMast.getWrkNo(), wrkDetl.getMatnr()); |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg("并板入库 ===>> 修改库存明细数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); |
| | |
| | | locDetl.setModiTime(now); |
| | | locDetl.setAppeTime(now); |
| | | if (!locDetlService.insert(locDetl)) { |
| | | // exceptionHandle("并板入库 ===>> 新增库存明细失败;[workNo={0}],[matnr={1}]", wrkMast.getWrkNo(), wrkDetl.getMatnr()); |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg("并板入库 ===>> 新增库存明细失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); |
| | | } |
| | | } |
| | | |
| | | // 更新订单完成数量 |
| | | OrderDetlPakin orderDetlPakin = orderDetlPakinService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand(), wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(), wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3()); |
| | | try { |
| | | if(!Cools.isEmpty(orderDetlPakin)){ |
| | | if(!orderDetlPakinService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), |
| | | orderDetlPakin.getBatch(),wrkDetl.getBrand(),wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(), |
| | | wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3(),wrkDetl.getAnfme())){ |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg("并板入库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); |
| | | } |
| | | } |
| | | } catch (Exception ignore){ |
| | | |
| | | } |
| | | |
| | | } |
| | | // 修改库位状态 Q ====>> F |
| | | if (locMast.getLocSts().equals("Q")) { |
| | |
| | | } |
| | | } |
| | | break; |
| | | // 并板途中捡料 |
| | | case 108: |
| | | // 根据工作号,查询工作明细档 |
| | | List<WrkDetl> wrkDetls108 = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo())); |
| | | if (wrkDetls108.isEmpty()) { |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg("并板途中捡料 ===>> 工作明细档为空; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]"); |
| | | } |
| | | for (WrkDetl wrkDetl : wrkDetls108) { |
| | | LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand() |
| | | ,wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(),wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3()); |
| | | if (null != locDetl) { |
| | | if (!locDetlService.updateAnfme(locDetl.getAnfme() - wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand(),wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3() |
| | | ,wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3())) { |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg("并板途中捡料 ===>> 修改库存明细数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); |
| | | } |
| | | } |
| | | // 更新订单完成数量 |
| | | OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand(),wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(), |
| | | wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3()); |
| | | try { |
| | | if(!Cools.isEmpty(orderDetlPakout)){ |
| | | if(!orderDetlPakoutService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), |
| | | orderDetlPakout.getBatch(),wrkDetl.getBrand(),wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(), |
| | | wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3(),wrkDetl.getAnfme())){ |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg("并板途中捡料 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]"); |
| | | } |
| | | } |
| | | } catch (Exception ignore){} |
| | | } |
| | | break; |
| | | // 空板出库 |
| | | case 110: |
| | | // 修改库位状态 R ===>> O |
| | |
| | | </otherwise> |
| | | </choose> |
| | | </sql> |
| | | <sql id="batchSeqNew"> |
| | | <choose> |
| | | <when test="batch != null and batch != ''"> |
| | | and batch = #{batch} |
| | | </when> |
| | | <otherwise> |
| | | and (batch IS NULL OR batch = '') |
| | | </otherwise> |
| | | </choose> |
| | | <choose> |
| | | <when test="brand != null and brand != ''"> |
| | | and brand = #{brand} |
| | | </when> |
| | | <otherwise> |
| | | and (brand IS NULL OR brand = '') |
| | | </otherwise> |
| | | </choose> |
| | | <choose> |
| | | <when test="standby1 != null and standby1 != ''"> |
| | | and standby1 = #{standby1} |
| | | </when> |
| | | <otherwise> |
| | | and (standby1 IS NULL OR standby1 = '') |
| | | </otherwise> |
| | | </choose> |
| | | <choose> |
| | | <when test="standby2 != null and standby2 != ''"> |
| | | and standby2 = #{standby2} |
| | | </when> |
| | | <otherwise> |
| | | and (standby2 IS NULL OR standby2 = '') |
| | | </otherwise> |
| | | </choose> |
| | | <choose> |
| | | <when test="standby3 != null and standby3 != ''"> |
| | | and standby3 = #{standby3} |
| | | </when> |
| | | <otherwise> |
| | | and (standby3 IS NULL OR standby3 = '') |
| | | </otherwise> |
| | | </choose> |
| | | <choose> |
| | | <when test="boxType1 != null and boxType1 != ''"> |
| | | and box_type1 = #{boxType1} |
| | | </when> |
| | | <otherwise> |
| | | and (box_type1 IS NULL OR box_type1 = '') |
| | | </otherwise> |
| | | </choose> |
| | | <choose> |
| | | <when test="boxType2 != null and boxType2 != ''"> |
| | | and box_type2 = #{boxType2} |
| | | </when> |
| | | <otherwise> |
| | | and (box_type2 IS NULL OR box_type2 = '') |
| | | </otherwise> |
| | | </choose> |
| | | <choose> |
| | | <when test="boxType3 != null and boxType3 != ''"> |
| | | and box_type3 = #{boxType3} |
| | | </when> |
| | | <otherwise> |
| | | and (box_type3 IS NULL OR box_type3 = '') |
| | | </otherwise> |
| | | </choose> |
| | | </sql> |
| | | |
| | | <sql id="selectAllSql"> |
| | | <if test="locNo!=null and locNo!='' "> |
| | |
| | | |
| | | <select id="selectItem" resultMap="BaseResultMap"> |
| | | select top 1 * |
| | | from asr_loc_detl |
| | | from asr_loc_detl d |
| | | where 1=1 |
| | | and loc_no = #{locNo} |
| | | and matnr = #{matnr} |
| | |
| | | where 1=1 |
| | | and loc_no = #{locNo} |
| | | and matnr = #{matnr} |
| | | <include refid="batchSeq"></include> |
| | | <include refid="batchSeqNew"></include> |
| | | </delete> |
| | | |
| | | <update id="updateAnfme"> |
| | |
| | | where 1=1 |
| | | and loc_no = #{locNo} |
| | | and matnr = #{matnr} |
| | | <include refid="batchSeq"></include> |
| | | <include refid="batchSeqNew"></include> |
| | | </update> |
| | | |
| | | <sql id="stockOutCondition"> |
| | |
| | | <include refid="standbyAll"></include> |
| | | </update> |
| | | |
| | | <update id="increaseWorkQtyByOrderNo"> |
| | | update man_order_detl |
| | | set work_qty = work_qty + #{qty} |
| | | where 1=1 |
| | | and order_no = #{orderNo} |
| | | and matnr = #{matnr} |
| | | <choose> |
| | | <when test="batch != null and batch != ''"> |
| | | and batch = #{batch} |
| | | </when> |
| | | <otherwise> |
| | | and (batch IS NULL OR batch = '') |
| | | </otherwise> |
| | | </choose> |
| | | </update> |
| | | |
| | | </mapper> |
| | |
| | | </resultMap> |
| | | |
| | | <sql id="standbyAll"> |
| | | and batch = #{batch} |
| | | and brand = #{brand} |
| | | and standby1 = #{standby1} |
| | | and standby2 = #{standby2} |
| | | and standby3 = #{standby3} |
| | | and box_type1 = #{boxType1} |
| | | and box_type2 = #{boxType2} |
| | | and box_type3 = #{boxType3} |
| | | <choose> |
| | | <when test="batch != null and batch != ''"> |
| | | and batch = #{batch} |
| | | </when> |
| | | <otherwise> |
| | | and (batch IS NULL OR batch = '') |
| | | </otherwise> |
| | | </choose> |
| | | <choose> |
| | | <when test="brand != null and brand != ''"> |
| | | and brand = #{brand} |
| | | </when> |
| | | <otherwise> |
| | | and (brand IS NULL OR brand = '') |
| | | </otherwise> |
| | | </choose> |
| | | <choose> |
| | | <when test="standby1 != null and standby1 != ''"> |
| | | and standby1 = #{standby1} |
| | | </when> |
| | | <otherwise> |
| | | and (standby1 IS NULL OR standby1 = '') |
| | | </otherwise> |
| | | </choose> |
| | | <choose> |
| | | <when test="standby2 != null and standby2 != ''"> |
| | | and standby2 = #{standby2} |
| | | </when> |
| | | <otherwise> |
| | | and (standby2 IS NULL OR standby2 = '') |
| | | </otherwise> |
| | | </choose> |
| | | <choose> |
| | | <when test="standby3 != null and standby3 != ''"> |
| | | and standby3 = #{standby3} |
| | | </when> |
| | | <otherwise> |
| | | and (standby3 IS NULL OR standby3 = '') |
| | | </otherwise> |
| | | </choose> |
| | | <choose> |
| | | <when test="boxType1 != null and boxType1 != ''"> |
| | | and box_type1 = #{boxType1} |
| | | </when> |
| | | <otherwise> |
| | | and (box_type1 IS NULL OR box_type1 = '') |
| | | </otherwise> |
| | | </choose> |
| | | <choose> |
| | | <when test="boxType2 != null and boxType2 != ''"> |
| | | and box_type2 = #{boxType2} |
| | | </when> |
| | | <otherwise> |
| | | and (box_type2 IS NULL OR box_type2 = '') |
| | | </otherwise> |
| | | </choose> |
| | | <choose> |
| | | <when test="boxType3 != null and boxType3 != ''"> |
| | | and box_type3 = #{boxType3} |
| | | </when> |
| | | <otherwise> |
| | | and (box_type3 IS NULL OR box_type3 = '') |
| | | </otherwise> |
| | | </choose> |
| | | </sql> |
| | | <sql id="standbyAllMemo"> |
| | | -- and line_number = #{lineNumber} |