package com.zy.common.web; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.Wrapper; import com.core.common.Cools; import com.zy.asrs.entity.WaitPakin; import com.zy.asrs.service.OutStockService; import com.zy.asrs.service.WaitPakinService; import com.zy.common.entity.InterData; import com.zy.common.service.erp.entity.OutStockBillEntry; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; import java.math.BigDecimal; import java.util.List; /** * Created by vincent on 2020/10/30 */ @Slf4j @RestController public class WcsController { @Autowired private WaitPakinService waitPakinService; @Autowired private OutStockService outStockService; @PostMapping("/inout/cancel/auth/v1") @ResponseBody public JSON getLocNo(@RequestBody String param) throws Exception { log.info("ERP取消任务:"+ param); JSONObject jsonObject = JSONObject.parseObject(param);//将参数转化为JSON格式 String inter = jsonObject.getString("data"); List list = JSONArray.parseArray(inter, InterData.class);//获取参数集合 JSONObject jsonObject1 = new JSONObject(); JSONArray jsonArray = new JSONArray(); for (InterData interData : list) { //原材料入庫 if ((interData.getIoType() == 1 && interData.getMatType() == 1)) { //查询对应入库通知档信息 Wrapper wrapper = new EntityWrapper().eq("supplier", interData.getFBillNo()).eq("matnr", interData.getFnumber()); WaitPakin waitPakin = waitPakinService.selectOne(wrapper); if(Cools.isEmpty(waitPakin)){ JSONObject object = new JSONObject(); object.put("FInterID", interData.getFInterID()); object.put("Fnumber", interData.getFnumber()); object.put("code", 500); object.put("msg", "单据不存在或单据已被删除"); jsonArray.add(object); continue; } if (Cools.isEmpty(waitPakin)) { JSONObject object = new JSONObject(); object.put("FInterID", interData.getFInterID()); object.put("Fnumber", interData.getFnumber()); object.put("code", 500); object.put("msg", "单据不存在或单据已被删除"); jsonArray.add(object); continue; } //判断是否有入库动作 "N"没有 “Y”有 // interData.getFQty().compareTo(waitPakin.getAnfme()) Double userQty = waitPakin.getNqty() - waitPakin.getAnfme(); //通知入库量 - 等待入库量 = 已完成入库数量; 修改数量不能小于已完成数量 if (waitPakin.getIoStatus().equals("N") && userQty <= interData.getFQty().doubleValue() ) { //判断传入的数量是否为0来执行删除或者修改 if (interData.getFQty().compareTo(BigDecimal.ZERO) == 0) { waitPakinService.delete(wrapper); JSONObject object = new JSONObject(); object.put("Fnumber", interData.getFnumber()); object.put("FInterID", interData.getFInterID()); object.put("code", 200); object.put("msg", "删除成功"); jsonArray.add(object); } else { // waitPakin.setAnfme(interData.getFQty().doubleValue()); waitPakin.setAnfme(interData.getFQty().doubleValue() - userQty); waitPakinService.update(waitPakin, wrapper); JSONObject object = new JSONObject(); object.put("Fnumber", interData.getFnumber()); object.put("FInterID", interData.getFInterID()); object.put("code", 200); object.put("msg", "修改成功"); jsonArray.add(object); } } else { JSONObject object = new JSONObject(); object.put("FInterID", interData.getFInterID()); object.put("Fnumber", interData.getFnumber()); object.put("code", 500); object.put("msg", "已入库数量大于待修改量,无法修改"); jsonArray.add(object); } } //成品入庫 if (interData.getIoType() == 2 && interData.getMatType() == 2) { //查询对应入库通知档信息 Wrapper wrapper = new EntityWrapper().eq("supplier", interData.getFBillNo()).eq("matnr", interData.getFnumber()); WaitPakin waitPakin = waitPakinService.selectOne(wrapper); if(Cools.isEmpty(waitPakin)){ JSONObject object = new JSONObject(); object.put("FInterID", interData.getFInterID()); object.put("Fnumber", interData.getFnumber()); object.put("code", 500); object.put("msg", "单据不存在或单据已被删除"); jsonArray.add(object); continue; } if (Cools.isEmpty(waitPakin)) { JSONObject object = new JSONObject(); object.put("FInterID", interData.getFInterID()); object.put("Fnumber", interData.getFnumber()); object.put("code", 500); object.put("msg", "单据不存在或单据已被删除"); jsonArray.add(object); continue; } WaitPakin one = waitPakinService.selectOne(new EntityWrapper() .eq("supplier", interData.getFBillNo()) .eq("matnr", interData.getFnumber()) .isNotNull("zpallet")); //判断是否有入库动作 "N"没有 “Y”有 if (waitPakin.getIoStatus().equals("N") && Cools.isEmpty(one)) { //判断传入的数量是否为0来执行删除或者修改 if (interData.getFQty().compareTo(BigDecimal.ZERO) == 0) { waitPakinService.delete(wrapper); JSONObject object = new JSONObject(); object.put("Fnumber", interData.getFnumber()); object.put("FInterID", interData.getFInterID()); object.put("code", 200); object.put("msg", "删除成功"); jsonArray.add(object); } else { waitPakin.setAnfme(interData.getFQty().doubleValue()); waitPakinService.update(waitPakin, wrapper); JSONObject object = new JSONObject(); object.put("Fnumber", interData.getFnumber()); object.put("FInterID", interData.getFInterID()); object.put("code", 200); object.put("msg", "修改成功"); jsonArray.add(object); } } else { JSONObject object = new JSONObject(); object.put("FInterID", interData.getFInterID()); object.put("Fnumber", interData.getFnumber()); object.put("code", 500); object.put("msg", "已在入库中,无法取消"); jsonArray.add(object); } } //成品出庫 if (interData.getIoType() == 3) { Wrapper wrapper1 = new EntityWrapper().eq("FInterID", interData.getFInterID()).and().eq("Fnumber", interData.getFnumber()); OutStockBillEntry outStockBillEntry = outStockService.selectOne(wrapper1); if (Cools.isEmpty(outStockBillEntry)) { JSONObject object = new JSONObject(); object.put("FInterID", interData.getFInterID()); object.put("Fnumber", interData.getFnumber()); object.put("code", 500); object.put("msg", "单据不存在或单据已被删除"); jsonArray.add(object); continue; } //判断出库数量回传字段和出库数量字段是否为0 if (outStockBillEntry.getFAuxCommitQty().compareTo(BigDecimal.ZERO) == 0 && outStockBillEntry.getFAmount().compareTo(BigDecimal.ZERO) == 0) { //判断传入的数量是否为0来执行删除或者修改 if (interData.getFQty().compareTo(BigDecimal.ZERO) == 0) { outStockService.delete(wrapper1); JSONObject object = new JSONObject(); object.put("Fnumber", interData.getFnumber()); object.put("FInterID", interData.getFInterID()); object.put("code", 200); object.put("msg", "删除成功"); jsonArray.add(object); } else { outStockBillEntry.setFAuxQty(interData.getFQty()); outStockBillEntry.setFQty(interData.getFQty()); outStockService.update(outStockBillEntry, wrapper1); JSONObject object = new JSONObject(); object.put("Fnumber", interData.getFnumber()); object.put("FInterID", interData.getFInterID()); object.put("code", 200); object.put("msg", "修改成功"); jsonArray.add(object); } } else { if (outStockBillEntry.getFAuxCommitQty().compareTo(BigDecimal.ZERO) > 0) { JSONObject object = new JSONObject(); object.put("Fnumber", interData.getFnumber()); object.put("FInterID", interData.getFInterID()); object.put("code", 500); object.put("msg", "已在出库中,无法取消"); jsonArray.add(object); } } } if (Cools.isEmpty(jsonArray)) { JSONObject object = new JSONObject(); object.put("Fnumber", interData.getFnumber()); object.put("FInterID", interData.getFInterID()); object.put("code", 500); object.put("msg", "单据有错误,请核对"); jsonArray.add(object); } } jsonObject1.put("data", jsonArray); log.info("ERP取消任务--WMS返回结果===>>"+ jsonObject1.toJSONString()); return jsonObject1; } // if (Cools.isEmpty(param.getIoType())) { // return R.error("入出库类型不能为空"); // } // if (Cools.isEmpty(param.getSourceStaNo())) { // return R.error("源站编号不能为空"); // } // List waitPakins = new ArrayList(); // if (param.getIoType() == 1) { // if (Cools.isEmpty(param.getBarcode())) { // return R.error("条码不能为空"); // } //// waitPakins = waitPakinService.selectList(new EntityWrapper().eq("zpallet", param.getBarcode())); //// if (Cools.isEmpty(waitPakins)) { //// return R.error("条码数据错误"); //// } // int countLoc = locDetlService.selectCount(new EntityWrapper().eq("zpallet",param.getBarcode())); // int countWrk = wrkDetlService.selectCount(new EntityWrapper().eq("zpallet",param.getBarcode())); // if (countLoc > 0 || countWrk > 0) { // return R.error("工作档/库存条码数据已存在"); // } // } // if (Cools.isEmpty(param.getLocType1())){ // return R.error("高低检测信号不能为空"); // } // // LocTypeDto locTypeDto = new LocTypeDto(); // locTypeDto.setLocType1(param.getLocType1()); // // StartupDto dto = null; // switch (param.getIoType()) { // case 1: // WaitPakin waitPakin = new WaitPakin(); // waitPakin.setMatnr(param.getBarcode()); // waitPakin.setAnfme(1D); // waitPakins.add(waitPakin); // dto = startupFullPutStore(param.getSourceStaNo(), param.getBarcode(), locTypeDto, waitPakins); // break; // case 10: // dto = emptyPlateIn(param.getSourceStaNo(), locTypeDto); // break; // default: // break; // } }