diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/controller/ToErpApiController.java b/ruoyi-admin/src/main/java/com/ruoyi/api/controller/ToErpApiController.java index f0a6895..da955af 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/controller/ToErpApiController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/controller/ToErpApiController.java @@ -28,34 +28,12 @@ public class ToErpApiController { @Autowired private IToErpService toErpService; - /** - * 接收物料信息 - */ - @GetMapping("/receiveMaterial") - public AjaxResult receiveMaterial(@RequestBody BasProduct basProduct) { - return toErpService.receiveMaterial(basProduct); - } - /** - * 接收客户信息 - */ - @GetMapping("/receiveCustomer") - public AjaxResult receiveCustomer(@RequestBody BasCustomer basProduct) { - return toErpService.receiveCustomer(basProduct); - } /** - * 接收供应商信息 - */ - @GetMapping("/receiveSupplier") - public AjaxResult receiveSupplier(@RequestBody BasSupplier basSupplier) { - return toErpService.receiveSupplier(basSupplier); - } - - /** - * 生成调拨单 + * 回传其他出入库单 */ @Scheduled(fixedDelay = 1500) - public void saveTransferBill() { - toErpService.saveTransferBill(); + public void callbackTransferBill() { + toErpService.callbackTransferBill(); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/controller/ToWmsApiController.java b/ruoyi-admin/src/main/java/com/ruoyi/api/controller/ToWmsApiController.java index 57762a3..c0c06a3 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/controller/ToWmsApiController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/controller/ToWmsApiController.java @@ -1,6 +1,7 @@ package com.ruoyi.api.controller; import cn.hutool.json.JSONUtil; +import com.ruoyi.api.domain.ErpProduct; import com.ruoyi.api.domain.ReMaterialParam; import com.ruoyi.api.domain.RequestEnter; import com.ruoyi.api.domain.WmsJobRequest; @@ -129,29 +130,33 @@ public class ToWmsApiController { /** - * 修改物料管理 + * 接收物料 */ - @Log(title = "物料管理", businessType = BusinessType.UPDATE) - @PutMapping("/updateProduct") - public AjaxResult updateProduct(@RequestBody BasProduct basProduct) + @Log(title = "物料管理", businessType = BusinessType.INSERT) + @PutMapping("/receiveProduct") + public AjaxResult receiveProduct(@RequestBody ErpProduct erpProduct) { - if (basProductService.updateBasProduct(basProduct)>0){ - return AjaxResult.success(basProduct.getProductId()); - } - return AjaxResult.error(); + return toWmsService.receiveProduct(erpProduct); } /** * 修改物料管理 */ @Log(title = "物料管理", businessType = BusinessType.UPDATE) - @PutMapping("/InvalidProduct") - public AjaxResult InvalidProduct(@RequestBody BasProduct basProduct) + @PutMapping("/updateProduct") + public AjaxResult updateProduct(@RequestBody ErpProduct erpProduct) { - if (basProductService.updateBasProduct(basProduct)>0){ - return AjaxResult.success(basProduct.getProductId()); - } - return AjaxResult.error(); + return toWmsService.updateProduct(erpProduct); + } + + /** + * 作废物料 + */ + @Log(title = "物料管理", businessType = BusinessType.UPDATE) + @PutMapping("/InvalidProduct") + public AjaxResult InvalidProduct(@RequestBody ErpProduct erpProduct) + { + return toWmsService.InvalidProduct(erpProduct); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/domain/ErpProduct.java b/ruoyi-admin/src/main/java/com/ruoyi/api/domain/ErpProduct.java new file mode 100644 index 0000000..6e4855e --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/domain/ErpProduct.java @@ -0,0 +1,20 @@ +package com.ruoyi.api.domain; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class ErpProduct { + private String sys_MainId; + private String ITEM_CODE; + private String ITEM_NAME; + private String ITEM_SPECIFICATION; + private String LENTH; + private String WIDTH; + private String HEIGTH; + private String UNIT_CODE; + private String UNIT_NAME; +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/service/IToErpService.java b/ruoyi-admin/src/main/java/com/ruoyi/api/service/IToErpService.java index aa76ea9..551c00c 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/service/IToErpService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/service/IToErpService.java @@ -13,13 +13,16 @@ import java.util.Map; public interface IToErpService { - Map saveTransferBill(); + void callbackTransferBill(); - Map billCompletedCallBack(); AjaxResult receiveMaterial(BasProduct basProduct); AjaxResult receiveCustomer(BasCustomer basProduct); AjaxResult receiveSupplier(BasSupplier basSupplier); + + AjaxResult createWorkshopInboundOrder(); + + AjaxResult createOtherInOutboundOrder(); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/service/IToWmsService.java b/ruoyi-admin/src/main/java/com/ruoyi/api/service/IToWmsService.java index e7e2398..f41f6da 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/service/IToWmsService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/service/IToWmsService.java @@ -1,5 +1,6 @@ package com.ruoyi.api.service; +import com.ruoyi.api.domain.ErpProduct; import com.ruoyi.api.domain.ReMaterialParam; import com.ruoyi.api.domain.RequestEnter; import com.ruoyi.api.domain.WmsJobRequest; @@ -43,4 +44,19 @@ public interface IToWmsService { * 获取入库作业 */ AjaxResult requestEnterByTrayCodeAndEntranceId(RequestEnter requestEnter); + + /** + * 接收物料 + */ + AjaxResult receiveProduct(ErpProduct erpProduct); + + /** + * 修改物料 + */ + AjaxResult updateProduct(ErpProduct erpProduct); + + /** + * 作废物料 + */ + AjaxResult InvalidProduct(ErpProduct erpProduct); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToErpServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToErpServiceImpl.java index b99bbb2..9617cb1 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToErpServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToErpServiceImpl.java @@ -1,5 +1,6 @@ package com.ruoyi.api.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjUtil; import cn.hutool.http.HttpUtil; import com.ruoyi.api.mapper.JobStatisticsMapper; @@ -14,15 +15,14 @@ import com.ruoyi.bas.BasSupplier.service.IBasSupplierService; import com.ruoyi.bas.cargoSpace.mapper.BasCargoSpaceMapper; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.utils.DateUtils; +import com.ruoyi.in.erp.domain.TransferBillCallback; +import com.ruoyi.in.erp.service.ITransferBillCallbackService; import com.ruoyi.job.mydojob.domain.MydoJob; import com.ruoyi.job.mydojob.mapper.MydoJobMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; /** * 作业统计 Service 实现 @@ -38,20 +38,24 @@ public class ToErpServiceImpl implements IToErpService { @Autowired private IBasCustomerService basCustomerService; + @Autowired + private ITransferBillCallbackService transferBillCallbackService; @Override - public Map saveTransferBill() { - HashMap map = new HashMap<>(); - map.put("code","200"); - return map; - } - - @Override - public Map billCompletedCallBack() { - HashMap map = new HashMap<>(); - map.put("code","200"); - return map; + public void callbackTransferBill() { + TransferBillCallback param = new TransferBillCallback(); + param.setStatus("0"); + List list = transferBillCallbackService.selectTransferBillCallbackList(param); + for (TransferBillCallback transferBillCallback : list) { + //todo 请求其他出入库单回传接口 + AjaxResult otherInOutboundOrder = createOtherInOutboundOrder(); + if (otherInOutboundOrder.isSuccess()){ + transferBillCallback.setStatus("1"); + transferBillCallback.setFinishTime(DateUtil.formatDateTime(new Date())); + transferBillCallbackService.updateTransferBillCallback(transferBillCallback); + } + } } @Override @@ -89,4 +93,14 @@ public class ToErpServiceImpl implements IToErpService { } return AjaxResult.success(); } + + @Override + public AjaxResult createWorkshopInboundOrder() { + return AjaxResult.success(); + } + + @Override + public AjaxResult createOtherInOutboundOrder() { + return AjaxResult.success(); + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToWmsServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToWmsServiceImpl.java index d8657d0..a625fe0 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToWmsServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToWmsServiceImpl.java @@ -5,10 +5,7 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjUtil; import cn.hutool.core.util.StrUtil; -import com.ruoyi.api.domain.ReMaterialParam; -import com.ruoyi.api.domain.RequestEnter; -import com.ruoyi.api.domain.RequestEnterResponse; -import com.ruoyi.api.domain.WmsJobRequest; +import com.ruoyi.api.domain.*; import com.ruoyi.api.service.IToErpService; import com.ruoyi.api.service.IToWmsService; import com.ruoyi.bas.BasProduct.domain.BasProduct; @@ -135,7 +132,7 @@ public class ToWmsServiceImpl implements IToWmsService { BasProduct basProduct = basProducts.get(0); - //根据包装方式 主要包装方式 描述 长 宽 高 包装材积 + //todo 根据包装方式 主要包装方式 描述 长 宽 高 包装材积 int size = getSize(basProduct); //超大托盘不处理 直接返回 @@ -152,6 +149,8 @@ public class ToWmsServiceImpl implements IToWmsService { String inOrOutType = null; String inStockId = null; String inStockDetailId = null; + //创建作业标准 + boolean flag = false; if ("1".equals(requestEnter.getFloor())) { //一楼入库 其它入库 和 退料入库 存在单据,需要修改单据数量 InStockin inStockinParam = new InStockin(); @@ -179,100 +178,95 @@ public class ToWmsServiceImpl implements IToWmsService { inStockinDetail.setScanNum(Convert.toStr(Convert.toBigDecimal(inStockinDetail.getScanNum()).add(Convert.toBigDecimal(1)))); inStockinDetailService.updateInStockinDetail(inStockinDetail); - } else { + flag = true; + } else if ("2".equals(requestEnter.getFloor())){ + inOrOutType = "1"; - } - - - //生成作业 - MydoJob mydoJob = new MydoJob(); - mydoJob.setStatus("1"); - mydoJob.setInOrOut(inOrOutType); - mydoJob.setExecutionPhase("1"); - mydoJob.setTrayCode(basJobIdService.getJobId("TP")); - mydoJob.setWarehouseId("01"); - mydoJob.setRoadwayId(getRoadway(size)); - mydoJob.setLineId(erpBill); - BasRoadway basRoadway = basRoadwayService.selectBasRoadwayById(mydoJob.getRoadwayId()); - if ("1".equals(requestEnter.getFloor())) { - if ("Y".equals(basRoadway.getInLocked())) { - return new AjaxResult(6, "巷道已锁"); - } - } else { - if ("Y".equals(basRoadway.getInLocked2())) { - return new AjaxResult(6, "巷道已锁"); + //todo 创建工艺入库单 + AjaxResult workshopInboundOrder = toErpService.createWorkshopInboundOrder(); + if (workshopInboundOrder.isSuccess()){ + flag = true; } } - //根据巷道查找货位 - BasCargoSpace basCargoSpaceParam = new BasCargoSpace(); - basCargoSpaceParam.setWarehouseId(mydoJob.getWarehouseId()); - basCargoSpaceParam.setRoadwayId(mydoJob.getRoadwayId()); - BasCargoSpace basCargoSpace = basCargoSpaceService.selectEmptyCargoSpaceByWarehouseId(basCargoSpaceParam); - if (ObjUtil.isNull(basCargoSpace)) { - return new AjaxResult(5, "没有货位"); - } - mydoJob.setCargoSpaceId(basCargoSpace.getCargoSpaceId()); - mydoJob.setEntranceId(requestEnter.getEntranceId()); - mydoJobService.insertMydoJob(mydoJob); - - //生成子作业 - MydoJobDetail mydoJobDetail = new MydoJobDetail(); - mydoJobDetail.setJobDetailId(mydoJob.getJobId() + "-1"); - mydoJobDetail.setJobId(mydoJob.getJobId()); - mydoJobDetail.setCreateTime(new Date()); - mydoJobDetail.setProductGuid(basProduct.getProductGuid()); - mydoJobDetail.setProductId(basProduct.getProductId()); - mydoJobDetail.setInQuantity("1"); - mydoJobDetail.setSpare1(xh); - mydoJobDetail.setSpare2(nw); - mydoJobDetail.setSpare3(color); - mydoJobDetail.setSpare4(xlh); - mydoJobDetail.setSpare5(v); - mydoJobDetail.setSpare6(hz); - mydoJobDetail.setSpare7(ph); - mydoJobDetail.setSpare8(gw); - mydoJobDetail.setSpare9(fx); - mydoJobDetail.setUnit(jx); - mydoJobDetail.setSpec(basProduct.getSpec()); - mydoJobDetail.setInOrOutId(inStockId); - mydoJobDetail.setInOrOutDId(inStockDetailId); - mydoJobDetail.setStockinId(inStockId); - mydoJobDetailService.insertMydoJobDetail(mydoJobDetail); - - //修改货位状态 - basCargoSpace.setStatus("3"); - basCargoSpaceService.updateBasCargoSpace(basCargoSpace); - //type=1是手持机调用 - if (!"1".equals(requestEnter.getType())) { - mydoJob.setStatus("3"); - mydoJobService.updateMydoJob(mydoJob); - } - - if ("1".equals(mydoJob.getInOrOut())) { - //生成调拨单 - Map saveTransferBill = toErpService.saveTransferBill(); - if (!"200".equals(saveTransferBill.get("code"))) { - return AjaxResult.error("生成调拨单失败"); + if (flag){ + //生成作业 + MydoJob mydoJob = new MydoJob(); + mydoJob.setStatus("1"); + mydoJob.setInOrOut(inOrOutType); + mydoJob.setExecutionPhase("1"); + mydoJob.setTrayCode(basJobIdService.getJobId("TP")); + mydoJob.setWarehouseId("01"); + mydoJob.setRoadwayId(getRoadway(size)); + mydoJob.setLineId(erpBill); + BasRoadway basRoadway = basRoadwayService.selectBasRoadwayById(mydoJob.getRoadwayId()); + if ("1".equals(requestEnter.getFloor())) { + if ("Y".equals(basRoadway.getInLocked())) { + return new AjaxResult(6, "巷道已锁"); + } + } else { + if ("Y".equals(basRoadway.getInLocked2())) { + return new AjaxResult(6, "巷道已锁"); + } } - log.info("生成调拨单{}", saveTransferBill); - //存入调拨单数据 已生成 - TransferBillCallback transferBillCallback = new TransferBillCallback(); - transferBillCallback.setJobId(mydoJob.getJobId()); - transferBillCallback.setErpBill(erpBill); - transferBillCallback.setType("1"); - transferBillCallback.setStatus("0"); - transferBillCallbackService.insertTransferBillCallback(transferBillCallback); - } - //修改作业状态为正执行 - result.put("jobId", mydoJob.getJobId()); - result.put("taskNo", mydoJob.getTaskNo()); - result.put("cargoSpaceId", mydoJob.getCargoSpaceId()); - result.put("roadwayId", mydoJob.getRoadwayId()); - result.put("entranceId", mydoJob.getEntranceId()); - result.put("inOrOut", mydoJob.getInOrOut()); - return AjaxResult.success(result); + //根据巷道查找货位 + BasCargoSpace basCargoSpaceParam = new BasCargoSpace(); + basCargoSpaceParam.setWarehouseId(mydoJob.getWarehouseId()); + basCargoSpaceParam.setRoadwayId(mydoJob.getRoadwayId()); + BasCargoSpace basCargoSpace = basCargoSpaceService.selectEmptyCargoSpaceByWarehouseId(basCargoSpaceParam); + if (ObjUtil.isNull(basCargoSpace)) { + return new AjaxResult(5, "没有货位"); + } + mydoJob.setCargoSpaceId(basCargoSpace.getCargoSpaceId()); + mydoJob.setEntranceId(requestEnter.getEntranceId()); + mydoJob.setClassId(requestEnter.getFloor()); + mydoJobService.insertMydoJob(mydoJob); + + //生成子作业 + MydoJobDetail mydoJobDetail = new MydoJobDetail(); + mydoJobDetail.setJobDetailId(mydoJob.getJobId() + "-1"); + mydoJobDetail.setJobId(mydoJob.getJobId()); + mydoJobDetail.setCreateTime(new Date()); + mydoJobDetail.setProductGuid(basProduct.getProductGuid()); + mydoJobDetail.setProductId(basProduct.getProductId()); + mydoJobDetail.setInQuantity("1"); + mydoJobDetail.setSpare1(xh); + mydoJobDetail.setSpare2(nw); + mydoJobDetail.setSpare3(color); + mydoJobDetail.setSpare4(xlh); + mydoJobDetail.setSpare5(v); + mydoJobDetail.setSpare6(hz); + mydoJobDetail.setSpare7(ph); + mydoJobDetail.setSpare8(gw); + mydoJobDetail.setSpare9(fx); + mydoJobDetail.setUnit(jx); + mydoJobDetail.setSpec(basProduct.getSpec()); + mydoJobDetail.setInOrOutId(inStockId); + mydoJobDetail.setInOrOutDId(inStockDetailId); + mydoJobDetail.setStockinId(inStockId); + mydoJobDetailService.insertMydoJobDetail(mydoJobDetail); + + //修改货位状态 + basCargoSpace.setStatus("3"); + basCargoSpaceService.updateBasCargoSpace(basCargoSpace); + //type=1是手持机调用 + if (!"1".equals(requestEnter.getType())) { + mydoJob.setStatus("3"); + mydoJobService.updateMydoJob(mydoJob); + } + //修改作业状态为正执行 + result.put("jobId", mydoJob.getJobId()); + result.put("taskNo", mydoJob.getTaskNo()); + result.put("cargoSpaceId", mydoJob.getCargoSpaceId()); + result.put("roadwayId", mydoJob.getRoadwayId()); + result.put("entranceId", mydoJob.getEntranceId()); + result.put("inOrOut", mydoJob.getInOrOut()); + + return AjaxResult.success(result); + }else { + return new AjaxResult(7,"生成工艺单失败"); + } } private String getRoadway(int size) { @@ -284,7 +278,7 @@ public class ToWmsServiceImpl implements IToWmsService { } /** - * todo 根据包装方式 主要包装方式 描述 长 宽 高 包装材积获取大小 + * 根据包装方式 主要包装方式 描述 长 宽 高 包装材积获取大小 */ private int getSize(BasProduct basProduct) { String remark = basProduct.getRemark(); @@ -376,7 +370,7 @@ public class ToWmsServiceImpl implements IToWmsService { default: log.error("作业类型错误"); - return AjaxResult.error(MessageUtils.message("error.message12")); + return AjaxResult.error("作业类型错误"); } return AjaxResult.success(); } @@ -503,5 +497,58 @@ public class ToWmsServiceImpl implements IToWmsService { return AjaxResult.success(result); } + @Override + public AjaxResult receiveProduct(ErpProduct erpProduct) { + BasProduct basProduct = getBasProductByErpProduct(erpProduct); + BasProduct oldProduct = basProductService.selectBasProductByProductGuid(basProduct.getProductGuid()); + if (ObjUtil.isNull(oldProduct)){ + basProductService.insertBasProduct(basProduct); + return AjaxResult.success(); + } + return AjaxResult.error(basProduct.getProductGuid()+"物料已存在"); + } + + /** + * 获取物料信息 + * @param erpProduct + * @return + */ + private BasProduct getBasProductByErpProduct(ErpProduct erpProduct) { + BasProduct basProduct = new BasProduct(); + basProduct.setProductGuid(erpProduct.getSys_MainId()); + basProduct.setProductId(erpProduct.getSys_MainId()); + basProduct.setParentId(erpProduct.getITEM_CODE()); + basProduct.setProductName(erpProduct.getITEM_NAME()); + basProduct.setSpec(erpProduct.getITEM_SPECIFICATION()); + basProduct.setSpare36(erpProduct.getLENTH()); + basProduct.setSpare37(erpProduct.getWIDTH()); + basProduct.setSpare38(erpProduct.getHEIGTH()); + return basProduct; + } + + @Override + public AjaxResult updateProduct(ErpProduct erpProduct) { + BasProduct basProduct = getBasProductByErpProduct(erpProduct); + BasProduct oldProduct = basProductService.selectBasProductByProductGuid(basProduct.getProductGuid()); + if (ObjUtil.isNotNull(oldProduct)){ + basProductService.updateBasProduct(basProduct); + return AjaxResult.success(); + } + return AjaxResult.error(basProduct.getProductGuid()+"物料不存在"); + } + + @Override + public AjaxResult InvalidProduct(ErpProduct erpProduct) { + BasProduct oldProduct = basProductService.selectBasProductByProductGuid(erpProduct.getSys_MainId()); + if (ObjUtil.isNotNull(oldProduct)) { + BasProduct basProduct = new BasProduct(); + basProduct.setProductGuid(oldProduct.getProductGuid()); + basProduct.setSpare21(oldProduct.getProductId()); + basProductService.updateBasProduct(oldProduct); + return AjaxResult.success(); + } + return AjaxResult.error(erpProduct.getSys_MainId()+"物料不存在"); + } + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/job/mydojob/service/impl/MydoJobServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/job/mydojob/service/impl/MydoJobServiceImpl.java index d79a79f..ff2490a 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/job/mydojob/service/impl/MydoJobServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/job/mydojob/service/impl/MydoJobServiceImpl.java @@ -342,19 +342,13 @@ public class MydoJobServiceImpl implements IMydoJobService { // 插入任务历史表 删除任务 insertHistory(mydoJob.getJobId()); - //修改回传单据表状态 - if ("1".equals(mydoJob.getInOrOut())){ - //调拨单 - TransferBillCallback transferBillCallbackParam = new TransferBillCallback(); - transferBillCallbackParam.setJobId(mydoJob.getJobId()); - List transferBillCallbacks = transferBillCallbackService.selectTransferBillCallbackList(transferBillCallbackParam); - if (CollUtil.isNotEmpty(transferBillCallbacks)){ - for (TransferBillCallback transferBillCallback : transferBillCallbacks) { - transferBillCallback.setStatus("2"); - transferBillCallbackService.updateTransferBillCallback(transferBillCallback); - } - } - } + //其他出入库单据回传 + TransferBillCallback transferBillCallback = new TransferBillCallback(); + transferBillCallback.setJobId(mydoJob.getJobId()); + transferBillCallback.setErpBill(mydoJob.getLineId()); + transferBillCallback.setType("1"); + transferBillCallback.setStatus("0"); + transferBillCallbackService.insertTransferBillCallback(transferBillCallback); return AjaxResult.success(); } else { return AjaxResult.warn("不存在子作业");