自动化立体仓库 - WMS系统
zyx
2024-04-16 45d602719964509214d06ec5173f23e5307d5dfe
src/main/java/com/zy/asrs/controller/AgvMobileController.java
@@ -6,6 +6,7 @@
import com.core.common.R;
import com.zy.asrs.entity.AgvBasDevp;
import com.zy.asrs.entity.AgvLocDetl;
import com.zy.asrs.entity.AgvLocMast;
import com.zy.asrs.entity.param.AgvMobileStartPakin;
import com.zy.asrs.entity.param.AgvMobileStartParam;
import com.zy.asrs.entity.param.CombParam;
@@ -19,6 +20,7 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -172,8 +174,11 @@
        String orderNo = params.get("orderNo");
        String threeCode = params.get("threeCode");
        String matnr = params.get("matnr");
        Wrapper<AgvLocDetl> wrapper = new EntityWrapper<AgvLocDetl>().eq("order_no", orderNo);
        Wrapper<AgvLocDetl> wrapper = new EntityWrapper<AgvLocDetl>().eq("matnr", matnr);
//        wrapper.eq("orderNo",orderNo);
        wrapper = Cools.isEmpty(threeCode) ? wrapper.isNull("three_code") : wrapper.eq("three_code",threeCode);
@@ -182,5 +187,139 @@
        return R.ok(agvLocDetls);
    }
    /*
    盘点接口
     */
    @PostMapping("/check/detl/v1")
    public R checkLocDetl(@RequestBody HashMap<String,String> param){
        String locNo = param.get("locNo");
        String containerCode = param.get("containerCode");
        List<AgvLocDetl> listByLocNo = null;
        List<AgvLocDetl> listByContainerCode = null;
        if(!Cools.isEmpty(locNo)){
            listByLocNo = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", locNo));
        }
        if(!Cools.isEmpty(locNo)){
            listByContainerCode = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("supp_code", containerCode));
        }
        Map<String,Object> result = new HashMap<String,Object>();
        result.put("locNo",listByLocNo);
        result.put("containerCode",listByContainerCode);
        return R.ok(result);
    }
    /*
    盘点库位错乱维护接口
     */
    @PostMapping("/update/detl/v1")
    public R updateLocDetlLocNo(@RequestBody HashMap<String,String> param){
        String locNo = param.get("locNo");
        String containerCode = param.get("containerCode");
        if(Cools.isEmpty(locNo) || Cools.isEmpty(containerCode)){
            return R.error("参数不全");
        }
        List<AgvLocDetl> listByLocNo = null;
        List<AgvLocDetl> listByContainerCode = null;
        if(!Cools.isEmpty(locNo)){
            listByLocNo = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", locNo));
        }
        if(!Cools.isEmpty(locNo)){
            listByContainerCode = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("supp_code", containerCode));
        }
        AgvLocMast agvLocMastByContainerCode = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("barcode", containerCode));
        AgvLocMast agvLocMastByLocNo = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", locNo));
        if(Cools.eq("F",agvLocMastByContainerCode.getLocSts())
                || Cools.eq("D",agvLocMastByContainerCode.getLocSts())
                || Cools.eq("F",agvLocMastByLocNo.getLocSts())
                || Cools.eq("D",agvLocMastByLocNo.getLocSts())){
            return R.error("库位状态不为F或者D,无法维护");
        }
        //库位信息为空 货架信息不为空
        if(Cools.isEmpty(listByLocNo) && !Cools.isEmpty(listByContainerCode)){
            //更新货架信息的库位为当前库位
            listByContainerCode.forEach(agvLocDetl -> {
                agvLocDetl.setLocNo(locNo);
                agvLocDetlService.updateLocNo(locNo,agvLocDetl);
            });
            agvLocMastByLocNo.setLocSts("F");
            agvLocMastService.updateById(agvLocMastByLocNo);
            if(!Cools.isEmpty(agvLocMastByContainerCode) && Cools.eq("D",agvLocMastByContainerCode.getLocSts())){
                agvLocMastByContainerCode.setLocSts("D");
                agvLocMastService.updateById(agvLocMastByContainerCode);
            }
            return R.ok("维护成功");
        }
        //库位信息不为空 货架信息为空
        if(!Cools.isEmpty(listByLocNo) && Cools.isEmpty(listByContainerCode)){
            //更新货架信息的库位为当前库位
            listByLocNo.forEach(agvLocDetl -> {
                agvLocDetl.setLocNo(agvLocMastByContainerCode.getLocNo());
                agvLocDetlService.updateLocNo(locNo,agvLocDetl);
            });
            agvLocMastByContainerCode.setLocSts("F");
            agvLocMastService.updateById(agvLocMastByContainerCode);
            agvLocMastByLocNo.setLocSts("D");
            agvLocMastService.updateById(agvLocMastByLocNo);
            return R.ok("维护成功");
        }
        if((listByLocNo == null && listByContainerCode == null) || listByLocNo.equals(listByContainerCode)){
            return R.ok("该库位与容器库存一致,无需维护");
        }
        listByContainerCode.forEach(agvLocDetl -> {
            agvLocDetl.setLocNo(agvLocMastByLocNo.getLocNo());
            agvLocDetlService.updateLocNo(locNo,agvLocDetl);
        });
        listByLocNo.forEach(agvLocDetl -> {
            agvLocDetl.setLocNo(agvLocMastByContainerCode.getLocNo());
            agvLocDetlService.updateLocNo(locNo,agvLocDetl);
        });
        return R.ok("维护成功");
    }
    public static void main(String[] args) {
        List<AgvLocDetl> agvLocDetls1 = new ArrayList<>();
        List<AgvLocDetl> agvLocDetls2 = new ArrayList<>();
        AgvLocDetl agvLocDetl1 = new AgvLocDetl();
        agvLocDetl1.setLocNo("AA");
        AgvLocDetl agvLocDetl2 = new AgvLocDetl();
        agvLocDetl2.setLocNo("AA");
        agvLocDetls1.add(agvLocDetl1);
        agvLocDetls2.add(agvLocDetl2);
        System.out.println(agvLocDetls1.equals(agvLocDetls2));
        List<AgvLocDetl> agvLocDetls22 = null;
        System.out.println(agvLocDetls22.equals(agvLocDetls2));
    }
}