diff --git a/src/main/java/com/huaheng/HuaHengApplication.java b/src/main/java/com/huaheng/HuaHengApplication.java index da3bb15..4b624d9 100644 --- a/src/main/java/com/huaheng/HuaHengApplication.java +++ b/src/main/java/com/huaheng/HuaHengApplication.java @@ -31,41 +31,20 @@ public class HuaHengApplication SpringApplication.run(HuaHengApplication.class, args); System.out.println("*************** 华恒WMS启动成功JAR ***************\n" + " >>> WMS启动成功JAR! <<< \n"+ - " ▀▄▄ ▀▄▄\n" + - " ▄▄▄▄▄▄▓▌ ▐██▄ ▓█▄ ▀▄\n" + - " ░▓▓███████▀ ▄████▌▐██▌ ▐▓\n" + - " ▄▄▄▄▄▄ ▄ █▀██████▓░▄▓█████▄███▓ ░█▌▄▄▄ ▄ ▄▄▄▄▄▄\n" + - " █ ▐▌▐▌▐██████▌▐████████████▌ █▌ ▐▌ █\n" + - " █ ▓ ▓███████▄████████████▌▐██ ▓ █\n" + - " █ ▄ ▐▌ ▐▓███████████████████▄███ ▐▌ ▄ █\n" + - " █ ▐▌▐█ ▀▀▀▀▀▓▓█████████▀▀▀ ▓▓░ █▌▐▌ █\n" + - " █ █░▓▌ ▄▓▄ █████░ ░█▌ ▐▓░█ █\n" + - " ▌▄ ▐▌ ▐█ ▀ ▓▓▄▄▄▄▓▓ █▄▄██████▌ ▀ █▌ ▐▌ ▄▐\n" + - " ▐▌ ▓▄ ▀▓▄ ███████ ███████▓▓ ▄▓▀ ▄▓ ▐▌\n" + - " ▌▀▄ ▀▀▄▄░▀▄ ▀▀▓▓███▌ ▐█░▄▄▄▄ ▀▀ ▄▀░▄▄▀▀ ▄▀▐\n" + - " ▄ █ ▀▀▄▄ ▀▀▄▀▄ ███▀▀▀▀▀▀ ▓███░ ▄▀▄▀▀ ▄▄▀▀ █\n" + - " ▐▌ █ ▀▓▓▄ ▐▌▐▌ ▄▄▄ ▐███▌ ▐██▓▌▐▌▐▌ ▄▓▀ █ ▄ ▄\n" + - " ▄▀ █ ▄ ▐██▌░█▓ ▐█▓▌ ░▓██▓ ▓█░▐█▄ █ ▐▌ ▐▌\n" + - " ▄▀▄▄▀ █ ▐▌ ██▐▓▄▀ ▄▄▀▀▀██▄▄ ▀▄▓▌▐▌ ▀▄▄█░ ▄▀\n" + - " ▐▌▓█▌ ▀ ▄▄█░▐█▓▀ ▄███ ██▓▓ ▓▀ ▄▓██▀ ▄▀▄▄▀\n" + - " ▓███▓ ▄▓██▀ ██▌ ▓▓██▌ ▐████▌ ▄▀▄▄▀ ▐███▌ ▐▌▓█▌\n" + - " ▐████▌ ▐███▌ ▐▓▓ ▐████ █████ ▐▌▓█▌ ░▓███ ▓███▓\n" + - " █████ ░▓███ ░██▌ ▄▄▄▄████████ ▐████▌ ▓███▓ ▄▄███▓░ ▐████▌\n" + - " ░█████ ▄▄███▓▐██▌ ░███▓▓▀ ▀████▌ █████ ▐████▌░██████▀ ▐███████▓\n" + - " ▓▓█▌ ▐████▌▓▓███▀ ███ ▓▓███ ▄████████████▓▓██████▓▐█████▌ ▐███░█████\n" + - " ████ █████████▌ ░███ ▐████▌ ▓▓████▌ ▐████████░██████████ ▐█▓▓ ▐████▓\n" + - " ████ ▐████████ ▐███░▐████▌ ▐███████ ▓███████ ▐█████████▌ ███▌ █████▌\n" + - " ████▌▄█████████▌ ▐███▌▓▓███ ██████▓▓ ▀▀▓▓██▌ ██████████▄▄███▌ ▐████▓\n" + - " ▐███████▓▓▀▓████▄▓▓████████ █████▌ ░███▌ ▐████▓ ▀▀▀▓▓███▌ ▄█████▌\n" + - " ▐███▓▓███▄▄▄░░▀▀▀██████████▄▄▄███▓▓▀ ▐███▌ ▄█████▌ █ ▐████████▓▓▀\n" + - " ████ ▀▀▀████▄▄▄▄▄░░ ▀▀▀▀▀ ▐████████▓▓▀ █ ▐▓▓████▀▀▀\n" + - " ▀▀▀▀ ▄▀▀▀██████ ▐▓▓████▀▀▀ █\n" + - " █ ▓▓██ █\n" + - " █ █\n" + - " █ ▄▀▀█ ▄▀▀ ▓ ▄▀▀▄ ▄▀▀▄ ▄▀▄ ▄▀▀ ▄▀▄ █\n" + - " █▄▄▄ █▀▓ ▓▀ ▄ █ █ ▓ █▀▀▓ ▓ █ ▓▀ ▄ █ ▓ ▄▄▄█\n" + - " █ ▀▀▀▀ ▀▀▀ ▀▀ ▀ ▀▀▀ ▀▀▀▀ ▀▀▀\n" + " へ /|▓\n"+ + " /\7 ∠_/\n"+ + " / │ / /\n"+ + " │ Z _,< / 〈ヽ\n"+ + " │ ` ヽ / 〉\n"+ + " Y `/ / 〉\n"+ + " ( ● ヽ ● /. 〈 /\n"+ + " () ( | \ 〈 \\n"+ + " >_ ' _ . '│ //\n"+ + " /へ / )<| \\\n"+ + " ヽ_) (_/ │//\n"+ + " 7 | /\n"+ + " >―r` ̄ ̄` `―_' \n" ); } -} +} \ No newline at end of file diff --git a/src/main/java/com/huaheng/api/wcs/service/overrideHandle/OverrideHandleServiceImpl.java b/src/main/java/com/huaheng/api/wcs/service/overrideHandle/OverrideHandleServiceImpl.java index 2014db2..da72eac 100644 --- a/src/main/java/com/huaheng/api/wcs/service/overrideHandle/OverrideHandleServiceImpl.java +++ b/src/main/java/com/huaheng/api/wcs/service/overrideHandle/OverrideHandleServiceImpl.java @@ -73,22 +73,22 @@ public class OverrideHandleServiceImpl implements OverrideHandleService { @Override @Transactional public AjaxResult OverrideHandle(TaskFinishDomain taskFinishDomain) { - Boolean flag = true; + + String taskNo = taskFinishDomain.getTaskNo(); //1、判断非空字段 - if(StringUtils.isEmpty(taskFinishDomain.getTaskNo())){ + if(StringUtils.isEmpty(taskNo)){ return AjaxResult.error("任务号为空"); } - - - //2、根据任务号查找任务 - TaskHeader taskHeader = taskHeaderService.getById(Integer.valueOf(taskFinishDomain.getTaskNo())); + TaskHeader taskHeader = taskHeaderService.getById(taskNo); if(taskHeader == null){ return AjaxResult.error("任务号错误,没有找到该任务"); } - if(taskHeader.getStatus() == 100){ + + int status = taskHeader.getStatus(); + if(status == QuantityConstant.TASK_STATUS_COMPLETED){ return AjaxResult.error("任务已完成"); } @@ -98,12 +98,12 @@ public class OverrideHandleServiceImpl implements OverrideHandleService { locationLam.eq(Location::getCode,taskHeader.getToLocation()) .eq(Location::getWarehouseCode, ShiroUtils.getWarehouseCode()); Location location = locationService.getOne(locationLam); - if(location == null){ + if(location == null) { return AjaxResult.error("此任务的原目的库位在系统中不存在"); } location.setStatus(QuantityConstant.STATUS_EMPTY); location.setContainerCode(""); - flag = locationService.updateById(location); + Boolean flag = locationService.updateById(location); if(flag == false){ return AjaxResult.error("修改此任务的原目的库位错误"); } @@ -117,11 +117,11 @@ public class OverrideHandleServiceImpl implements OverrideHandleService { Location newlocation = new Location(); String newLocationCode = null; - String code=ShiroUtils.getWarehouseCode(); + String redirectionLocation = taskFinishDomain.getRedirectionLocationCode(); //重入的库位由wcs提供 - if(!"0".equals(taskFinishDomain.getRedirectionLocationCode())) { + if(!"0".equals(redirectionLocation)) { LambdaQueryWrapper<Location> locationLa = Wrappers.lambdaQuery(); - locationLa.eq(Location::getCode, taskFinishDomain.getRedirectionLocationCode()) + locationLa.eq(Location::getCode, redirectionLocation) .eq(Location::getStatus,QuantityConstant.STATUS_EMPTY) .eq(Location::getWarehouseCode, ShiroUtils.getWarehouseCode()); newlocation = locationService.getOne(locationLa); @@ -175,7 +175,7 @@ public class OverrideHandleServiceImpl implements OverrideHandleService { Container container = containerService.findAllByCode(taskHeader.getContainerCode()); String locationCode = receivingService.filter(locationList, locationTypeList, container); newLocationCode = locationCode; - if (taskHeader.getInternalTaskType().equals(QuantityConstant.TASK_INTENERTYPE_SHELF)) { + if (taskHeader.getInternalTaskType().equals(QuantityConstant.TASK_INTENERTYPE_RECEIPT)) { //查询入库组盘明细 List<ReceiptContainerDetail> receiptContainerDetailList = new ArrayList<>(); for (TaskDetail taskDetail : taskDetailList) { diff --git a/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/LocationAllocationService.java b/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/LocationAllocationService.java index 6aa15d5..2f3f432 100644 --- a/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/LocationAllocationService.java +++ b/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/LocationAllocationService.java @@ -6,7 +6,7 @@ import java.util.List; public interface LocationAllocationService { - String allocation(String locationRule, String roadWay, String warehouseCode, String containerCode); + String allocation(String locationRule, String roadWay, String warehouseCode, String containerCode, Integer materialAreas); } diff --git a/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/LocationAllocationServiceImpl.java b/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/LocationAllocationServiceImpl.java index 5425e7e..2f5664e 100644 --- a/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/LocationAllocationServiceImpl.java +++ b/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/LocationAllocationServiceImpl.java @@ -37,7 +37,7 @@ public class LocationAllocationServiceImpl implements LocationAllocationService private TaskHeaderService taskHeaderService; @Override - public String allocation(String locationRule, String area, String warehouseCode, String containerCode) { + public String allocation(String locationRule, String area, String warehouseCode, String containerCode, Integer materialAreas) { if (StringUtils.isEmpty(locationRule)) { return null; } @@ -70,9 +70,9 @@ public class LocationAllocationServiceImpl implements LocationAllocationService } switch (locationRule) { case Constants.DOUBLE_RK: - return doubleRk(area, warehouseCode, locationTypeList); + return doubleRk(area, warehouseCode, locationTypeList, materialAreas); case Constants.SINGER_RK: - return singleRk(area, warehouseCode, locationTypeList); + return singleRk(area, warehouseCode, locationTypeList, materialAreas); } return null; } @@ -80,7 +80,7 @@ public class LocationAllocationServiceImpl implements LocationAllocationService /* * 双伸位库位入库分配库位 */ - private String doubleRk(String area, String warehouseCode, List<LocationType> locationTypeList) { + private String doubleRk(String area, String warehouseCode, List<LocationType> locationTypeList, Integer materialAreas) { LambdaQueryWrapper<Location> locationLambda = Wrappers.lambdaQuery(); locationLambda.eq(Location::getArea, area). eq(Location::getWarehouseCode, warehouseCode) @@ -92,8 +92,10 @@ public class LocationAllocationServiceImpl implements LocationAllocationService for (Location location1 : locationList) { if (taskHeaderService.getUncompleteTaskInNear(location1) > 0) { removeLocaationList.add(location1); - } else { - break; + } + Integer areas = location1.getMaterialAreas(); + if(areas.intValue() != materialAreas.intValue()) { + removeLocaationList.add(location1); } } locationList.removeAll(removeLocaationList); @@ -109,8 +111,6 @@ public class LocationAllocationServiceImpl implements LocationAllocationService for (Location location1 : locationList) { if (taskHeaderService.getUncompleteTaskInNear(location1) > 0) { removeLocaationList.add(location1); - } else { - break; } } locationList.removeAll(removeLocaationList); @@ -122,13 +122,21 @@ public class LocationAllocationServiceImpl implements LocationAllocationService /* * 单伸位库位入库分配库位 */ - private String singleRk(String area, String warehouseCode, List<LocationType> locationTypeList) { + private String singleRk(String area, String warehouseCode, List<LocationType> locationTypeList, Integer materialAreas) { LambdaQueryWrapper<Location> locationLambda = Wrappers.lambdaQuery(); locationLambda.eq(Location::getArea, area). eq(Location::getWarehouseCode, warehouseCode) .eq(Location::getStatus, QuantityConstant.STATUS_EMPTY) .eq(Location::getContainerCode, ""); List<Location> locationList = locationService.list(locationLambda); + List<Location> removeLocaationList = new ArrayList<>(); + for (Location location1 : locationList) { + Integer areas = location1.getMaterialAreas(); + if(areas.intValue() != materialAreas.intValue()) { + removeLocaationList.add(location1); + } + } + locationList.removeAll(removeLocaationList); String locationCode = filter(locationList, locationTypeList, area); return locationCode; } diff --git a/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/WarecellAllocationService.java b/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/WarecellAllocationService.java index d2fcf47..5e5bcc7 100644 --- a/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/WarecellAllocationService.java +++ b/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/WarecellAllocationService.java @@ -10,7 +10,7 @@ public interface WarecellAllocationService { AjaxResult warecellAllocation(WcsTask wcsTask); String taskPositioning(); - //去向分配 AjaxResult destinationAllocation(WcsTask wcsTask); + } diff --git a/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/WarecellAllocationServiceImpl.java b/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/WarecellAllocationServiceImpl.java index 03ab5ed..9d700d9 100644 --- a/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/WarecellAllocationServiceImpl.java +++ b/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/WarecellAllocationServiceImpl.java @@ -120,13 +120,14 @@ public class WarecellAllocationServiceImpl implements WarecellAllocationService } public AjaxResult verticalWarehouseAllocation(WcsTask wcsTask) { + String warehouseCode = wcsTask.getWarehouseCode(); //查询满足条件的库位类型 LambdaQueryWrapper<LocationType> lambdaQueryWrapper = Wrappers.lambdaQuery(); lambdaQueryWrapper.gt(LocationType::getLength, wcsTask.getLength()) .gt(LocationType::getWidth, wcsTask.getWidth()) .gt(LocationType::getHeight, wcsTask.getHeight()) .gt(LocationType::getMaxWeight, wcsTask.getWidth()) - .eq(LocationType::getWarehouseCode, wcsTask.getWarehouseCode()); + .eq(LocationType::getWarehouseCode, warehouseCode); List<LocationType> locationTypeList = locationTypeService.list(lambdaQueryWrapper); String locationCode = null; @@ -144,7 +145,10 @@ public class WarecellAllocationServiceImpl implements WarecellAllocationService /* 循环查询入库组盘明细*/ List<ReceiptContainerDetail> receiptContainerDetailList = new ArrayList<>(); for (TaskDetail taskDetail : taskDetailList) { - receiptContainerDetailList.add(receiptContainerDetailService.getById(taskDetail.getAllocationId())); + ReceiptContainerDetail receiptContainerDetail = receiptContainerDetailService.getById(taskDetail.getAllocationId()); + if (receiptContainerDetail != null) { + receiptContainerDetailList.add(receiptContainerDetail); + } } //去重 receiptContainerDetailList = receiptContainerDetailList.stream().distinct().collect(Collectors.toList()); @@ -154,13 +158,13 @@ public class WarecellAllocationServiceImpl implements WarecellAllocationService if (StringUtils.isEmpty(locatingRule)) { //物料类别中定位规则为空时,查询入库首选项 LambdaQueryWrapper<ConfigValue> configValueLambda = Wrappers.lambdaQuery(); - configValueLambda.eq(ConfigValue::getWarehouseCode, wcsTask.getWarehouseCode()) + configValueLambda.eq(ConfigValue::getWarehouseCode, warehouseCode) .eq(ConfigValue::getModuleType, "receipt") .eq(ConfigValue::getRecordType, "入库首选项"); ConfigValue configValue = configValueService.getOne(configValueLambda); LambdaQueryWrapper<ReceiptPreference> receiptPreferenceLambda = Wrappers.lambdaQuery(); receiptPreferenceLambda.eq(ReceiptPreference::getCode, configValue.getValue()) - .eq(ReceiptPreference::getWarehouseCode, wcsTask.getWarehouseCode()); + .eq(ReceiptPreference::getWarehouseCode, warehouseCode); ReceiptPreference receiptPreference = receiptPreferenceService.getOne(receiptPreferenceLambda); locatingRule = receiptPreference.getLocationRule(); } @@ -168,16 +172,21 @@ public class WarecellAllocationServiceImpl implements WarecellAllocationService if (StringUtils.isEmpty(locatingRule)){ throw new ServiceException("未绑定定位规则"); } - - locationCode = locationAllocationService.allocation(locatingRule, wcsTask.getDestination(), wcsTask.getWarehouseCode(), containerCode); + Integer materialAreas = 0; + if(receiptContainerDetailList != null && receiptContainerDetailList.size() > 0) { + String materialCode = receiptContainerDetailList.get(0).getMaterialCode(); + Material material = materialService.findAllByCode(materialCode, warehouseCode); + materialAreas = material.getMaterialAreas(); + } + locationCode = locationAllocationService.allocation(locatingRule, wcsTask.getDestination(), warehouseCode, containerCode, materialAreas); if (StringUtils.isEmpty(locationCode)) { return AjaxResult.error("没有库位可分配"); } if (StringUtils.isNotEmpty(locationCode)) { - locationService.updateStatus(locationCode, QuantityConstant.STATUS_LOCK, wcsTask.getWarehouseCode()); + locationService.updateStatus(locationCode, QuantityConstant.STATUS_LOCK, warehouseCode); if (StringUtils.isNotEmpty(taskHeader.getToLocation()) && !locationCode.equals(taskHeader.getToLocation())) { - locationService.updateStatus(taskHeader.getToLocation(), QuantityConstant.STATUS_EMPTY, wcsTask.getWarehouseCode()); + locationService.updateStatus(taskHeader.getToLocation(), QuantityConstant.STATUS_EMPTY, warehouseCode); } } else { throw new ServiceException("定位失败,请检查定位规则是否正确"); @@ -195,7 +204,7 @@ public class WarecellAllocationServiceImpl implements WarecellAllocationService //把库位编码赋到该入库组盘头表下的所有明细 LambdaQueryWrapper<ReceiptContainerDetail> lambda = Wrappers.lambdaQuery(); lambda.eq(ReceiptContainerDetail::getReceiptContainerId, receiptContainerHeader.getId()) - .eq(ReceiptContainerDetail::getWarehouseCode, wcsTask.getWarehouseCode()); + .eq(ReceiptContainerDetail::getWarehouseCode, warehouseCode); List<ReceiptContainerDetail> receiptContainerDetails = receiptContainerDetailService.list(lambda); for (ReceiptContainerDetail receiptContainerDetail2 : receiptContainerDetails) { receiptContainerDetail2.setLocationCode(locationCode); @@ -216,7 +225,7 @@ public class WarecellAllocationServiceImpl implements WarecellAllocationService //修改任务明细目标库位 LambdaQueryWrapper<Location> locationLambdaQueryWrapper = Wrappers.lambdaQuery(); locationLambdaQueryWrapper.eq(Location::getCode, locationCode) - .eq(Location::getWarehouseCode, wcsTask.getWarehouseCode()); + .eq(Location::getWarehouseCode, warehouseCode); Location location = locationService.getOne(locationLambdaQueryWrapper); int rowFlag = location.getRowFlag().intValue(); Integer preTaskNo = 0; diff --git a/src/main/java/com/huaheng/common/constant/QuantityConstant.java b/src/main/java/com/huaheng/common/constant/QuantityConstant.java index 0aefc81..160ec16 100644 --- a/src/main/java/com/huaheng/common/constant/QuantityConstant.java +++ b/src/main/java/com/huaheng/common/constant/QuantityConstant.java @@ -327,25 +327,16 @@ public class QuantityConstant { //13、任务内部类型 /** 上架任务*/ - public static final Integer TASK_INTENERTYPE_SHELF = 100; + public static final Integer TASK_INTENERTYPE_RECEIPT = 100; /** 拣货任务*/ - public static final Integer TASK_INTENERTYPE_PICKING = 200; - - /** 补货任务*/ - public static final Integer TASK_INTENERTYPE_SUPPLEMENT = 300; + public static final Integer TASK_INTENERTYPE_SHIPMENT = 200; /** 工作任务*/ - public static final Integer TASK_INTENERTYPE_WORK = 400; - - //质检任务 - public static final Integer TASK_INTENERTYPE_CHECK = 500; - - /** 移库任务 */ - public static final Integer TASK_INTENERTYPE_TRANSFER = 600; + public static final Integer TASK_INTENERTYPE_WORK = 300; //盘点任务 - public static final Integer TASK_INTENERTYPE_CYCLECOUNT = 700; + public static final Integer TASK_INTENERTYPE_CYCLECOUNT = 400; diff --git a/src/main/java/com/huaheng/mobile/receipt/MobileBatchReceiptController.java b/src/main/java/com/huaheng/mobile/receipt/MobileBatchReceiptController.java index 00e5c3a..04251e4 100644 --- a/src/main/java/com/huaheng/mobile/receipt/MobileBatchReceiptController.java +++ b/src/main/java/com/huaheng/mobile/receipt/MobileBatchReceiptController.java @@ -569,11 +569,11 @@ public class MobileBatchReceiptController { taskHeader.setWarehouseCode(loc.getWarehouseCode()); taskHeader.setCompanyCode(companyCode);//货主 if(type == QuantityConstant.TASK_TYPE_SUPPLEMENTRECEIPT) { - taskHeader.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_SHELF); + taskHeader.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_RECEIPT); taskHeader.setTaskType(QuantityConstant.TASK_TYPE_SUPPLEMENTRECEIPT); } else { - taskHeader.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_PICKING); - taskHeader.setTaskType(QuantityConstant.TASK_TYPE_SORTINGSHIPMENT); + taskHeader.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_RECEIPT); + taskHeader.setTaskType(QuantityConstant.TASK_TYPE_SUPPLEMENTRECEIPT); } taskHeader.setContainerCode(container.getCode()); taskHeader.setStatus(QuantityConstant.TASK_STATUS_BUILD); diff --git a/src/main/java/com/huaheng/pc/config/location/controller/LocationController.java b/src/main/java/com/huaheng/pc/config/location/controller/LocationController.java index b6722ec..ab5b0e1 100644 --- a/src/main/java/com/huaheng/pc/config/location/controller/LocationController.java +++ b/src/main/java/com/huaheng/pc/config/location/controller/LocationController.java @@ -17,6 +17,8 @@ import com.huaheng.framework.web.page.PageDomain; import com.huaheng.framework.web.page.TableDataInfo; import com.huaheng.framework.web.page.TableSupport; import com.huaheng.pc.common.JasperPrint.Print; +import com.huaheng.pc.config.container.domain.Container; +import com.huaheng.pc.config.container.service.ContainerService; import com.huaheng.pc.config.location.domain.Location; import com.huaheng.pc.config.location.domain.LocationStatus; import com.huaheng.pc.config.location.service.LocationService; @@ -47,6 +49,8 @@ public class LocationController extends BaseController { private String prefix = "config/location"; @Resource + private ContainerService containerService; + @Resource private LocationService locationService; @Resource private InventoryDetailService inventoryDetailService; @@ -155,17 +159,6 @@ public class LocationController extends BaseController { return prefix + "/addBatch"; } - // /** - // * 批量新增保存库位 - // */ - // @RequiresPermissions("config:location:addBatch") - // @ApiOperation(value="新增库位", notes="批量新增库位", httpMethod = "POST") - // @Log(title = "配置-库存资料-库位管理", operating = "新增库位", action = BusinessType.INSERT) - // @PostMapping("/addBatchSave") - // @ResponseBody - // public AjaxResult addBatchSave(Location lastLocation) { - // return toAjax(locationService.insertLocation(lastLocation)); - // } /** * 批量新增保存库位 @@ -210,9 +203,12 @@ public class LocationController extends BaseController { @PostMapping("/edit") @ResponseBody public AjaxResult editSave (Location location) { - Location locationCurrent = locationService.getById(location.getId()); - if (!locationCurrent.getStatus().equals(QuantityConstant.STATUS_EMPTY)&&!locationCurrent.getStatus().equals("disable")){ - return AjaxResult.success("只有在空闲或禁用状态下才能更改库位"); + String containerCode = location.getContainerCode(); + if (StringUtils.isNotEmpty(containerCode)) { + Container container = containerService.findAllByCode(containerCode); + if (container == null) { + return AjaxResult.error("容器编码输入错误"); + } } location.setLastUpdatedBy(ShiroUtils.getLoginName()); return toAjax(locationService.updateById(location)); diff --git a/src/main/java/com/huaheng/pc/config/location/domain/Location.java b/src/main/java/com/huaheng/pc/config/location/domain/Location.java index 09760fc..b73eacd 100644 --- a/src/main/java/com/huaheng/pc/config/location/domain/Location.java +++ b/src/main/java/com/huaheng/pc/config/location/domain/Location.java @@ -97,6 +97,12 @@ public class Location implements Serializable { private String area; /** + * 物料分区 + */ + @TableField(value = "materialAreas") + private Integer materialAreas; + + /** * 名称 */ @TableField(value = "name") diff --git a/src/main/java/com/huaheng/pc/config/material/controller/MaterialController.java b/src/main/java/com/huaheng/pc/config/material/controller/MaterialController.java index 645ae98..6a74190 100644 --- a/src/main/java/com/huaheng/pc/config/material/controller/MaterialController.java +++ b/src/main/java/com/huaheng/pc/config/material/controller/MaterialController.java @@ -164,7 +164,7 @@ public class MaterialController extends BaseController { String[] idArray = Convert.toStrArray(ids); LambdaUpdateWrapper<Material> wrapper = Wrappers.lambdaUpdate(); wrapper.in(Material::getId, idArray) - .set(Material::getArea, area); + .set(Material::getMaterialAreas, Integer.parseInt(area)); return toAjax(materialService.update(wrapper)); } diff --git a/src/main/java/com/huaheng/pc/config/material/domain/Material.java b/src/main/java/com/huaheng/pc/config/material/domain/Material.java index 3efe6b0..651f663 100644 --- a/src/main/java/com/huaheng/pc/config/material/domain/Material.java +++ b/src/main/java/com/huaheng/pc/config/material/domain/Material.java @@ -312,7 +312,10 @@ public class Material implements Serializable { /** 打印机名称 */ // private static final String printName = "Gprinter GP-1424D"; - @TableField(value = "area") - @ApiModelProperty(value = "物料分区") - private String area; + /** + * 物料分区 + */ + @TableField(value = "materialAreas") + private Integer materialAreas; + } \ No newline at end of file diff --git a/src/main/java/com/huaheng/pc/config/material/service/MaterialService.java b/src/main/java/com/huaheng/pc/config/material/service/MaterialService.java index 17b18ce..92b778a 100644 --- a/src/main/java/com/huaheng/pc/config/material/service/MaterialService.java +++ b/src/main/java/com/huaheng/pc/config/material/service/MaterialService.java @@ -34,6 +34,8 @@ public interface MaterialService extends IService<Material>{ Material findAllByCode(String code); + Material findAllByCode(String code, String warehouseCode); + List<Material> findLatest(); /** diff --git a/src/main/java/com/huaheng/pc/config/material/service/MaterialServiceImpl.java b/src/main/java/com/huaheng/pc/config/material/service/MaterialServiceImpl.java index 9a02fc6..bc8336d 100644 --- a/src/main/java/com/huaheng/pc/config/material/service/MaterialServiceImpl.java +++ b/src/main/java/com/huaheng/pc/config/material/service/MaterialServiceImpl.java @@ -62,13 +62,11 @@ public class MaterialServiceImpl extends ServiceImpl<MaterialMapper, Material> i int count = 0; for (Integer id : Convert.toIntArray(ids)) { Material material = this.getById(id); - LambdaQueryWrapper<ReceiptDetail> lambda = Wrappers.lambdaQuery(); lambda.eq(ReceiptDetail::getWarehouseCode, ShiroUtils.getWarehouseCode()) - .eq(ReceiptDetail::getMaterialCode, material.getCode()) - .eq(ReceiptDetail::getDeleted, false) - .last("LIMIT 1"); - + .eq(ReceiptDetail::getMaterialCode, material.getCode()) + .eq(ReceiptDetail::getDeleted, false) + .last("LIMIT 1"); Map<String, Object> map = receiptDetailService.getMap(lambda); if (map != null) { return AjaxResult.error("物料编码(" + material.getCode() +")存在入库单,不能删除!"); @@ -177,10 +175,21 @@ public class MaterialServiceImpl extends ServiceImpl<MaterialMapper, Material> i @Override public Material findAllByCode(String code) { + String warehouseCode = ShiroUtils.getWarehouseCode(); + LambdaQueryWrapper<Material> queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.eq(Material::getCode, code); + queryWrapper.eq(Material::getWarehouseCode, warehouseCode); + Material material = getOne(queryWrapper); + return material; + } + + @Override + public Material findAllByCode(String code, String warehouseCode) { LambdaQueryWrapper<Material> queryWrapper = Wrappers.lambdaQuery(); queryWrapper.eq(Material::getCode, code); - queryWrapper.eq(Material::getWarehouseCode, ShiroUtils.getWarehouseCode()); - return getOne(queryWrapper); + queryWrapper.eq(Material::getWarehouseCode, warehouseCode); + Material material = getOne(queryWrapper); + return material; } diff --git a/src/main/java/com/huaheng/pc/inventory/inventoryDetail/service/InventoryDetailServiceImpl.java b/src/main/java/com/huaheng/pc/inventory/inventoryDetail/service/InventoryDetailServiceImpl.java index 27b322c..3234aa0 100644 --- a/src/main/java/com/huaheng/pc/inventory/inventoryDetail/service/InventoryDetailServiceImpl.java +++ b/src/main/java/com/huaheng/pc/inventory/inventoryDetail/service/InventoryDetailServiceImpl.java @@ -93,7 +93,7 @@ public class InventoryDetailServiceImpl extends ServiceImpl<InventoryDetailMappe TaskHeader taskHeader = new TaskHeader(); taskHeader.setWarehouseCode(inventoryDetail.getWarehouseCode()); taskHeader.setCompanyCode(inventoryDetail.getCompanyCode()); - taskHeader.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_PICKING); + taskHeader.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_WORK); taskHeader.setTaskType(QuantityConstant.TASK_TYPE_VIEW); taskHeader.setContainerCode(inventoryDetail.getContainerCode()); taskHeader.setStatus(QuantityConstant.TASK_STATUS_BUILD); diff --git a/src/main/java/com/huaheng/pc/inventory/inventoryHeader/controller/InventoryHeaderController.java b/src/main/java/com/huaheng/pc/inventory/inventoryHeader/controller/InventoryHeaderController.java index 318bc05..c5d1c8b 100644 --- a/src/main/java/com/huaheng/pc/inventory/inventoryHeader/controller/InventoryHeaderController.java +++ b/src/main/java/com/huaheng/pc/inventory/inventoryHeader/controller/InventoryHeaderController.java @@ -24,6 +24,7 @@ import com.huaheng.pc.task.taskHeader.service.TaskHeaderService; import com.huaheng.pc.task.taskHeader.service.TaskHeaderServiceImpl; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.ArrayList; @@ -204,8 +205,12 @@ public class InventoryHeaderController extends BaseController /** * 出库查看页面 */ - @GetMapping("/checkOut") - public String checkOut(){ + @GetMapping("/checkOut/{id}") + public String checkOut(@PathVariable("id") String id, ModelMap modelMap){ + InventoryHeader inventoryHeader = inventoryHeaderService.getById(id); + modelMap.put("id", id); + modelMap.put("locationCode", inventoryHeader.getLocationCode()); + modelMap.put("containerCode", inventoryHeader.getContainerCode()); return prefix+"/checkOut"; } diff --git a/src/main/java/com/huaheng/pc/receipt/receiptContainerHeader/controller/ReceiptContainerHeaderController.java b/src/main/java/com/huaheng/pc/receipt/receiptContainerHeader/controller/ReceiptContainerHeaderController.java index 605e4d4..aff612b 100644 --- a/src/main/java/com/huaheng/pc/receipt/receiptContainerHeader/controller/ReceiptContainerHeaderController.java +++ b/src/main/java/com/huaheng/pc/receipt/receiptContainerHeader/controller/ReceiptContainerHeaderController.java @@ -79,7 +79,7 @@ public class ReceiptContainerHeaderController extends BaseController { Integer pageNum = pageDomain.getPageNum(); Integer pageSize = pageDomain.getPageSize(); String sql = null; - if (StringUtils.isNotEmpty(receiptCode)){ + if (StringUtils.isNotEmpty(receiptCode)) { sql = "select receiptContainerId from receipt_container_detail where receiptCode = \'"+receiptCode+"\'"; } lambdaQueryWrapper.ge(StringUtils.isNotEmpty(createdBegin), ReceiptContainerHeader::getCreated, createdBegin) @@ -91,12 +91,10 @@ public class ReceiptContainerHeaderController extends BaseController { .eq(StringUtils.isNotNull(receiptContainerHeader.getStatus()),ReceiptContainerHeader::getStatus, receiptContainerHeader.getStatus()) .eq(StringUtils.isNotEmpty(receiptContainerHeader.getCreatedBy()),ReceiptContainerHeader::getCreatedBy, receiptContainerHeader.getCreatedBy()) .inSql(StringUtils.isNotEmpty(receiptCode), ReceiptContainerHeader::getId, sql) + .orderByAsc(ReceiptContainerHeader::getStatus) .orderByDesc(ReceiptContainerHeader::getId); if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){ - /** - * 使用分页查询 - */ Page<ReceiptContainerHeader> page = new Page<>(pageNum, pageSize); IPage<ReceiptContainerHeader> iPage = receiptContainerHeaderService.page(page, lambdaQueryWrapper); return getMpDataTable(iPage.getRecords(),iPage.getTotal()); diff --git a/src/main/java/com/huaheng/pc/receipt/receiptContainerHeader/service/ReceiptContainerHeaderServiceImpl.java b/src/main/java/com/huaheng/pc/receipt/receiptContainerHeader/service/ReceiptContainerHeaderServiceImpl.java index 13969e0..1749126 100644 --- a/src/main/java/com/huaheng/pc/receipt/receiptContainerHeader/service/ReceiptContainerHeaderServiceImpl.java +++ b/src/main/java/com/huaheng/pc/receipt/receiptContainerHeader/service/ReceiptContainerHeaderServiceImpl.java @@ -420,7 +420,7 @@ public class ReceiptContainerHeaderServiceImpl extends ServiceImpl<ReceiptContai } if (QuantityConstant.TASK_TYPE_WHOLERECEIPT == taskType.intValue()) { if (com.huaheng.common.utils.StringUtils.isNotEmpty(location.getContainerCode())) { - throw new ServiceException("库位(" + containerCode + ")有容器(" + location.getContainerCode() + "),不能整盘入库!"); + throw new ServiceException("库位(" + locationCode + ")有容器(" + location.getContainerCode() + "),不能整盘入库!"); } } if(QuantityConstant.TASK_TYPE_SUPPLEMENTRECEIPT== taskType.intValue()) { diff --git a/src/main/java/com/huaheng/pc/receipt/receiving/service/ReceivingService.java b/src/main/java/com/huaheng/pc/receipt/receiving/service/ReceivingService.java index 7828add..20b1e44 100644 --- a/src/main/java/com/huaheng/pc/receipt/receiving/service/ReceivingService.java +++ b/src/main/java/com/huaheng/pc/receipt/receiving/service/ReceivingService.java @@ -155,11 +155,9 @@ public class ReceivingService { if (StringUtils.isEmpty(locatingRule)){ throw new ServiceException("未绑定定位规则"); } - if (StringUtils.isEmpty(area)) { - Material material = materialService.findAllByCode(receiptContainerDetail.getMaterialCode()); - area = material.getArea(); - } - String locationCode = locationAllocationService.allocation(locatingRule, area, ShiroUtils.getWarehouseCode(),container.getCode() ); + Material material = materialService.findAllByCode(receiptContainerDetail.getMaterialCode()); + Integer materialAreas = material.getMaterialAreas(); + String locationCode = locationAllocationService.allocation(locatingRule, area, ShiroUtils.getWarehouseCode(),container.getCode(), materialAreas); if (StringUtils.isNotEmpty(locationCode)){ locationService.updateStatus(locationCode, QuantityConstant.STATUS_LOCK); diff --git a/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/controller/ShipmentContainerHeaderController.java b/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/controller/ShipmentContainerHeaderController.java index 8a33667..7c465a0 100644 --- a/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/controller/ShipmentContainerHeaderController.java +++ b/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/controller/ShipmentContainerHeaderController.java @@ -14,6 +14,7 @@ import com.huaheng.framework.web.domain.AjaxResult; import com.huaheng.framework.web.page.PageDomain; import com.huaheng.framework.web.page.TableDataInfo; import com.huaheng.framework.web.page.TableSupport; +import com.huaheng.pc.receipt.receiptContainerHeader.domain.ReceiptContainerHeader; import com.huaheng.pc.shipment.shipmentContainerHeader.domain.ShipmentContainerHeader; import com.huaheng.pc.shipment.shipmentContainerHeader.service.ShipmentContainerHeaderService; import com.huaheng.pc.shipment.shipmentHeader.domain.ShipmentHeader; @@ -71,12 +72,10 @@ public class ShipmentContainerHeaderController extends BaseController .eq(StringUtils.isNotEmpty(shipmentContainerHeader.getContainerCode()), ShipmentContainerHeader::getContainerCode, shipmentContainerHeader.getContainerCode()) .eq(StringUtils.isNotEmpty(shipmentContainerHeader.getLocationCode()), ShipmentContainerHeader::getLocationCode, shipmentContainerHeader.getLocationCode()) .eq(StringUtils.isNotEmpty(shipmentContainerHeader.getCreatedBy()), ShipmentContainerHeader::getCreatedBy, shipmentContainerHeader.getCreatedBy()) - .le(shipmentContainerHeader.getStatus()==null,ShipmentContainerHeader::getStatus,20) - .eq(shipmentContainerHeader.getStatus()!=null,ShipmentContainerHeader::getStatus,shipmentContainerHeader.getStatus()); + .eq(shipmentContainerHeader.getStatus()!=null, ShipmentContainerHeader::getStatus,shipmentContainerHeader.getStatus()) + .orderByAsc(ShipmentContainerHeader::getStatus) + .orderByDesc(ShipmentContainerHeader::getId); if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){ - /** - * 使用分页查询 - */ Page<ShipmentContainerHeader> page = new Page<>(pageNum, pageSize); IPage<ShipmentContainerHeader> iPage = shipmentContainerHeaderService.page(page, lambdaQueryWrapper); return getMpDataTable(iPage.getRecords(),iPage.getTotal()); diff --git a/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/service/ShipmentContainerHeaderServiceImpl.java b/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/service/ShipmentContainerHeaderServiceImpl.java index 576f6e1..f71c4e8 100644 --- a/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/service/ShipmentContainerHeaderServiceImpl.java +++ b/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/service/ShipmentContainerHeaderServiceImpl.java @@ -303,7 +303,7 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont if(shipmentContainerHeader.getStatus()>=QuantityConstant.SHIPMENT_CONTAINER_TASK && shipmentContainerHeader.getStatus()<QuantityConstant.SHIPMENT_CONTAINER_REVIEWSUCCESS){ LambdaQueryWrapper<TaskHeader> taskHeaderLambdaQueryWrapper=Wrappers.lambdaQuery(); taskHeaderLambdaQueryWrapper.eq(TaskHeader::getWarehouseCode,shipmentContainerHeader.getWarehouseCode()) - .eq(TaskHeader::getInternalTaskType,QuantityConstant.TASK_INTENERTYPE_PICKING) + .in(TaskHeader::getTaskType, QuantityConstant.TASK_TYPE_SORTINGSHIPMENT, QuantityConstant.TASK_TYPE_WHOLESHIPMENT) .eq(TaskHeader::getAllocationHeadId,shipmentContainerHeader.getId()); TaskHeader taskHeader=taskHeaderService.getOne(taskHeaderLambdaQueryWrapper); if(taskHeader==null){ @@ -317,7 +317,7 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont taskDetailLam.eq(TaskDetail::getWarehouseCode,shipmentContainerDetail.getWarehouseCode()) .eq(TaskDetail::getAllocationId,shipmentContainerDetail.getId()) .eq(TaskDetail::getTaskId,taskHeader.getId()) - .eq(TaskDetail::getInternalTaskType,QuantityConstant.TASK_INTENERTYPE_PICKING); + .in(TaskDetail::getTaskType, QuantityConstant.TASK_TYPE_SORTINGSHIPMENT, QuantityConstant.TASK_TYPE_WHOLESHIPMENT); TaskDetail taskDetail = taskDetailService.getOne(taskDetailLam); if(taskDetail == null){ throw new ServiceException("找不到对应的任务明细"); diff --git a/src/main/java/com/huaheng/pc/task/taskHeader/controller/TaskHeaderController.java b/src/main/java/com/huaheng/pc/task/taskHeader/controller/TaskHeaderController.java index 44f6394..d9cd8dc 100644 --- a/src/main/java/com/huaheng/pc/task/taskHeader/controller/TaskHeaderController.java +++ b/src/main/java/com/huaheng/pc/task/taskHeader/controller/TaskHeaderController.java @@ -69,14 +69,14 @@ public class TaskHeaderController extends BaseController { @ApiParam(name="createdBegin",value="类型") String createdBegin,@ApiParam(name="createdEnd",value="类型") String createdEnd) { LambdaQueryWrapper<TaskHeader> lambdaQueryWrapper = Wrappers.lambdaQuery(); lambdaQueryWrapper.eq(TaskHeader::getWarehouseCode,ShiroUtils.getWarehouseCode()) - .eq(StringUtils.isNotNull(InternalTaskType),TaskHeader::getInternalTaskType,InternalTaskType) .eq(StringUtils.isNotNull(taskHeader.getId()),TaskHeader::getId,taskHeader.getId()) .eq(StringUtils.isNotEmpty(taskHeader.getContainerCode()),TaskHeader::getContainerCode,taskHeader.getContainerCode()) .eq(StringUtils.isNotEmpty(taskHeader.getToLocation()),TaskHeader::getToLocation,taskHeader.getToLocation()) .gt(StringUtils.isNotEmpty(createdBegin),TaskHeader::getCreated,createdBegin) .lt(StringUtils.isNotEmpty(createdEnd),TaskHeader::getCreated,createdEnd) - .orderByDesc(TaskHeader::getId); + .orderByDesc(TaskHeader::getId) + .orderByAsc(TaskHeader::getStatus); PageDomain pageDomain = TableSupport.buildPageRequest(); Integer pageNum = pageDomain.getPageNum(); @@ -88,15 +88,9 @@ public class TaskHeaderController extends BaseController { Page<TaskHeader> page = new Page<>(pageNum, pageSize); IPage<TaskHeader> iPage = taskHeaderService.page(page, lambdaQueryWrapper); List<TaskHeader> iPages = iPage.getRecords(); -// if(InternalTaskType == 700){ -// iPages = taskHeaderService.preferenceRealize(iPages) ; -// } return getMpDataTable(iPages, iPage.getTotal()); } else { List<TaskHeader> list = taskHeaderService.list(lambdaQueryWrapper); - if(InternalTaskType == 700){ - list = taskHeaderService.preferenceRealize(list); - } return getDataTable(list); } } diff --git a/src/main/java/com/huaheng/pc/task/taskHeader/service/CycleCountTaskService.java b/src/main/java/com/huaheng/pc/task/taskHeader/service/CycleCountTaskService.java index b6e75bd..39dc5a7 100644 --- a/src/main/java/com/huaheng/pc/task/taskHeader/service/CycleCountTaskService.java +++ b/src/main/java/com/huaheng/pc/task/taskHeader/service/CycleCountTaskService.java @@ -117,25 +117,23 @@ public class CycleCountTaskService { } } - if (taskHeader.getInternalTaskType().equals(QuantityConstant.TASK_INTENERTYPE_SHELF) || taskHeader.getInternalTaskType().equals(QuantityConstant.TASK_INTENERTYPE_PICKING)) { - if (taskHeader.getToLocation() != null) { - //更新托盘、库位状态 - locationService.updateStatus(taskHeader.getToLocation(), QuantityConstant.STATUS_EMPTY); - } - LambdaQueryWrapper<InventoryHeader> inventoryHeaderLambdaQueryWrapper = Wrappers.lambdaQuery(); - inventoryHeaderLambdaQueryWrapper.eq(InventoryHeader::getContainerCode, taskHeader.getContainerCode()); - InventoryHeader inventoryHeader = inventoryHeaderService.getOne(inventoryHeaderLambdaQueryWrapper); - Container container = new Container(); - container.setStatus(QuantityConstant.STATUS_EMPTY); - if(inventoryHeader != null) { - if(inventoryHeader.getContainerStatus().equals(QuantityConstant.STATUS_SOME)) { - container.setStatus(QuantityConstant.STATUS_SOME); - } + if (taskHeader.getToLocation() != null) { + //更新托盘、库位状态 + locationService.updateStatus(taskHeader.getToLocation(), QuantityConstant.STATUS_EMPTY); + } + LambdaQueryWrapper<InventoryHeader> inventoryHeaderLambdaQueryWrapper = Wrappers.lambdaQuery(); + inventoryHeaderLambdaQueryWrapper.eq(InventoryHeader::getContainerCode, taskHeader.getContainerCode()); + InventoryHeader inventoryHeader = inventoryHeaderService.getOne(inventoryHeaderLambdaQueryWrapper); + Container container = new Container(); + container.setStatus(QuantityConstant.STATUS_EMPTY); + if(inventoryHeader != null) { + if(inventoryHeader.getContainerStatus().equals(QuantityConstant.STATUS_SOME)) { + container.setStatus(QuantityConstant.STATUS_SOME); } - LambdaUpdateWrapper<Container> containerUpdateWrapper = Wrappers.lambdaUpdate(); - containerUpdateWrapper.eq(Container::getCode, taskHeader.getContainerCode()); - containerService.update(container, containerUpdateWrapper); } + LambdaUpdateWrapper<Container> containerUpdateWrapper = Wrappers.lambdaUpdate(); + containerUpdateWrapper.eq(Container::getCode, taskHeader.getContainerCode()); + containerService.update(container, containerUpdateWrapper); } return AjaxResult.success("取消任务成功!"); diff --git a/src/main/java/com/huaheng/pc/task/taskHeader/service/ReceiptTaskService.java b/src/main/java/com/huaheng/pc/task/taskHeader/service/ReceiptTaskService.java index f907db3..0f0e5df 100644 --- a/src/main/java/com/huaheng/pc/task/taskHeader/service/ReceiptTaskService.java +++ b/src/main/java/com/huaheng/pc/task/taskHeader/service/ReceiptTaskService.java @@ -146,7 +146,7 @@ public class ReceiptTaskService { //添加任务主表 TaskHeader task = new TaskHeader(); task.setAllocationHeadId(receiptContainerHeader.getId()); - task.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_SHELF); + task.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_RECEIPT); task.setWarehouseCode(receiptContainerHeader.getWarehouseCode()); task.setCompanyCode(receiptContainerHeader.getCompanyCode()); task.setTaskType(receiptContainerHeader.getTaskType()); @@ -162,7 +162,7 @@ public class ReceiptTaskService { TaskDetail taskDetail = new TaskDetail(); taskDetail.setTaskId(task.getId()); taskDetail.setTaskType(task.getTaskType()); - taskDetail.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_SHELF); + taskDetail.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_RECEIPT); taskDetail.setWarehouseCode(task.getWarehouseCode()); taskDetail.setAllocationId(item.getId()); taskDetail.setCompanyCode(task.getCompanyCode()); diff --git a/src/main/java/com/huaheng/pc/task/taskHeader/service/ShipmentTaskService.java b/src/main/java/com/huaheng/pc/task/taskHeader/service/ShipmentTaskService.java index 3d790cf..19a2c46 100644 --- a/src/main/java/com/huaheng/pc/task/taskHeader/service/ShipmentTaskService.java +++ b/src/main/java/com/huaheng/pc/task/taskHeader/service/ShipmentTaskService.java @@ -171,7 +171,7 @@ public class ShipmentTaskService { } - task.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_PICKING); + task.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_SHIPMENT); task.setAllocationHeadId(shipmentContainerHeader.getId()); task.setWarehouseCode(shipmentContainerHeader.getWarehouseCode()); task.setAssignedUser(ShiroUtils.getLoginName()); diff --git a/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderServiceImpl.java b/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderServiceImpl.java index 534970d..0ce2f94 100644 --- a/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderServiceImpl.java +++ b/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderServiceImpl.java @@ -194,91 +194,22 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea //删除主任务 taskHeaderService.removeById(taskHeader.getId()); // 更改库位状态(整盘入库任务除外) - if (taskHeader.getInternalTaskType().equals(QuantityConstant.TASK_INTENERTYPE_SHELF)) { + if (taskHeader.getInternalTaskType().equals(QuantityConstant.TASK_INTENERTYPE_RECEIPT)) { receiptContainerHeaderService.cancelReceipt(taskHeader.getAllocationHeadId()); } //根据任务类型来更新货箱状态 //修改关联的货箱状态 - if (taskHeader.getInternalTaskType().equals(QuantityConstant.TASK_INTENERTYPE_PICKING)) { + if (taskHeader.getInternalTaskType().equals(QuantityConstant.TASK_INTENERTYPE_SHIPMENT)) { ShipmentContainerHeader shipmentContainerHeader = new ShipmentContainerHeader(); shipmentContainerHeader.setId(taskHeader.getAllocationHeadId()); shipmentContainerHeader.setStatus(QuantityConstant.SHIPMENT_CONTAINER_BUILD); shipmentContainerHeaderService.updateById(shipmentContainerHeader); } //盘点取消任务,恢复明细状态为1 - if (taskHeader.getInternalTaskType().equals(QuantityConstant.TASK_INTENERTYPE_CYCLECOUNT)) { - - CycleCountDetail cycleCountDetail = new CycleCountDetail(); - cycleCountDetail.setCompanyCode(taskDetail.getCompanyCode()); - cycleCountDetail.setWarehouseCode(taskDetail.getWarehouseCode()); - cycleCountDetail.setLocationCode(taskDetail.getFromLocation()); - cycleCountDetail.setContainerCode(taskDetail.getContainerCode()); - cycleCountDetail.setCycleCountHeadCode(taskDetail.getBillCode());//盘点单Code - cycleCountDetail.setId(taskDetail.getBillDetailId());//盘点细单ID - LambdaQueryWrapper<CycleCountDetail> lam = Wrappers.lambdaQuery(cycleCountDetail); - List<CycleCountDetail> cycleCountDetailList = cycleCountDetailService.list(lam);// - for (CycleCountDetail item : cycleCountDetailList) { - item.setTaskHeaderId(null); - item.setTaskHeaderId(null); - item.setLastUpdated(new Date()); - item.setLastUpdatedBy(ShiroUtils.getLoginName()); - item.setEnableStatus(1); - cycleCountDetailService.saveOrUpdate(item); - } - - } - if (taskHeader.getInternalTaskType().equals(QuantityConstant.TASK_INTENERTYPE_TRANSFER)) { - if (taskHeader.getFromLocation() != null) { - //更新托盘、库位状态 - locationService.updateStatus(taskHeader.getFromLocation(), QuantityConstant.STATUS_EMPTY); - } - if (taskHeader.getToLocation() != null) { - //更新托盘、库位状态 - locationService.updateStatus(taskHeader.getToLocation(), QuantityConstant.STATUS_EMPTY); - } - LambdaQueryWrapper<InventoryHeader> inventoryHeaderLambdaQueryWrapper = Wrappers.lambdaQuery(); - inventoryHeaderLambdaQueryWrapper.eq(InventoryHeader::getContainerCode, taskHeader.getContainerCode()); - InventoryHeader inventoryHeader = inventoryHeaderService.getOne(inventoryHeaderLambdaQueryWrapper); - Container container = new Container(); - container.setStatus(QuantityConstant.STATUS_EMPTY); - if(inventoryHeader != null) { - if(QuantityConstant.STATUS_SOME.equals(inventoryHeader.getContainerStatus())) { - container.setStatus(QuantityConstant.STATUS_SOME); - } - } - container.setLocationCode(taskHeader.getFromLocation()); - LambdaUpdateWrapper<Container> containerUpdateWrapper = Wrappers.lambdaUpdate(); - containerUpdateWrapper.eq(Container::getCode, taskHeader.getContainerCode()); - containerService.update(container, containerUpdateWrapper); - } - if (taskHeader.getInternalTaskType().equals(QuantityConstant.TASK_INTENERTYPE_WORK)) { - if (taskHeader.getFromLocation() != null) { - //更新托盘、库位状态 - locationService.updateStatus(taskHeader.getFromLocation(), QuantityConstant.STATUS_EMPTY); - } - if (taskHeader.getToLocation() != null) { - //更新托盘、库位状态 - locationService.updateStatus(taskHeader.getToLocation(), QuantityConstant.STATUS_EMPTY); - } - LambdaQueryWrapper<InventoryHeader> inventoryHeaderLambdaQueryWrapper = Wrappers.lambdaQuery(); - inventoryHeaderLambdaQueryWrapper.eq(InventoryHeader::getContainerCode, taskHeader.getContainerCode()); - InventoryHeader inventoryHeader = inventoryHeaderService.getOne(inventoryHeaderLambdaQueryWrapper); - Container container = new Container(); - container.setStatus(QuantityConstant.STATUS_EMPTY); - if(inventoryHeader != null) { - if(QuantityConstant.STATUS_SOME.equals(inventoryHeader.getContainerStatus())) { - container.setStatus(QuantityConstant.STATUS_SOME); - } - } - container.setLocationCode(taskHeader.getFromLocation()); - LambdaUpdateWrapper<Container> containerUpdateWrapper = Wrappers.lambdaUpdate(); - containerUpdateWrapper.eq(Container::getCode, taskHeader.getContainerCode()); - containerService.update(container, containerUpdateWrapper); - } - if (taskHeader.getInternalTaskType().equals(QuantityConstant.TASK_INTENERTYPE_SHELF) || taskHeader.getInternalTaskType().equals(QuantityConstant.TASK_INTENERTYPE_PICKING)) { - if (StringUtils.isNotEmpty(taskHeader.getToLocation()) && taskHeader.getInternalTaskType().equals(QuantityConstant.TASK_INTENERTYPE_SHELF) ) { - //更新托盘、库位状态 - locationService.updateStatus(taskHeader.getToLocation(), QuantityConstant.STATUS_EMPTY); + int taskType = taskHeader.getTaskType().intValue(); + switch (taskType) { + case QuantityConstant.TASK_TYPE_WHOLERECEIPT: + case QuantityConstant.TASK_TYPE_SUPPLEMENTRECEIPT: LambdaQueryWrapper<ReceiptContainerHeader> lambda = Wrappers.lambdaQuery(); lambda.eq(ReceiptContainerHeader::getContainerCode, taskHeader.getContainerCode()) .ne(ReceiptContainerHeader::getStatus, QuantityConstant.RECEIPT_CONTAINER_FINISHED) @@ -295,33 +226,63 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea receiptContainerDetail.setLocationCode(""); receiptContainerDetailService.update(receiptContainerDetail, receiptContainerDetailLambdaQueryWrapper1); } - } - if (StringUtils.isNotEmpty(taskHeader.getFromLocation())) { - //更新托盘、库位状态 - locationService.updateStatus(taskHeader.getFromLocation(), QuantityConstant.STATUS_EMPTY); - } - LambdaQueryWrapper<InventoryHeader> inventoryHeaderLambdaQueryWrapper = Wrappers.lambdaQuery(); - inventoryHeaderLambdaQueryWrapper.eq(InventoryHeader::getContainerCode, taskHeader.getContainerCode()); - InventoryHeader inventoryHeader = inventoryHeaderService.getOne(inventoryHeaderLambdaQueryWrapper); - Container container = new Container(); - container.setStatus(QuantityConstant.STATUS_EMPTY); - if(inventoryHeader != null) { - if(QuantityConstant.STATUS_SOME.equals(inventoryHeader.getContainerStatus())) { - container.setStatus(QuantityConstant.STATUS_SOME); + break; + case QuantityConstant.TASK_TYPE_WHOLESHIPMENT: + case QuantityConstant.TASK_TYPE_SORTINGSHIPMENT: + + break; + case QuantityConstant.TASK_TYPE_CYCLECOUNT: + CycleCountDetail cycleCountDetail = new CycleCountDetail(); + cycleCountDetail.setCompanyCode(taskDetail.getCompanyCode()); + cycleCountDetail.setWarehouseCode(taskDetail.getWarehouseCode()); + cycleCountDetail.setLocationCode(taskDetail.getFromLocation()); + cycleCountDetail.setContainerCode(taskDetail.getContainerCode()); + cycleCountDetail.setCycleCountHeadCode(taskDetail.getBillCode());//盘点单Code + cycleCountDetail.setId(taskDetail.getBillDetailId());//盘点细单ID + LambdaQueryWrapper<CycleCountDetail> lam = Wrappers.lambdaQuery(cycleCountDetail); + List<CycleCountDetail> cycleCountDetailList = cycleCountDetailService.list(lam);// + for (CycleCountDetail item : cycleCountDetailList) { + item.setTaskHeaderId(null); + item.setTaskHeaderId(null); + item.setLastUpdated(new Date()); + item.setLastUpdatedBy(ShiroUtils.getLoginName()); + item.setEnableStatus(1); + cycleCountDetailService.saveOrUpdate(item); } - } - LambdaUpdateWrapper<Container> containerUpdateWrapper = Wrappers.lambdaUpdate(); - containerUpdateWrapper.eq(Container::getCode, taskHeader.getContainerCode()); - containerService.update(container, containerUpdateWrapper); + break; + default: + break; } -// if(task.getType()==900){ -// //出库查看任务没有关联的货箱,不做处理 -// } + cancelLocationAndContainerStatus(taskHeader); } - return AjaxResult.success("取消任务成功!"); } + private void cancelLocationAndContainerStatus(TaskHeader taskHeader) { + if (taskHeader.getFromLocation() != null) { + //更新托盘、库位状态 + locationService.updateStatus(taskHeader.getFromLocation(), QuantityConstant.STATUS_EMPTY); + } + if (taskHeader.getToLocation() != null) { + //更新托盘、库位状态 + locationService.updateStatus(taskHeader.getToLocation(), QuantityConstant.STATUS_EMPTY); + } + LambdaQueryWrapper<InventoryHeader> inventoryHeaderLambdaQueryWrapper = Wrappers.lambdaQuery(); + inventoryHeaderLambdaQueryWrapper.eq(InventoryHeader::getContainerCode, taskHeader.getContainerCode()); + InventoryHeader inventoryHeader = inventoryHeaderService.getOne(inventoryHeaderLambdaQueryWrapper); + Container container = new Container(); + container.setStatus(QuantityConstant.STATUS_EMPTY); + if(inventoryHeader != null) { + if(QuantityConstant.STATUS_SOME.equals(inventoryHeader.getContainerStatus())) { + container.setStatus(QuantityConstant.STATUS_SOME); + } + } + container.setLocationCode(taskHeader.getFromLocation()); + LambdaUpdateWrapper<Container> containerUpdateWrapper = Wrappers.lambdaUpdate(); + containerUpdateWrapper.eq(Container::getCode, taskHeader.getContainerCode()); + containerService.update(container, containerUpdateWrapper); + } + /** * 下发WCS执行任务 * 执行任务 @@ -338,13 +299,11 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea } // 给wcs传递任务 - AjaxResult ajaxResult = taskAssignService.wcsTaskAssign(task); if(ajaxResult != null && ajaxResult.hasErr()) { return AjaxResult.error(ajaxResult.getMsg()); } - //修改任务头表 task.setId(taskId); task.setStatus(QuantityConstant.TASK_STATUS_RELEASE); @@ -425,36 +384,39 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea * @param task */ public void completeTask(TaskHeader task) { + int taskType = task.getTaskType().intValue(); //区分任务类型 - if (task.getInternalTaskType().equals(QuantityConstant.TASK_INTENERTYPE_SHELF) ) { - //入库任务 - receiptTaskService.completeReceiptTask(task); - combineInventory(task); - } - if (task.getInternalTaskType().equals(QuantityConstant.TASK_INTENERTYPE_PICKING) && - (task.getTaskType().equals(QuantityConstant.TASK_TYPE_WHOLESHIPMENT) || task.getTaskType().equals(QuantityConstant.TASK_TYPE_SORTINGSHIPMENT))) { - //出库任务 - shipmentTaskService.completeShipmentTask(task); - } - // 900 出库查看,空托出库查看 - if (task.getTaskType().equals( QuantityConstant.TASK_TYPE_VIEW)) { - workTaskService.completeCheckOutTask(task); - } - // 700 盘点 - if (task.getTaskType().equals(QuantityConstant.TASK_TYPE_CYCLECOUNT)) { - cycleCountTaskService.completeCycleCountTask(task); - } - if (task.getTaskType().equals( QuantityConstant.TASK_TYPE_TRANSFER)) { -// //移库 - transferTaskService.completeTransferTask(task); - } - if (task.getTaskType().equals( QuantityConstant.TASK_TYPE_EMPTYRECEIPT)) { - //空托盘入库 - workTaskService.completeEmptyIn(task); - } - if (task.getTaskType().equals(QuantityConstant.TASK_TYPE_EMPTYSHIPMENT) ) { - //空托盘出库 - workTaskService.completeEmptyOut(task); + switch(taskType) { + //整盘入库、补充入库 + case QuantityConstant.TASK_TYPE_WHOLERECEIPT: + case QuantityConstant.TASK_TYPE_SUPPLEMENTRECEIPT: + receiptTaskService.completeReceiptTask(task); + combineInventory(task); + break; + //整盘出库、分拣出库 + case QuantityConstant.TASK_TYPE_WHOLESHIPMENT: + case QuantityConstant.TASK_TYPE_SORTINGSHIPMENT: + shipmentTaskService.completeShipmentTask(task); + break; + //空托入库 + case QuantityConstant.TASK_TYPE_EMPTYRECEIPT: + workTaskService.completeEmptyIn(task); + break; + //空托出库 + case QuantityConstant.TASK_TYPE_EMPTYSHIPMENT: + workTaskService.completeEmptyOut(task); + break; + case QuantityConstant.TASK_TYPE_CYCLECOUNT: + cycleCountTaskService.completeCycleCountTask(task); + break; + case QuantityConstant.TASK_TYPE_TRANSFER: + transferTaskService.completeTransferTask(task); + break; + case QuantityConstant.TASK_TYPE_VIEW: + workTaskService.completeCheckOutTask(task); + break; + default: + throw new ServiceException("不支持的任务类型"); } } @@ -469,7 +431,8 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea @Transactional(rollbackFor = Exception.class) public AjaxResult completeTask(String locationCode) { LambdaQueryWrapper<TaskHeader> taskQueryWrapper = Wrappers.lambdaQuery(); - taskQueryWrapper.eq(TaskHeader::getToLocation, locationCode); + taskQueryWrapper.eq(TaskHeader::getToLocation, locationCode) + .lt(TaskHeader::getStatus, QuantityConstant.TASK_STATUS_COMPLETED); List<TaskHeader> list = this.list(taskQueryWrapper); if (list.isEmpty()) { throw new ServiceException("库位(" + locationCode + ")没有任务!"); @@ -477,9 +440,12 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea //如果已完成则不管 throw new ServiceException("库位(" + locationCode + ")任务已经完成!"); } - if(list.get(0).getInternalTaskType().equals(QuantityConstant.TASK_INTENERTYPE_SHELF)){ + TaskHeader taskHeader = list.get(0); + int taskType = taskHeader.getTaskType().intValue(); + if(taskType == QuantityConstant.TASK_TYPE_WHOLERECEIPT + || taskType == QuantityConstant.TASK_TYPE_SUPPLEMENTRECEIPT){ //入库任务 - return receiptTaskService.completeReceiptTask((list.get(0))); + return receiptTaskService.completeReceiptTask(taskHeader); } else { throw new ServiceException("库位(" + locationCode + ")的任务不是上架,不能完成!"); } diff --git a/src/main/java/com/huaheng/pc/task/taskHeader/service/TransferTaskService.java b/src/main/java/com/huaheng/pc/task/taskHeader/service/TransferTaskService.java index 6bf6b54..87b3f77 100644 --- a/src/main/java/com/huaheng/pc/task/taskHeader/service/TransferTaskService.java +++ b/src/main/java/com/huaheng/pc/task/taskHeader/service/TransferTaskService.java @@ -98,6 +98,10 @@ public class TransferTaskService { return AjaxResult.error("目标库位和源库位不在同一个巷道"); } + if(!sourceLocation.getArea().equals(desLocation.getArea())) { + return AjaxResult.error("目标库位和源库位不在同一个区域"); + } + if(sourceLocation.getRowFlag() == 1) { Location location1 = locationService.getNear(sourceLocation); //内侧库位 String locationCode = location1.getCode(); @@ -125,7 +129,7 @@ public class TransferTaskService { TaskHeader taskHeader = new TaskHeader(); taskHeader.setWarehouseCode(ShiroUtils.getWarehouseCode()); taskHeader.setTaskType(QuantityConstant.TASK_TYPE_TRANSFER); - taskHeader.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_TRANSFER); + taskHeader.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_WORK); taskHeader.setContainerCode(sourceLocation.getContainerCode()); taskHeader.setFromLocation(sourceLocationCode); taskHeader.setToLocation(desLocationCode); diff --git a/src/main/java/com/huaheng/pc/task/taskHeader/service/WorkTaskService.java b/src/main/java/com/huaheng/pc/task/taskHeader/service/WorkTaskService.java index 0e203f3..2b0ec77 100644 --- a/src/main/java/com/huaheng/pc/task/taskHeader/service/WorkTaskService.java +++ b/src/main/java/com/huaheng/pc/task/taskHeader/service/WorkTaskService.java @@ -133,8 +133,7 @@ public class WorkTaskService { TaskHeader taskHeader = new TaskHeader(); taskHeader.setWarehouseCode(ShiroUtils.getWarehouseCode()); taskHeader.setTaskType(QuantityConstant.TASK_TYPE_EMPTYRECEIPT); - - taskHeader.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_WORK); + taskHeader.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_RECEIPT); taskHeader.setContainerCode(containerCode); taskHeader.setToLocation(destinationLocation); taskHeader.setStatus(QuantityConstant.TASK_STATUS_BUILD); @@ -146,20 +145,7 @@ public class WorkTaskService { } else { throw new ServiceException("空托入库主表生成失败!"); } - //写入任务细表 - TaskDetail taskDetail = new TaskDetail(); - taskDetail.setTaskId(taskHeader.getId()); - taskDetail.setTaskType(taskHeader.getTaskType()); - taskDetail.setInternalTaskType(taskHeader.getInternalTaskType()); - taskDetail.setWarehouseCode(taskHeader.getWarehouseCode()); - taskDetail.setCompanyCode(container.getCompanyCode()); - taskDetail.setFromLocation(taskHeader.getFromLocation()); - taskDetail.setToLocation(taskHeader.getToLocation()); - taskDetail.setContainerCode(taskHeader.getContainerCode()); - if(!taskDetailService.save(taskDetail)){ - throw new ServiceException("空托入库任务明细生成失败!"); - } //锁库位 if (StringUtils.isNotEmpty(destinationLocation)) { locationService.updateStatus(destinationLocation, QuantityConstant.STATUS_LOCK); @@ -231,15 +217,14 @@ public class WorkTaskService { if (inventoryDetailService.count(queryWrapper) > 0) { return AjaxResult.error("该库位上有库存,无法空托出库!"); } - locationCode = location.getCode(); conCode = location.getContainerCode(); } TaskHeader taskHeader = new TaskHeader(); taskHeader.setWarehouseCode(ShiroUtils.getWarehouseCode()); - taskHeader.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_WORK); taskHeader.setTaskType(QuantityConstant.TASK_TYPE_EMPTYSHIPMENT); + taskHeader.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_SHIPMENT); taskHeader.setContainerCode(conCode); taskHeader.setStatus(QuantityConstant.TASK_STATUS_BUILD); taskHeader.setFromLocation(locationCode); @@ -279,12 +264,7 @@ public class WorkTaskService { */ public AjaxResult completeEmptyIn(TaskHeader taskHeader) { taskHeader.setStatus(QuantityConstant.TASK_STATUS_COMPLETED); - List<TaskDetail> taskDetailList = taskDetailService.findByTaskId(taskHeader.getId()); - for (TaskDetail item : taskDetailList) { - item.setStatus(QuantityConstant.TASK_STATUS_COMPLETED); - } - if (!taskDetailService.updateBatchById(taskDetailList) || - !taskHeaderService.updateById(taskHeader)) { + if (!taskHeaderService.updateById(taskHeader)) { throw new ServiceException("任务单据状态更新失败!"); } @@ -302,12 +282,7 @@ public class WorkTaskService { */ public AjaxResult completeEmptyOut(TaskHeader taskHeader) { taskHeader.setStatus(QuantityConstant.TASK_STATUS_COMPLETED); - List<TaskDetail> taskDetailList = taskDetailService.findByTaskId(taskHeader.getId()); - for (TaskDetail item : taskDetailList) { - item.setStatus(QuantityConstant.TASK_STATUS_COMPLETED); - } - if (!taskDetailService.updateBatchById(taskDetailList) || - !taskHeaderService.updateById(taskHeader)) { + if (!taskHeaderService.updateById(taskHeader)) { throw new ServiceException("任务单据状态更新失败!"); } //解锁容器,更新库位 @@ -525,8 +500,8 @@ public class WorkTaskService { } TaskHeader taskHeader = new TaskHeader(); taskHeader.setWarehouseCode(ShiroUtils.getWarehouseCode()); - taskHeader.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_WORK); taskHeader.setTaskType(QuantityConstant.TASK_TYPE_VIEW); + taskHeader.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_WORK); taskHeader.setContainerCode(conCode); taskHeader.setStatus(QuantityConstant.TASK_STATUS_BUILD); taskHeader.setFromLocation(locationCode); diff --git a/src/main/resources/templates/admin/adminLogin.html b/src/main/resources/templates/admin/adminLogin.html index 9602642..657c09e 100644 --- a/src/main/resources/templates/admin/adminLogin.html +++ b/src/main/resources/templates/admin/adminLogin.html @@ -78,7 +78,7 @@ </div> <div class="signup-footer"> <div class="pull-left"> - © 2018 All Rights Reserved. 长沙华恒机器人系统有限公司 + © 2021 All Rights Reserved. 长沙华恒机器人系统有限公司 </div> </div> </div> diff --git a/src/main/resources/templates/config/container/container.html b/src/main/resources/templates/config/container/container.html index f16bf88..11d06ee 100644 --- a/src/main/resources/templates/config/container/container.html +++ b/src/main/resources/templates/config/container/container.html @@ -190,7 +190,7 @@ align: 'center', formatter: function(value, row, index) { var actions = []; - //actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="#" onclick="$.operate.checklook(\'' + row.id + '\')"><i class="fa fa-search"></i>查看</a> '); + actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="#" onclick="$.operate.edit(\'' + row.id + '\')"><i class="fa fa-edit"></i>编辑</a> '); actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="#" onclick="$.operate.remove(\'' + row.id + '\')"><i class="fa fa-trash-o"></i>删除</a>'); return actions.join(''); } diff --git a/src/main/resources/templates/config/container/edit.html b/src/main/resources/templates/config/container/edit.html index 66c88bc..856bd9a 100644 --- a/src/main/resources/templates/config/container/edit.html +++ b/src/main/resources/templates/config/container/edit.html @@ -12,14 +12,6 @@ <input id="code" name="code" th:field="*{code}" class="form-control" type="text" readonly="true"> </div> </div> - <div class="form-group"> - <label class="col-sm-3 control-label">容器类型:</label> - <div class="col-sm-8"> - <select id="type" class="form-control m-b" th:with="containerType=${@containerType.getPrefix()}" readonly="true" disabled="disabled"> - <option th:each="item : ${containerType}" th:text="${item['name']}" th:value="${item['prefix']}" th:field="*{type}"></option> - </select> - </div> - </div> <!--<div class="form-group"> --> <!--<label class="col-sm-3 control-label">库位id:</label>--> <!--<div class="col-sm-8">--> @@ -29,30 +21,18 @@ <div class="form-group"> <label class="col-sm-3 control-label">库位编码:</label> <div class="col-sm-8"> - <input id="locationCode" name="locationCode" th:field="*{locationCode}" class="form-control" type="text" readonly="true"> + <input id="locationCode" name="locationCode" th:field="*{locationCode}" class="form-control" type="text"> </div> </div> <div class="form-group"> <label class="col-sm-3 control-label">状态:</label> <div class="col-sm-8"> - <select name="type" id="status" class="form-control m-b" th:with="dictLabel=${@dict.getType('containerStatus')}" disabled="disabled"> + <select name="type" id="status" class="form-control m-b" th:with="dictLabel=${@dict.getType('containerStatus')}"> <option th:each="dict : ${dictLabel}" th:text="${dict['dictLabel']}" th:value="${dict['dictValue']}" th:field="*{status}"></option> </select> </div> </div> - <div class="form-group"> - <label class="col-sm-3 control-label">AGV货架:</label> - <div class="col-sm-8"> - <input id="goodsShlfNo" name="goodsShlfNo" th:field="*{goodsShlfNo}" class="form-control" type="text" > - </div> - </div> - <div class="form-group"> - <label class="col-sm-3 control-label">打印次数:</label> - <div class="col-sm-8"> - <input id="printCount" name="printCount" th:field="*{printCount}" class="form-control" type="text" readonly="true"> - </div> - </div> <!--<div class="form-group"> --> <!--<label class="col-sm-3 control-label">创建时间:</label>--> <!--<div class="col-sm-8">--> @@ -121,7 +101,7 @@ <!--</div>--> <div class="form-group"> <div class="form-control-static col-sm-offset-9"> - <!--<button type="submit" class="btn btn-primary">提交</button>--> + <button type="submit" class="btn btn-primary">提交</button> <button onclick="$.modal.close()" class="btn btn-danger" type="button">关闭</button> </div> </div> diff --git a/src/main/resources/templates/config/location/edit.html b/src/main/resources/templates/config/location/edit.html index 3c5c3f8..08f4f0d 100644 --- a/src/main/resources/templates/config/location/edit.html +++ b/src/main/resources/templates/config/location/edit.html @@ -57,24 +57,17 @@ </div> </div> <div class="form-group"> - <label class="col-sm-3 control-label">容器编码:</label> + <label class="col-sm-3 control-label">容器编号:</label> <div class="col-sm-8"> - <input id="containerCode" name="containerCode" th:field="*{containerCode}" class="form-control" type="text" readonly="true"> + <input id="containerCode" name="containerCode" th:field="*{containerCode}" class="form-control" type="text"> </div> </div> -<!-- <div class="form-group">--> -<!-- <label class="col-sm-3 control-label">库区编码:</label>--> -<!-- <div class="col-sm-8">--> -<!-- <select id="zoneCode" class="form-control" th:with="zone=${@zone.getZoneCodeList()}" readonly="true" disabled="disabled">--> -<!-- <option th:each="item : ${zone}" th:text="${item['name']}" th:value="${item['code']}" th:field="*{zoneCode}" ></option>--> -<!-- </select>--> -<!-- </div>--> -<!-- </div>--> <div class="form-group"> - <label class="col-sm-3 control-label">状态:</label> + <label class="col-sm-3 control-label">库位状态:</label> <div class="col-sm-8"> - <select id="status" class="form-control m-b" th:with="type=${@dict.getType('locationStatus')}" readonly="true" disabled="disabled"> + <select id="status" name="status" class="form-control"> <option value="empty">空闲</option> + <option value="lock">占用</option> <option value="disable">禁用</option> </select> </div> @@ -98,7 +91,8 @@ url : prefix + "/edit", data : { "id": $("input[name='id']").val(), - "enable" : $("input[name='enable']").is(':checked') + "containerCode" : $("input[name='containerCode']").val(), + "status" : $("#status option:selected").val(), }, async : false, error : function(request) { diff --git a/src/main/resources/templates/config/location/editBatch.html b/src/main/resources/templates/config/location/editBatch.html index aafa924..ce71412 100644 --- a/src/main/resources/templates/config/location/editBatch.html +++ b/src/main/resources/templates/config/location/editBatch.html @@ -9,7 +9,7 @@ <div class="form-group"> <label class="col-sm-3 control-label">区域:</label> <div class="col-sm-8"> - <select id="area" name="area" class="form-control" th:with="areas=${@dict.getType('areas')}"> + <select id="area" name="area" class="form-control" th:with="areas=${@dict.getType('material_areas')}"> <option th:each="item : ${areas}" th:text="${item['dictLabel']}" th:value="${item['dictValue']}"></option> </select> </div> diff --git a/src/main/resources/templates/config/material/editBatch.html b/src/main/resources/templates/config/material/editBatch.html index e2652f4..f3c7f82 100644 --- a/src/main/resources/templates/config/material/editBatch.html +++ b/src/main/resources/templates/config/material/editBatch.html @@ -9,7 +9,7 @@ <div class="form-group"> <label class="col-sm-3 control-label">物料分区</label> <div class="col-sm-8"> - <select id="area" name="area" class="form-control" th:with="areas=${@dict.getType('areas')}"> + <select id="area" name="area" class="form-control" th:with="areas=${@dict.getType('material_areas')}"> <option th:each="item : ${areas}" th:text="${item['dictLabel']}" th:value="${item['dictValue']}"></option> </select> </div> diff --git a/src/main/resources/templates/inventory/inventoryHeader/checkOut.html b/src/main/resources/templates/inventory/inventoryHeader/checkOut.html index 560c150..d0d2329 100644 --- a/src/main/resources/templates/inventory/inventoryHeader/checkOut.html +++ b/src/main/resources/templates/inventory/inventoryHeader/checkOut.html @@ -11,10 +11,21 @@ <div class="form-group"> <label class="col-sm-3 control-label">库存ID:</label> <div class="col-sm-8"> - <input id="ids" name="ids" class="form-control" type="text" oninput="myFunction()"> + <input id="ids" name="ids" class="form-control" type="text" oninput="myFunction()" th:value="${id}" readonly> + </div> + </div> + <div class="form-group"> + <label class="col-sm-3 control-label">容器编码:</label> + <div class="col-sm-8"> + <input id="containerCode" name="containerCode" class="form-control" type="text" th:value="${locationCode}" readonly> + </div> + </div> + <div class="form-group"> + <label class="col-sm-3 control-label">库位编码:</label> + <div class="col-sm-8"> + <input id="sourceLocation" name="sourceLocation" class="form-control" type="text" th:value="${containerCode}" readonly> </div> </div> - <div class="form-group"> <label class="col-sm-3 control-label">出库站台:</label> <div class="col-sm-8"> diff --git a/src/main/resources/templates/inventory/inventoryHeader/emptyOut.html b/src/main/resources/templates/inventory/inventoryHeader/emptyOut.html index a291603..a17f485 100644 --- a/src/main/resources/templates/inventory/inventoryHeader/emptyOut.html +++ b/src/main/resources/templates/inventory/inventoryHeader/emptyOut.html @@ -73,9 +73,8 @@ }); } - $(function () { + myFunction() - }) function selectEmptyOut() { $.modal.open("空托盘选取",prefix+"/listEmpty",780); diff --git a/src/main/resources/templates/inventory/inventoryHeader/inventoryHeader.html b/src/main/resources/templates/inventory/inventoryHeader/inventoryHeader.html index 9cd77dd..8dde2c3 100644 --- a/src/main/resources/templates/inventory/inventoryHeader/inventoryHeader.html +++ b/src/main/resources/templates/inventory/inventoryHeader/inventoryHeader.html @@ -99,7 +99,7 @@ search: false, columns: [ { - checkbox: true + radio: true }, { field: 'id', @@ -278,7 +278,12 @@ } function checkOut() { - $.modal.open("出库查看",prefix+"/checkOut") + let rows = $("#bootstrap-table").bootstrapTable('getSelections') + if (rows.length != 1) { + $.modal.alertWarning("请选择一条记录"); + return; + } + $.modal.open("出库查看", prefix+"/checkOut/"+rows[0].id) } function emptyCheckOut() { diff --git a/src/main/resources/templates/login.html b/src/main/resources/templates/login.html index 95b63bf..acf6c54 100644 --- a/src/main/resources/templates/login.html +++ b/src/main/resources/templates/login.html @@ -85,7 +85,7 @@ </div> <div class="signup-footer"> <div class="pull-left"> - © 2021 All Rights Reserved. 长沙华恒机器人系统有限公司 + © [[${copyrightYear}]] All Rights Reserved. 长沙华恒机器人系统有限公司 </div> </div> </div> diff --git a/src/main/resources/templates/receipt/reservation/view.html b/src/main/resources/templates/receipt/reservation/view.html index 30a9907..2779d74 100644 --- a/src/main/resources/templates/receipt/reservation/view.html +++ b/src/main/resources/templates/receipt/reservation/view.html @@ -31,6 +31,7 @@ <div th:include="include :: footer"></div> <script th:inline="javascript"> let prefix = ctx+"reservation"; + let date = $("#tab0-0").text(); $(function () { load(); }) diff --git a/src/main/resources/templates/task/taskHeader/taskHeader.html b/src/main/resources/templates/task/taskHeader/taskHeader.html index 1ceeff2..e925009 100644 --- a/src/main/resources/templates/task/taskHeader/taskHeader.html +++ b/src/main/resources/templates/task/taskHeader/taskHeader.html @@ -164,7 +164,7 @@ var actions = []; actions.push('<a class="btn btn-info btn-xs " href="#" onclick="detail(\'' + row.id + '\')"><i class="fa fa-list-ul"></i>明细</a> '); if (row.status < 10) { - if(row.taskType == 300 || row.taskType == 400 || row.taskType == 900) { + if(row.taskType == 200 || row.taskType == 300 || row.taskType == 400 || row.taskType == 900) { actions.push('<a class="btn btn-success btn-xs ' + executeFlag + '" href="#" onclick="chooseStation(\'' + row.id + '\')"><i class="fa fa-send" style="padding-right: 1px;"></i>执行</a> '); } else { actions.push('<a class="btn btn-success btn-xs ' + executeFlag + '" href="#" onclick="execute(\'' + row.id + '\')"><i class="fa fa-send" style="padding-right: 1px;"></i>执行</a> '); @@ -173,6 +173,7 @@ actions.push('<a class="btn btn-primary btn-xs ' + completeFlag + '" href="#" onclick="complete(\'' + row.id + '\')"><i class="fa fa-check"></i>完成</a>'); } if (row.status >= 10 && row.status < 100) { + actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="#" onclick="$.operate.remove(\'' + row.id + '\')"><i class="fa fa-remove"></i>取消</a> '); actions.push('<a class="btn btn-primary btn-xs ' + completeFlag + '" href="#" onclick="complete(\'' + row.id + '\')"><i class="fa fa-check"></i>完成</a>'); } return actions.join('');