| | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.core.common.BaseRes; |
| | | import com.core.common.Cools; |
| | | import com.core.common.DateUtils; |
| | | import com.core.common.SnowflakeIdWorker; |
| | | import com.baomidou.mybatisplus.mapper.Wrapper; |
| | | 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.NodePakoutParam; |
| | | import com.zy.asrs.entity.param.OpenOrderPakinParam; |
| | | import com.zy.asrs.service.*; |
| | | import com.zy.asrs.task.core.ReturnT; |
| | | import com.zy.asrs.task.handler.WorkLogHandler; |
| | | import com.zy.asrs.utils.MatUtils; |
| | | import com.zy.asrs.utils.SaasUtils; |
| | | import com.zy.asrs.utils.Utils; |
| | | import com.zy.common.constant.MesConstant; |
| | | import com.zy.common.entity.Parameter; |
| | | import com.zy.common.model.DetlDto; |
| | |
| | | private ManLocDetlService manLocDetlService; |
| | | @Autowired |
| | | private WaitPakinLogService waitPakinLogService; |
| | | @Autowired |
| | | private NodeService nodeService; |
| | | @Autowired |
| | | private ManPakOutService manPakOutService; |
| | | |
| | | @Override |
| | | @Transactional |
| | |
| | | |
| | | //增加平库库存 |
| | | List<WaitPakin> waitPakinList = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", zpallet)); |
| | | waitPakinList.forEach(waitPakin -> { |
| | | |
| | | if(Cools.isEmpty(waitPakinList)){ |
| | | throw new CoolException("该托盘码未组托"); |
| | | } |
| | | |
| | | waitPakinList.forEach(waitPakin -> { |
| | | //料想码 |
| | | String containerCode = waitPakin.getSuppCode(); |
| | | //如果当前料想码已存在,则修改该料想的物料数量 |
| | | ManLocDetl manLocDetl = manLocDetlService.selectOne(new EntityWrapper<ManLocDetl>().eq("container_code", containerCode)); |
| | | if(Cools.isEmpty(manLocDetl)){ |
| | | saveManlocDetl(manLocDetl,waitPakin,now,locNo); |
| | | saveManlocDetl(waitPakin,now,locNo); |
| | | }else{ |
| | | if(Cools.eq(manLocDetl.getMatnr(),waitPakin.getMatnr()) |
| | | && Cools.eq(manLocDetl.getCsocode(),waitPakin.getThreeCode()) |
| | |
| | | .eq("loc_no",manLocDetl.getLocNo()) |
| | | .eq("container_code",manLocDetl.getContainerCode())); |
| | | }else{ |
| | | saveManlocDetl(manLocDetl,waitPakin,now,locNo); |
| | | saveManlocDetl(waitPakin,now,locNo); |
| | | } |
| | | } |
| | | //生成平库入出库日志 |
| | |
| | | //删除入库通知档 |
| | | waitPakinService.delete(new EntityWrapper<WaitPakin>().eq("zpallet", zpallet)); |
| | | |
| | | orderService.checkComplete(waitPakinList.get(0).getOrderNo()); |
| | | |
| | | |
| | | } |
| | | |
| | | private void saveManlocDetl(ManLocDetl manLocDetl, WaitPakin waitPakin, Date now, String locNo){ |
| | | manLocDetl = new ManLocDetl(); |
| | | @Transactional |
| | | public void nodePakout(NodePakoutParam param, User user) { |
| | | Node node = nodeService.selectOne(new EntityWrapper<Node>().eq("name", param.getLocNo())); |
| | | Order order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no", param.getOrderNo())); |
| | | if (Cools.isEmpty(node, order)) { |
| | | throw new CoolException("参数为空"); |
| | | } |
| | | //查询当前物料的订单详情 |
| | | Wrapper<OrderDetl> orderDetlWrapper = new EntityWrapper<OrderDetl>().eq("order_no", param.getOrderNo()).eq(false, "status", 1); |
| | | Utils.wapperSetCondition(orderDetlWrapper,"three_code",param.getCsocode()); |
| | | Utils.wapperSetCondition(orderDetlWrapper,"dead_time",param.getIsoseq()); |
| | | Utils.wapperSetCondition(orderDetlWrapper,"matnr",param.getMatnr()); |
| | | |
| | | //Utils.confirmOnlyMat(orderDetlWrapper,param.getMatnr(),param.getCsocode(),param.getIsoseq()); |
| | | OrderDetl orderDetl = orderDetlService.selectOne(orderDetlWrapper); |
| | | //查询当前拣货单信息 |
| | | Wrapper<ManPakOut> manPakOutWrapper = new EntityWrapper<ManPakOut>().eq("wrk_no", param.getWrkNo()); |
| | | ManPakOut manPakOut = manPakOutService.selectOne(manPakOutWrapper); |
| | | if(Cools.isEmpty(manPakOut) || manPakOut.getStatus() == 1){ |
| | | throw new CoolException("当前拣货码已经完成拣货"); |
| | | } |
| | | //查询库存信息 |
| | | Wrapper<ManLocDetl> manLocDetlWrapper = new EntityWrapper<ManLocDetl>().eq("loc_no", param.getLocNo()); |
| | | Utils.confirmOnlyMat(manLocDetlWrapper,param.getMatnr(),param.getCsocode(),param.getIsoseq()); |
| | | ManLocDetl manLocDetl = manLocDetlService.selectOne(manLocDetlWrapper); |
| | | |
| | | //根据实际出库数量扣减库存 |
| | | if(Double.doubleToLongBits(param.getAnfme()) != Double.doubleToLongBits(manPakOut.getAnfme())){ |
| | | if(param.getAnfme() > manLocDetl.getAnfme() || (param.getAnfme() - manPakOut.getAnfme()) > (orderDetl.getAnfme() - orderDetl.getQty())){ |
| | | throw new CoolException("出库数量不得大于订单数量或者库存数量"); |
| | | } |
| | | //根据实际出库数量回写拣货单 |
| | | manPakOut.setCount(param.getAnfme()); |
| | | if(manPakOut.getCount() < manPakOut.getAnfme()){ |
| | | manPakOut.setStatus(8); |
| | | } |
| | | //根据实际出库数量回写订单详情 |
| | | orderDetl.setQty(orderDetl.getQty() - (param.getAnfme()-manPakOut.getAnfme())); |
| | | orderDetlService.update(orderDetl,orderDetlWrapper); |
| | | |
| | | }else { |
| | | manPakOut.setCount(param.getAnfme()); |
| | | manPakOut.setStatus(1); |
| | | } |
| | | |
| | | manPakOutService.update(manPakOut,manPakOutWrapper); |
| | | //检查该订单下的拣货单是否已经全部出库 |
| | | int status = checkManPakoutByOrder(param.getOrderNo()); |
| | | manPakOutService.updateAllStatus(param.getOrderNo(),status); |
| | | |
| | | |
| | | //修改库存 |
| | | manLocDetl.setAnfme(manLocDetl.getAnfme()-manPakOut.getCount()); |
| | | if (manLocDetl.getAnfme() == 0 ){ |
| | | manLocDetlService.delete(manLocDetlWrapper); |
| | | }else{ |
| | | manLocDetl.setStatus(1); |
| | | manLocDetlService.update(manLocDetl,manLocDetlWrapper); |
| | | } |
| | | SaasUtils.insertLog(1,manLocDetl.getLocNo(),manLocDetl.getMatnr(), manLocDetl.getAnfme(),user.getUsername()); |
| | | manLocDetl.setStatus(1); |
| | | manLocDetlService.update(manLocDetl,manLocDetlWrapper); |
| | | |
| | | //检测订单是否完成 |
| | | orderService.checkComplete(param.getOrderNo()); |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | private void saveManlocDetl(WaitPakin waitPakin, Date now, String locNo){ |
| | | |
| | | Node node = nodeService.selectOne(new EntityWrapper<Node>() |
| | | .eq("name", locNo)); |
| | | |
| | | ManLocDetl manLocDetl = new ManLocDetl(); |
| | | BeanUtils.copyProperties(waitPakin,manLocDetl); |
| | | manLocDetl.setNodeId(node.getId()); |
| | | manLocDetl.setContainerCode(waitPakin.getSuppCode()); |
| | | manLocDetl.setCsocode(waitPakin.getThreeCode()); |
| | | manLocDetl.setIsoseq(waitPakin.getDeadTime()); |
| | | manLocDetl.setCreateTime(now); |
| | | manLocDetl.setModiTime(now); |
| | | manLocDetl.setLocNo(locNo); |
| | | manLocDetl.setStatus(1); |
| | | manLocDetlService.insert(manLocDetl); |
| | | } |
| | | |
| | | private int checkManPakoutByOrder(String orderNo){ |
| | | int status = 0; |
| | | List<ManPakOut> manPakOutList = manPakOutService.selectList(new EntityWrapper<ManPakOut>().eq("doc_num", orderNo)); |
| | | |
| | | for(int i=0; i<manPakOutList.size(); i++){ |
| | | if(i == 0){ |
| | | status = manPakOutList.get(i).getStatus(); |
| | | }else { |
| | | if(manPakOutList.get(i).getStatus() != status){ |
| | | status = 8; |
| | | } |
| | | } |
| | | } |
| | | |
| | | return status; |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | public static void main(String[] args) { |
| | | ManPakOut m = new ManPakOut(); |
| | | m.setAnfme(1.0); |
| | | NodePakoutParam n = new NodePakoutParam(); |
| | | n.setAnfme(1.0); |
| | | |
| | | double a = 1.0; |
| | | double b = 1.0; |
| | | System.out.println(m.getAnfme() == n.getAnfme()); |
| | | System.out.println(a == b); |
| | | System.out.println(Double.doubleToLongBits(m.getAnfme()) == Double.doubleToLongBits(n.getAnfme())); |
| | | } |
| | | |
| | | } |