src/main/java/com/zy/asrs/controller/AgvLocDetlController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/controller/AgvMobileController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/entity/AgvLocDetl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/entity/param/PickParam.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/AgvMobileService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/OrderDetlService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/mapper/OrderDetlMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/controller/AgvLocDetlController.java
@@ -9,8 +9,10 @@ import com.core.common.R; import com.zy.asrs.entity.AgvLocDetl; import com.zy.asrs.entity.Mat; import com.zy.asrs.entity.OrderDetl; import com.zy.asrs.service.AgvLocDetlService; import com.zy.asrs.service.MatService; import com.zy.asrs.service.OrderDetlService; import com.zy.common.web.BaseController; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestBody; @@ -31,6 +33,8 @@ private AgvLocDetlService agvLocDetlService; @Autowired private MatService matService; @Autowired private OrderDetlService orderDetlService; @RequestMapping(value = "/locDetl/list/auth") @ManagerAuth @@ -72,6 +76,55 @@ return R.ok(agvLocDetlService.selectPage(new Page<>(curr, limit), wrapper)); } @RequestMapping(value = "/locDetl/list/auth/v2") @ManagerAuth public R listV2(@RequestParam(defaultValue = "1")Integer curr, @RequestParam(defaultValue = "10")Integer limit, @RequestParam(required = false)String orderByField, @RequestParam(required = false)String orderByType, @RequestParam(required = false)String condition, @RequestParam Map<String, Object> param, @RequestParam(required = false)Boolean unreason){ if (!Cools.isEmpty(unreason) && unreason) { return R.ok(agvLocDetlService.selectPage(new Page<>(curr, limit), new EntityWrapper<AgvLocDetl>() .where(" DATALENGTH( batch ) != 11 or\n" + " batch LIKE '%[a-z]%'"))); } param.remove("unreason"); String row = ""; EntityWrapper<AgvLocDetl> wrapper = new EntityWrapper<>(); if (param.get("row") != null) { String chooseRow = (String) param.get("row"); if (chooseRow.length() == 1) { row = "0" + chooseRow; param.remove("row"); }else { row = chooseRow; param.remove("row"); } } excludeTrash(param); convert(param, wrapper); allLike(AgvLocDetl.class, param.keySet(), wrapper, condition); if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} if (!row.equals("")){ wrapper.and() .where("loc_no like '" +row +"%'"); } Page<AgvLocDetl> agvLocDetlPage = agvLocDetlService.selectPage(new Page<>(curr, limit), wrapper); for (AgvLocDetl record : agvLocDetlPage.getRecords()) { OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("three_code", record.getThreeCode()).eq("matnr", record.getMatnr()).ne("order_no", record.getOrderNo())); if (orderDetl.getAnfme() - orderDetl.getQty() > 0) { record.setStock(orderDetl.getAnfme() - orderDetl.getQty()); } else { record.setStock(-1D); } record.setOrderNo(orderDetl.getOrderNo()); } return R.ok(agvLocDetlPage); } @RequestMapping(value = "/locDetl/statis/auth") @ManagerAuth(memo = "AGV库存明细统计") public R statis(@RequestParam(defaultValue = "1")Integer curr, src/main/java/com/zy/asrs/controller/AgvMobileController.java
@@ -10,6 +10,7 @@ import com.zy.asrs.entity.param.AgvMobileStartPakin; import com.zy.asrs.entity.param.AgvMobileStartParam; import com.zy.asrs.entity.param.CombParam; import com.zy.asrs.entity.param.PickParam; import com.zy.asrs.service.*; import com.zy.common.web.BaseController; import lombok.Synchronized; @@ -58,6 +59,14 @@ return R.ok(); } // 再次拣料 @RequestMapping("/pick/again/auth") // @ManagerAuth(memo = "组托") public R pickAgain(@RequestBody PickParam pickParams){ agvMobileService.pickAgain(pickParams, 1l); return R.ok("组托成功"); } /* 绑定托盘条码与暂存位 */ src/main/java/com/zy/asrs/entity/AgvLocDetl.java
@@ -161,6 +161,13 @@ @ApiModelProperty(value= "库存冻结{1:正常,0:冻结}") private Integer stockFreeze; /** * 库存数量 */ @ApiModelProperty(value= "可出数量") @TableField(exist = false) private Double stock; public String getLocNo$(){ LocMastService service = SpringUtils.getBean(LocMastService.class); LocMast locMast = service.selectById(this.locNo); src/main/java/com/zy/asrs/entity/param/PickParam.java
New file @@ -0,0 +1,37 @@ package com.zy.asrs.entity.param; import lombok.Data; import java.util.List; @Data public class PickParam { // 工作号 private Integer wrkNo; private String locNo; // 拣料数量 private List<Pick> picks; @Data public static class Pick { // 物料编号 private String matnr; // 单据编号 private String orderNo; //销售订单号 private String threeCode; //销售订单号 private String suppCode; // 拣料数量 private Double count; } } src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java
@@ -45,4 +45,6 @@ List<OrderDetl> selectByMatnr(@Param("matnr") String matnr); List<OrderDetl> getPakoutDetlPage(Map<String, Object> map); } src/main/java/com/zy/asrs/service/AgvMobileService.java
@@ -3,6 +3,7 @@ import com.zy.asrs.entity.AgvBasDevp; import com.zy.asrs.entity.param.CombParam; import com.zy.asrs.entity.param.MobileAdjustParam; import com.zy.asrs.entity.param.PickParam; import java.util.List; @@ -14,6 +15,11 @@ String comb(CombParam param, Long userId); /** * 组托 */ String pickAgain(PickParam pickParams, Long userId); /** * 盘点 */ void adjust(MobileAdjustParam param, Long userId); src/main/java/com/zy/asrs/service/OrderDetlService.java
@@ -12,8 +12,6 @@ Page<OrderDetl> getPakoutPage(Page<OrderDetl> page); Page<OrderDetl> getPakoutDetlPage(Page<OrderDetl> page); OrderDetl selectItem(Long orderId, String matnr, String batch, String csocode, String isoCode); OrderDetl selectItem(String orderNo, String matnr, String batch, String csocode, String isoCode); @@ -38,4 +36,5 @@ public OrderDetl selectByOrderNoAndMatnr(String orderNo, String matnr, String csocode, String isoseq); } src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java
@@ -7,6 +7,7 @@ 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.PickParam; import com.zy.asrs.service.*; import com.zy.common.model.DetlDto; import lombok.extern.slf4j.Slf4j; @@ -44,6 +45,8 @@ private AgvWrkMastService agvWrkMastService; @Autowired private AgvWorkService agvWorkService; @Autowired private AgvWrkDetlService agvWrkDetlService; /* @@ -90,6 +93,65 @@ } /* 组托 + 绑定暂存位 */ @Override @Transactional public String pickAgain(PickParam pickParams, Long userId) { Date now = new Date(); List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", pickParams.getLocNo())); for (PickParam.Pick pick : pickParams.getPicks()) { if (pick.getCount().equals(0D)) continue; AgvWrkDetl wrkDetl = new AgvWrkDetl(); Mat mat = matService.selectByMatnr(pick.getMatnr()); if (Cools.isEmpty(mat)) { throw new CoolException(pick.getMatnr() + "商品不存在"); } wrkDetl.sync(mat); wrkDetl.setWrkNo(pickParams.getWrkNo()); wrkDetl.setOrderNo(pick.getOrderNo()); wrkDetl.setIoTime(now); wrkDetl.setAnfme(pick.getCount()); // 数量 wrkDetl.setSuppCode(pick.getSuppCode()); // 托盘条码 wrkDetl.setAppeUser(userId); wrkDetl.setAppeTime(now); wrkDetl.setModiUser(userId); wrkDetl.setModiTime(now); wrkDetl.setThreeCode(pick.getThreeCode()); agvWrkDetlService.insert(wrkDetl); // 更新订单 OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("order_no", pick.getOrderNo()).eq("matnr", pick.getMatnr()).eq("three_code",pick.getThreeCode())); orderDetl.setQty(orderDetl.getQty() + pick.getCount()); if (!orderDetlService.update(orderDetl,new EntityWrapper<OrderDetl>().eq("order_no", pick.getOrderNo()).eq("matnr", pick.getMatnr()).eq("three_code",pick.getThreeCode()))){ throw new CoolException("修改订单明细失败,请联系管理员"+pick.getOrderNo()+pick.getMatnr()); } } // 确认是否全部出库 int sameNumber = 0; List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", pickParams.getWrkNo())); for (AgvLocDetl agvLocDetl : agvLocDetls) { for (AgvWrkDetl agvWrkDetl : agvWrkDetls) { if (agvLocDetl.getMatnr().equals(agvWrkDetl.getMatnr()) && agvLocDetl.getThreeCode().equals(agvWrkDetl.getThreeCode()) && agvLocDetl.getSuppCode().equals(agvWrkDetl.getSuppCode()) && agvLocDetl.getAnfme().equals(agvWrkDetl.getAnfme())) { sameNumber++; } } } if (agvLocDetls.size() == sameNumber) { AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("wrk_no", pickParams.getWrkNo())); agvWrkMast.setIoType(101); agvWrkMastService.update(agvWrkMast,new EntityWrapper<AgvWrkMast>().eq("wrk_no", pickParams.getWrkNo())); } return "组托成功,绑定站点成功"; } /* AGV无单组托 */ private void NoOrderComb(CombParam param, Long userId){ @@ -102,6 +164,8 @@ }); } /* AGV有单组托 */ src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java
@@ -31,13 +31,6 @@ } @Override public Page<OrderDetl> getPakoutDetlPage(Page<OrderDetl> page) { page.setRecords(baseMapper.getPakoutPage(page.getCondition())); page.setTotal(baseMapper.getPakoutPageCount(page.getCondition())); return page; } @Override public OrderDetl selectItem(Long orderId, String matnr, String batch, String csocode, String isoCode) { return this.baseMapper.selectItem(orderId,matnr,batch,csocode,isoCode); } src/main/resources/mapper/OrderDetlMapper.xml
@@ -282,4 +282,21 @@ and matnr = #{matnr} </select> <select id="getPakoutDetlPage" resultMap="BaseResultMap"> select * from ( select ROW_NUMBER() over (order by mo.create_time desc) as row, mod.* from man_order_detl mod inner join man_order mo on mod.order_id = mo.id inner join man_doc_type mdt on mo.doc_type = mdt.doc_id where 1=1 and mo.settle <= 2 and mo.status = 1 and mdt.pakout = 1 <include refid="pakOutPageCondition"></include> ) t where t.row between ((#{pageNumber}-1)*#{pageSize}+1) and (#{pageNumber}*#{pageSize}) </select> </mapper>