| | |
| | | return R.ok(sum); |
| | | } |
| | | |
| | | @GetMapping("/locDetl/source") |
| | | public void getSource(){ |
| | | List<LocDetl>list = locDetlService.selectList(null); |
| | | for (LocDetl locDetl : list) { |
| | | LocMast locMast = locMastService.selectById(locDetl.getLocNo()); |
| | | locDetl.setSource(locMast.getLocAttribute()); |
| | | locDetlService.update(locDetl,new EntityWrapper<LocDetl>().eq("loc_no", locDetl.getLocNo())); |
| | | } |
| | | } |
| | | |
| | | } |
| | |
| | | return R.ok(); |
| | | } |
| | | |
| | | @GetMapping(value = "/locMast/check/column/group1") |
| | | public void group1() { |
| | | List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("row1",9)); |
| | | for (LocMast locMast : locMasts) { |
| | | LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("row1",8).eq("bay1",locMast.getBay1()).eq("lev1",locMast.getLev1())); |
| | | locMast1.setGroup1(locMast.getGroup1()); |
| | | locMastService.updateById(locMast1); |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | @RequestMapping(value = "/locMast/init/auth") |
| | | @ManagerAuth(memo = "初始化库位") |
| | | // @Transactional |
| | |
| | | import com.zy.asrs.entity.LocMast; |
| | | import com.zy.asrs.entity.OrderDetl; |
| | | import com.zy.asrs.service.*; |
| | | import com.zy.asrs.utils.Utils; |
| | | import com.zy.common.model.LocDto; |
| | | import com.zy.common.model.TaskDto; |
| | | import com.zy.common.properties.SlaveProperties; |
| | | import com.zy.common.web.BaseController; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | |
| | | private WorkService workService; |
| | | @Autowired |
| | | private BasDevpService basDevpService; |
| | | @Autowired |
| | | private SlaveProperties slaveProperties; |
| | | |
| | | |
| | | @PostMapping("/out/pakout/orderDetlIds/auth") |
| | |
| | | if (issued <= 0.0D) { continue; } |
| | | List<LocDetl> locDetls = locDetlService.queryStock(orderDetl.getMatnr(), orderDetl.getBatch(), null, exist); |
| | | for (LocDetl locDetl : locDetls) { |
| | | LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetl.getLocNo())); |
| | | if(locMast==null){ |
| | | R.error("没有找到该库位:"+locDetl.getLocNo()); |
| | | String locNo = locDetl.getLocNo(); |
| | | LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locNo)); |
| | | if (locMast == null) { |
| | | R.error("没有找到该库位:" + locDetl.getLocNo()); |
| | | } |
| | | List<LocMast> locMasts=locMastService.selectList(new EntityWrapper<LocMast>() |
| | | .eq("group1",locMast.getGroup1()) |
| | | .eq("loc_sts","F") |
| | | .orderBy("loc_attribute",false)); |
| | | for (LocMast locMast1 : locMasts) { |
| | | LocDetl locDetl1 = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no", locMast1.getLocNo())); |
| | | if(locDetl1==null){ |
| | | return R.error(locMast1.getLocNo()+"没有找到物料"); |
| | | } |
| | | if (!locDetl1.getMatnr().equals(locDetl.getMatnr())) { |
| | | log.error(locMast1.getGroup1()+"巷道的第"+locMast1.getLocAttribute()+"深浅库位号和同巷道物料不同"); |
| | | break; |
| | | } |
| | | if (issued > 0) { |
| | | LocDto locDto = new LocDto(locDetl1.getLocNo(), locDetl1.getMatnr(), locDetl1.getMaktx(), locDetl1.getBatch(), orderDetl.getOrderNo(), |
| | | issued >= locDetl1.getAnfme() ? locDetl1.getAnfme() : issued); |
| | | List<Integer> staNos = new ArrayList<>(); |
| | | staNos.add(100); |
| | | staNos.add(200); |
| | | locDto.setStaNos(staNos); |
| | | locDtos.add(locDto); |
| | | exist.add(locDetl.getLocNo()); |
| | | // 剩余待出数量递减 |
| | | issued = issued - locDetl.getAnfme(); |
| | | } else { |
| | | break; |
| | | |
| | | //获取通道组 |
| | | List<Integer> locRowGroupAsc = Utils.getLocRowGroupAsc(slaveProperties, Utils.getRow(locNo)); |
| | | for (Integer row : locRowGroupAsc) { |
| | | String shallow = Utils.getLocNo(row, Utils.getBay(locNo), Utils.getLev(locNo)); |
| | | LocMast shallowLoc = locMastService.selectById(shallow); |
| | | if (shallowLoc.getLocSts().equals("F")) { |
| | | LocDetl locDetl1 = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no", shallowLoc.getLocNo())); |
| | | if (locDetl1 == null) { |
| | | log.error(shallowLoc.getLocNo() + "没有找到物料"); |
| | | break; |
| | | } |
| | | if (!locDetl1.getMatnr().equals(locDetl.getMatnr())) { |
| | | log.error(shallowLoc.getLocNo() + "库位与" + locNo + "库位同巷道物料不同"); |
| | | break; |
| | | } |
| | | if (issued > 0) { |
| | | if(exist.contains(locDetl1.getLocNo())) { |
| | | continue; |
| | | } |
| | | LocDto locDto = new LocDto(locDetl1.getLocNo(), locDetl1.getMatnr(), locDetl1.getMaktx(), locDetl1.getBatch(), orderDetl.getOrderNo(), |
| | | issued >= locDetl1.getAnfme() ? locDetl1.getAnfme() : issued); |
| | | int ioType = (issued >= locDetl1.getAnfme() && locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("loc_no", locDto.getLocNo())) == 1) ? 101 : 103; |
| | | List<Integer> staNos = staDescService.queryOutStaNosByLocNo(locDetl1.getLocNo(), ioType); |
| | | locDto.setStaNos(staNos); |
| | | locDtos.add(locDto); |
| | | exist.add(locDetl1.getLocNo()); |
| | | // 剩余待出数量递减 |
| | | issued = issued - locDetl1.getAnfme(); |
| | | } else { |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | @TableField("ctn_no") |
| | | private String ctnNo; |
| | | |
| | | @ApiModelProperty(value= "组") |
| | | @TableField("group1") |
| | | private Integer group1; |
| | | |
| | | /** |
| | | * 深浅库位排号 |
| | | * 1.最深库位 |
| | | * 从小到大,越大的库位越浅 |
| | | */ |
| | | @ApiModelProperty(value= "库位属性") |
| | | @TableField("loc_attribute") |
| | | private Integer locAttribute; |
| | | |
| | | public String getWhsType$(){ |
| | | BasWhsService service = SpringUtils.getBean(BasWhsService.class); |
| | | BasWhs basWhs = service.selectById(this.whsType); |
| | |
| | | |
| | | List<Integer> queryOutStaNosByLocNo(String locNo, Integer typeNo); |
| | | |
| | | StaDesc queryCrnStn(Integer typeNo, Integer crnNo, Integer stnNo); |
| | | |
| | | StaDesc queryCrnStnAuto(Integer typeNo, Integer crnNo, Integer stnNo); |
| | | StaDesc queryCrnStn(Integer typeNo, Integer stnNo); |
| | | |
| | | StaDesc queryCrnStn(Integer crnNo); |
| | | |
| | |
| | | } |
| | | |
| | | @Override |
| | | public StaDesc queryCrnStn(Integer typeNo, Integer crnNo, Integer stnNo) { |
| | | public StaDesc queryCrnStn(Integer typeNo, Integer stnNo) { |
| | | Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>() |
| | | .eq("type_no", typeNo) |
| | | .eq("stn_no", stnNo) |
| | | .eq("crn_no", crnNo); |
| | | .eq("stn_no", stnNo); |
| | | StaDesc staDesc = this.selectOne(wrapper); |
| | | if (staDesc == null) { |
| | | throw new CoolException("出库路径不存在"); |
| | | } |
| | | return staDesc; |
| | | } |
| | | |
| | | @Override |
| | | public StaDesc queryCrnStnAuto(Integer typeNo, Integer crnNo, Integer stnNo) { |
| | | Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>() |
| | | .eq("type_no", typeNo) |
| | | .eq("stn_no", stnNo) |
| | | .eq("crn_no", crnNo); |
| | | StaDesc staDesc = this.selectOne(wrapper); |
| | | if (staDesc == null) { |
| | | wrapper = new EntityWrapper<StaDesc>() |
| | | .eq("type_no", typeNo) |
| | | .eq("crn_no", crnNo); |
| | | List<StaDesc> staDescs = this.selectList(wrapper); |
| | | if (Cools.isEmpty(staDescs)) { |
| | | throw new CoolException("出库路径不存在"); |
| | | } |
| | | // todo:luxiaotao |
| | | return staDescs.get(0); |
| | | } |
| | | return staDesc; |
| | | } |
| | |
| | | Integer outSta = staNo.getDevNo(); |
| | | |
| | | // 获取路径 |
| | | StaDesc staDesc = staDescService.queryCrnStn(ioType, locMast.getCrnNo(), outSta); |
| | | StaDesc staDesc = staDescService.queryCrnStn(ioType, outSta); |
| | | // 生成工作号 |
| | | int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType)); |
| | | // 生成工作档 |
| | |
| | | LocMast locMast = locMastService.selectById(taskDto.getLocNo()); |
| | | // 获取路径 |
| | | int ioType = taskDto.isAll() ? 101 : 103; |
| | | StaDesc staDesc = staDescService.queryCrnStnAuto(ioType, locMast.getCrnNo(), staNo.getDevNo()); |
| | | StaDesc staDesc = staDescService.queryCrnStn(ioType, staNo.getDevNo()); |
| | | // 生成工作号 |
| | | int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType)); |
| | | int yz=staDesc.getStnNo()*10+Integer.valueOf(taskDto.getLocNo().substring(6)); |
| | |
| | | wrkMast.setStaNo(param.getOutSite()); // 目标站 |
| | | wrkMast.setCrnNo(locMast.getCrnNo()); |
| | | wrkMast.setSourceLocNo(locNo); // 源库位 |
| | | wrkMast.setIoPri(10.0+locMast.getLocAttribute());//优先级 |
| | | wrkMast.setIoPri(10.0D);//优先级 |
| | | wrkMast.setFullPlt("N"); // 满板:Y |
| | | wrkMast.setPicking("N"); // 拣料 |
| | | wrkMast.setExitMk("N"); // 退出 |
| | |
| | | |
| | | # 下位机配置 |
| | | wcs-slave: |
| | | locGroupAsc: [[5,4,3,2,1],[7],[8],[10,11],[12],[14],[15],[17]] |
| | | locGroupAsc: [[1],[3,4,5,6],[10,9,8,7],[12,13],[15,14],[17,18,19,20,21,22,23],[2],[11],[16]] |
| | | |
| | | #wcs对接 |
| | | wcs: |
| | |
| | | where 1=1 |
| | | and b.loc_sts = 'F' |
| | | and a.matnr = #{matnr} |
| | | and b.loc_attribute = 1 |
| | | <!-- <choose>--> |
| | | <!-- <when test="batch != null and batch != ''">--> |
| | | <!-- and a.batch = #{batch}--> |
| | | <!-- </when>--> |
| | | <!-- <otherwise>--> |
| | | <!-- and (a.batch IS NULL OR a.batch = '')--> |
| | | <!-- </otherwise>--> |
| | | <!-- </choose>--> |
| | | <if test="batch != null and batch != ''"> |
| | | and a.batch = #{batch} |
| | | </if> |
| | | <if test="orderNo != null and orderNo != ''"> |
| | | and a.order_no = #{orderNo} |
| | | </if> |
| | | |
| | | <if test="locNos != null and locNos.size > 0"> |
| | | and b.loc_no not in |
| | | <foreach item="item" collection="locNos" index="index" separator="," open="(" close=")"> |
| | | #{item} |
| | | </foreach> |
| | | </if> |
| | | |
| | | order by |
| | | DATEPART(yyyy,a.modi_time),DATEPART(mm,a.modi_time),DATEPART(dd,a.modi_time), a.anfme |
| | | desc, |
| | | NEWID(), |
| | | case |
| | | when (left(a.loc_no, 2) = '01') then 0 |
| | | when (left(a.loc_no, 2) = '02') then 1 |
| | | when (left(a.loc_no, 2) = '03') then 1 |
| | | when (left(a.loc_no, 2) = '04') then 0 |
| | | when (left(a.loc_no, 2) = '05') then 0 |
| | | when (left(a.loc_no, 2) = '06') then 1 |
| | | when (left(a.loc_no, 2) = '07') then 1 |
| | | when (left(a.loc_no, 2) = '08') then 0 |
| | | when (left(a.loc_no, 2) = '09') then 0 |
| | | when (left(a.loc_no, 2) = '10') then 1 |
| | | when (left(a.loc_no, 2) = '11') then 1 |
| | | when (left(a.loc_no, 2) = '12') then 0 |
| | | when (left(a.loc_no, 2) = '13') then 0 |
| | | when (left(a.loc_no, 2) = '14') then 1 |
| | | when (left(a.loc_no, 2) = '15') then 1 |
| | | when (left(a.loc_no, 2) = '16') then 0 |
| | | when (left(a.loc_no, 2) = '17') then 0 |
| | | when (left(a.loc_no, 2) = '18') then 1 |
| | | when (left(a.loc_no, 2) = '19') then 1 |
| | | when (left(a.loc_no, 2) = '20') then 0 |
| | | when (left(a.loc_no, 2) = '21') then 0 |
| | | when (left(a.loc_no, 2) = '22') then 1 |
| | | when (left(a.loc_no, 2) = '23') then 1 |
| | | when (left(a.loc_no, 2) = '24') then 0 |
| | | when (left(a.loc_no, 2) = '25') then 0 |
| | | when (left(a.loc_no, 2) = '26') then 1 |
| | | when (left(a.loc_no, 2) = '27') then 1 |
| | | when (left(a.loc_no, 2) = '28') then 0 |
| | | when (left(a.loc_no, 2) = '29') then 0 |
| | | when (left(a.loc_no, 2) = '30') then 1 |
| | | when (left(a.loc_no, 2) = '31') then 1 |
| | | when (left(a.loc_no, 2) = '32') then 0 |
| | | when (left(a.loc_no, 2) = '33') then 0 |
| | | when (left(a.loc_no, 2) = '34') then 1 |
| | | when (left(a.loc_no, 2) = '35') then 1 |
| | | when (left(a.loc_no, 2) = '36') then 0 |
| | | when (left(a.loc_no, 2) = '37') then 0 |
| | | when (left(a.loc_no, 2) = '38') then 1 |
| | | when (left(a.loc_no, 2) = '39') then 1 |
| | | when (left(a.loc_no, 2) = '40') then 0 |
| | | when (left(a.loc_no, 2) = '41') then 0 |
| | | when (left(a.loc_no, 2) = '42') then 1 |
| | | when (left(a.loc_no, 2) = '43') then 1 |
| | | when (left(a.loc_no, 2) = '44') then 0 |
| | | when (left(a.loc_no, 2) = '45') then 0 |
| | | when (left(a.loc_no, 2) = '46') then 1 |
| | | when (left(a.loc_no, 2) = '47') then 1 |
| | | when (left(a.loc_no, 2) = '48') then 0 |
| | | else 0 |
| | | end |
| | | DATEPART(yyyy,a.appe_time),DATEPART(mm,a.appe_time),DATEPART(dd,a.appe_time), a.anfme |
| | | desc |
| | | </select> |
| | | |
| | |
| | | <result column="mk" property="mk" /> |
| | | <result column="barcode" property="barcode" /> |
| | | <result column="ctn_no" property="ctnNo" /> |
| | | <result column="group1" property="group1" /> |
| | | <result column="loc_attribute" property="locAttribute" /> |
| | | |
| | | </resultMap> |
| | | |
| | |
| | | |
| | | </resultMap> |
| | | |
| | | <select id="queryOutStaNosByLocNo" resultType="java.lang.Integer"> |
| | | <select id="queryOutStaNosByLocNo" resultType="integer"> |
| | | select |
| | | distinct asd.stn_no |
| | | from asr_sta_desc asd |
| | | left join asr_loc_mast alm on asd.crn_no = alm.crn_no |
| | | where 1=1 |
| | | and alm.loc_no = #{locNo} |
| | | <if test="typeNo != null and typeNo !=''"> |
| | | and asd.type_no = #{typeNo} |
| | | </if> |
| | |
| | | {field: 'matnr', align: 'center',title: '商品编号', sort:true} |
| | | ,{field: 'maktx', align: 'center',title: '商品名称', sort:true} |
| | | ,{field: 'orderNo', align: 'center',title: '单据编号', hide: false} |
| | | ,{field: 'batch', align: 'center',title: '合同号', width: 300, sort:true} |
| | | ,{field: 'batch', align: 'center',title: '批号', width: 300, sort:true} |
| | | ,{field: 'anfme', align: 'center',title: '数量'} |
| | | ,{field: 'zpallet', align: 'center',title: '托盘条码'} |
| | | ,{field: 'specs', align: 'center',title: '配置'} |