diff --git a/src/main/java/com/huaheng/api/wcs/controller/EmptyOutHandle.java b/src/main/java/com/huaheng/api/wcs/controller/EmptyOutHandle.java index 14f8a76..878e0b1 100644 --- a/src/main/java/com/huaheng/api/wcs/controller/EmptyOutHandle.java +++ b/src/main/java/com/huaheng/api/wcs/controller/EmptyOutHandle.java @@ -21,7 +21,7 @@ import javax.annotation.Resource; */ @RestController -@RequestMapping("/WCS/v1") +@RequestMapping("/WCS/v2") @Api(tags = {"OverrideHandle"}, description = "wcs空出处理接口") public class EmptyOutHandle extends BaseController { diff --git a/src/main/java/com/huaheng/api/wcs/controller/OverrideHandle.java b/src/main/java/com/huaheng/api/wcs/controller/OverrideHandle.java index bb2f570..e694aae 100644 --- a/src/main/java/com/huaheng/api/wcs/controller/OverrideHandle.java +++ b/src/main/java/com/huaheng/api/wcs/controller/OverrideHandle.java @@ -1,8 +1,7 @@ package com.huaheng.api.wcs.controller; -import com.huaheng.api.wcs.domain.WcsTask; +import com.huaheng.api.wcs.domain.TaskFinishDomain; import com.huaheng.api.wcs.service.overrideHandle.OverrideHandleService; -import com.huaheng.api.wcs.service.taskFinish.TaskFinishService; import com.huaheng.framework.aspectj.lang.annotation.Log; import com.huaheng.framework.aspectj.lang.constant.BusinessType; import com.huaheng.framework.web.controller.BaseController; @@ -21,7 +20,7 @@ import javax.annotation.Resource; */ @RestController -@RequestMapping("/WCS/v1") +@RequestMapping("/WCS/v2") @Api(tags = {"OverrideHandle"}, description = "wcs重入处理接口") public class OverrideHandle extends BaseController { @@ -32,9 +31,9 @@ public class OverrideHandle extends BaseController { @PostMapping("/OverrideHandle") @ApiOperation("wcs重入处理") @ResponseBody - public AjaxResult OverrideHandle(@RequestBody WcsTask wcsTask) + public AjaxResult OverrideHandle(@RequestBody TaskFinishDomain taskFinishDomain) { - AjaxResult ajaxResult =overrideHandleService.OverrideHandle(wcsTask) ; + AjaxResult ajaxResult =overrideHandleService.OverrideHandle(taskFinishDomain) ; return ajaxResult; } diff --git a/src/main/java/com/huaheng/api/wcs/controller/TaskFinish.java b/src/main/java/com/huaheng/api/wcs/controller/TaskFinish.java index 2390a61..1400d10 100644 --- a/src/main/java/com/huaheng/api/wcs/controller/TaskFinish.java +++ b/src/main/java/com/huaheng/api/wcs/controller/TaskFinish.java @@ -1,5 +1,6 @@ package com.huaheng.api.wcs.controller; +import com.huaheng.api.wcs.domain.TaskFinishDomain; import com.huaheng.api.wcs.domain.WcsTask; import com.huaheng.api.wcs.service.taskFinish.TaskFinishService; import com.huaheng.framework.aspectj.lang.annotation.Log; @@ -20,7 +21,7 @@ import javax.annotation.Resource; */ @RestController -@RequestMapping("/WCS/v1") +@RequestMapping("/WCS/v2") @Api(tags = {"TaskFinish"}, description = "wcs任务完成数据接口") public class TaskFinish extends BaseController { @@ -31,9 +32,9 @@ public class TaskFinish extends BaseController { @PostMapping("/TaskFinish") @ApiOperation("wcs任务完成") @ResponseBody - public AjaxResult TaskFinish(@RequestBody WcsTask wcsTask) + public AjaxResult TaskFinish(@RequestBody TaskFinishDomain taskFinishDomain) { - AjaxResult ajaxResult =taskFinishService.completeTaskByWCS(wcsTask) ; + AjaxResult ajaxResult =taskFinishService.completeTaskByWCS(taskFinishDomain) ; return ajaxResult; } diff --git a/src/main/java/com/huaheng/api/wcs/controller/WarecellAllocation.java b/src/main/java/com/huaheng/api/wcs/controller/WarecellAllocation.java index 4fe9415..a685950 100644 --- a/src/main/java/com/huaheng/api/wcs/controller/WarecellAllocation.java +++ b/src/main/java/com/huaheng/api/wcs/controller/WarecellAllocation.java @@ -21,7 +21,7 @@ import javax.annotation.Resource; */ @RestController -@RequestMapping("/WCS/v1") +@RequestMapping("/WCS/v2") @Api(tags = {"WarecellAllocation"}, description = "wcs仓位分配接口") public class WarecellAllocation extends BaseController { @@ -30,7 +30,7 @@ public class WarecellAllocation extends BaseController { @Log(title = "wcs仓位分配", action = BusinessType.INSERT) @PostMapping("/WarecellAllocation") - @ApiOperation("wcs仓位分配") + @ApiOperation(value="wcs仓位分配", notes="wcs仓位分配", httpMethod = "POST") @ResponseBody public AjaxResult WarecellAllocation(@RequestBody WcsTask wcsTask) { diff --git a/src/main/java/com/huaheng/api/wcs/domain/TaskDetails.java b/src/main/java/com/huaheng/api/wcs/domain/TaskDetails.java new file mode 100644 index 0000000..d92a09a --- /dev/null +++ b/src/main/java/com/huaheng/api/wcs/domain/TaskDetails.java @@ -0,0 +1,27 @@ +package com.huaheng.api.wcs.domain; + +import lombok.Data; + +import java.math.BigDecimal; + +/** + * Created by Enzo Cotter on 2019/10/15. + */ +@Data +public class TaskDetails { + + //关联行号,string (50),默认0 ",必填 + private String referLineNo; + + //物料编码,string (50),默认0 ",必填 + private String materialCode; + + //物料名称 + private String materialName; + + //数量,float,默认“0” ,必填" + private BigDecimal qty; + + //单位,string(20),默认“PCS” ,必填" + private String unit; +} diff --git a/src/main/java/com/huaheng/api/wcs/domain/TaskFinishDomain.java b/src/main/java/com/huaheng/api/wcs/domain/TaskFinishDomain.java new file mode 100644 index 0000000..2ba3544 --- /dev/null +++ b/src/main/java/com/huaheng/api/wcs/domain/TaskFinishDomain.java @@ -0,0 +1,26 @@ +package com.huaheng.api.wcs.domain; + +import lombok.Data; + +/** + * 任务完成和重入实体类 + * Created by Enzo Cotter on 2019/10/15. + */ +@Data +public class TaskFinishDomain { + + //任务号 + private String taskNo; + + //重入,int,1:重入 0:正常,必填 + private Integer isDoubleIn; + + //空出,int,1:空出 0:正常,必填 + private Integer isEmptyOut; + + //重入的库位编码,string (50),默认0,必填 + private String redirectionLocationCode; + + //目的位置编码,string (50),默认0 ",必填 + private String toLocationCode; +} diff --git a/src/main/java/com/huaheng/api/wcs/domain/WcsTask.java b/src/main/java/com/huaheng/api/wcs/domain/WcsTask.java index 405da20..376c2a7 100644 --- a/src/main/java/com/huaheng/api/wcs/domain/WcsTask.java +++ b/src/main/java/com/huaheng/api/wcs/domain/WcsTask.java @@ -1,12 +1,17 @@ package com.huaheng.api.wcs.domain; +import lombok.Data; + import java.io.Serializable; +import java.util.List; /** * wcs任务接口实体层 * @author ricard * @date 2019/10/11 */ + +@Data public class WcsTask implements Serializable { private static final long serialVersionUID = -8855840499538794854L; @@ -23,7 +28,13 @@ public class WcsTask implements Serializable { private String platform; //容器编码 - private String palletNo; + private String containerCode; + + //来源口”,一般用于指定入库口,string (50),默认0,必填 + private String fromPort; + + //目的口”,出库性质的任务必须填写,string (50),默认0,必填 + private String toPort; //源位置库位编码 private String fromLocationCode; @@ -34,138 +45,26 @@ public class WcsTask implements Serializable { //重入后再次分配的位置编码 private String locationCode; - //取消任务 - private String reason; + //优先级,int,默认100 ,数字越小优先级越高",必填 + private int priority; + + //巷道 + private String roadWay; //长 - private Float length; + private String length; //宽 - private Float width; + private String width; //高 - private Float height; + private String height; //重 - private Float weight; - - public String getTaskNo() { - return taskNo; - } - - public void setTaskNo(String taskNo) { - this.taskNo = taskNo; - } - - public String getTaskType() { - return taskType; - } - - public void setTaskType(String taskType) { - this.taskType = taskType; - } - - public String getStation() { - return station; - } - - public void setStation(String station) { - this.station = station; - } - - public String getPlatform() { - return platform; - } - - public void setPlatform(String platform) { - this.platform = platform; - } - - public String getPalletNo() { - return palletNo; - } - - public void setPalletNo(String palletNo) { - this.palletNo = palletNo; - } - - public String getFromLocationCode() { - return fromLocationCode; - } - - public void setFromLocationCode(String fromLocationCode) { - this.fromLocationCode = fromLocationCode; - } - - public String getToLocationCode() { - return toLocationCode; - } - - public void setToLocationCode(String toLocationCode) { - this.toLocationCode = toLocationCode; - } - - public String getReason() { - return reason; - } - - public void setReason(String reason) { - this.reason = reason; - } - - public float getLength() { - return length; - } - - public void setLength(float length) { - this.length = length; - } - - public float getWidth() { - return width; - } - - public void setWidth(float width) { - this.width = width; - } - - public float getHeight() { - return height; - } - - public void setHeight(float height) { - this.height = height; - } - - public float getWeight() { - return weight; - } - - public void setWeight(float weight) { - this.weight = weight; - } - - public String getLocationCode() { - return locationCode; - } - - public void setLocationCode(String locationCode) { - this.locationCode = locationCode; - } - - public void setLength(Float length) { - this.length = length; - } - - public void setWidth(Float width) { - this.width = width; - } + private String weight; - public void setHeight(Float height) { - this.height = height; - } + //备注 + private String remark; - public void setWeight(Float weight) { - this.weight = weight; - } + private List<TaskDetails> taskDetails; } diff --git a/src/main/java/com/huaheng/api/wcs/service/emptyOutHandle/EmptyOutHandleServiceImpl.java b/src/main/java/com/huaheng/api/wcs/service/emptyOutHandle/EmptyOutHandleServiceImpl.java index 0d690df..6b75a4b 100644 --- a/src/main/java/com/huaheng/api/wcs/service/emptyOutHandle/EmptyOutHandleServiceImpl.java +++ b/src/main/java/com/huaheng/api/wcs/service/emptyOutHandle/EmptyOutHandleServiceImpl.java @@ -40,7 +40,7 @@ public class EmptyOutHandleServiceImpl implements EmptyOutHandleService { } //3、修改该任务为空出,过后处理 - taskHeader.setUserDef1("空托出库"); + taskHeader.setExceptionCode("空托出库"); Boolean flag = taskHeaderService.updateById(taskHeader); if(flag == false){ return AjaxResult.error("修改任务失败,空出处理失败"); diff --git a/src/main/java/com/huaheng/api/wcs/service/overrideHandle/OverrideHandleService.java b/src/main/java/com/huaheng/api/wcs/service/overrideHandle/OverrideHandleService.java index a0da223..af4a31b 100644 --- a/src/main/java/com/huaheng/api/wcs/service/overrideHandle/OverrideHandleService.java +++ b/src/main/java/com/huaheng/api/wcs/service/overrideHandle/OverrideHandleService.java @@ -1,10 +1,11 @@ package com.huaheng.api.wcs.service.overrideHandle; +import com.huaheng.api.wcs.domain.TaskFinishDomain; import com.huaheng.api.wcs.domain.WcsTask; import com.huaheng.framework.web.domain.AjaxResult; public interface OverrideHandleService { //重入处理 - AjaxResult OverrideHandle(WcsTask wcsTask); + AjaxResult OverrideHandle(TaskFinishDomain taskFinishDomain); } 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 4451fc5..eab5af1 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 @@ -2,6 +2,7 @@ package com.huaheng.api.wcs.service.overrideHandle; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.huaheng.api.wcs.domain.TaskFinishDomain; import com.huaheng.api.wcs.domain.WcsTask; import com.huaheng.common.exception.service.ServiceException; import com.huaheng.common.utils.StringUtils; @@ -48,19 +49,24 @@ public class OverrideHandleServiceImpl implements OverrideHandleService { @Override @Transactional - public AjaxResult OverrideHandle(WcsTask wcsTask) { + public AjaxResult OverrideHandle(TaskFinishDomain taskFinishDomain) { Boolean flag = true; //1、判断非空字段 - if(StringUtils.isEmpty(wcsTask.getTaskNo())){ + if(StringUtils.isEmpty(taskFinishDomain.getTaskNo())){ return AjaxResult.error("任务号为空"); } - if(StringUtils.isEmpty(wcsTask.getToLocationCode())){ + if(StringUtils.isEmpty(taskFinishDomain.getToLocationCode())){ return AjaxResult.error("目的库位为空"); } + if(StringUtils.isEmpty(taskFinishDomain.getRedirectionLocationCode())){ + return AjaxResult.error("目的库位为空"); + } + + //2、根据任务号查找任务 - TaskHeader taskHeader = taskHeaderService.getById(Integer.valueOf(wcsTask.getTaskNo())); + TaskHeader taskHeader = taskHeaderService.getById(Integer.valueOf(taskFinishDomain.getTaskNo())); if(taskHeader == null){ return AjaxResult.error("任务号错误,没有找到该任务"); } @@ -80,16 +86,31 @@ public class OverrideHandleServiceImpl implements OverrideHandleService { return AjaxResult.error("修改此任务的原目的库位错误"); } - //查看新库位 - locationLam.eq(Location::getCode,wcsTask.getToLocationCode()) - .eq(Location::getWarehouseCode, ShiroUtils.getWarehouseCode()); - Location newlocation = locationService.getOne(locationLam); - if(newlocation == null){ - throw new ServiceException("新目的库位在系统中不存在"); + + /** + * 查看新库位有两种情况 + * 1、重入的库位由wcs提供 + * 2、重入的库位由wms提供 + */ + + Location newlocation =new Location(); + + //重入的库位由wcs提供 + if(!taskFinishDomain.getRedirectionLocationCode().equals("0")) { + locationLam.eq(Location::getCode, taskFinishDomain.getToLocationCode()) + .eq(Location::getWarehouseCode, ShiroUtils.getWarehouseCode()); + newlocation = locationService.getOne(locationLam); + if (newlocation == null) { + throw new ServiceException("新目的库位在系统中不存在"); + } + }else { + //重入的库位由wms提供 + } + //修改任务 - taskHeader.setToLocation(wcsTask.getToLocationCode()); - taskHeader.setUserDef1("重入处理"); + taskHeader.setToLocation(newlocation.getCode()); + taskHeader.setExceptionCode("重入处理"); flag = taskHeaderService.updateById(taskHeader); if(flag == false){ throw new ServiceException("修改此任务错误"); @@ -103,7 +124,7 @@ public class OverrideHandleServiceImpl implements OverrideHandleService { List<TaskDetail> taskDetailList = new ArrayList<>(); if(taskDetails != null && taskDetails.size()> 0){ for(TaskDetail taskDetail : taskDetails){ - taskDetail.setToLocation(wcsTask.getToLocationCode()); + taskDetail.setToLocation(newlocation.getCode()); taskDetailList.add(taskDetail); } flag = taskDetailService.updateBatchById(taskDetailList); @@ -120,7 +141,7 @@ public class OverrideHandleServiceImpl implements OverrideHandleService { if(receiptContainerHeader == null){ throw new ServiceException("找不到此任务的组盘头"); } - receiptContainerHeader.setToLocation(wcsTask.getToLocationCode()); + receiptContainerHeader.setToLocation(newlocation.getCode()); flag = receiptContainerHeaderService.updateById(receiptContainerHeader); if(flag == false){ throw new ServiceException("修改此任务对应的组盘头错误"); @@ -131,10 +152,11 @@ public class OverrideHandleServiceImpl implements OverrideHandleService { lam.eq(ReceiptContainerDetail::getReceiptContainerId,receiptContainerHeader.getId()) .eq(ReceiptContainerDetail::getWarehouseCode,ShiroUtils.getWarehouseCode()); List<ReceiptContainerDetail> receiptContainerDetails = receiptContainerDetailService.list(lam); + List<ReceiptContainerDetail> receiptContainerDetailList = new ArrayList<>(); if(receiptContainerDetails != null && receiptContainerDetails.size()> 0){ for(ReceiptContainerDetail receiptContainerDetail : receiptContainerDetails){ - receiptContainerDetail.setLocationCode(wcsTask.getToLocationCode()); + receiptContainerDetail.setLocationCode(newlocation.getCode()); receiptContainerDetailList.add(receiptContainerDetail); } flag = receiptContainerDetailService.updateBatchById(receiptContainerDetailList); diff --git a/src/main/java/com/huaheng/api/wcs/service/taskAssignService/TaskAssignServiceImpl.java b/src/main/java/com/huaheng/api/wcs/service/taskAssignService/TaskAssignServiceImpl.java index 4fcbd1c..16e812a 100644 --- a/src/main/java/com/huaheng/api/wcs/service/taskAssignService/TaskAssignServiceImpl.java +++ b/src/main/java/com/huaheng/api/wcs/service/taskAssignService/TaskAssignServiceImpl.java @@ -2,17 +2,25 @@ package com.huaheng.api.wcs.service.taskAssignService; import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.huaheng.api.wcs.domain.TaskDetails; import com.huaheng.api.wcs.domain.WcsTask; import com.huaheng.common.exception.service.ServiceException; import com.huaheng.common.utils.StringUtils; import com.huaheng.common.utils.http.HttpUtils; import com.huaheng.framework.web.domain.AjaxResult; import com.huaheng.pc.config.address.service.AddressService; +import com.huaheng.pc.task.taskDetail.domain.TaskDetail; +import com.huaheng.pc.task.taskDetail.service.TaskDetailService; import com.huaheng.pc.task.taskHeader.domain.TaskHeader; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; +import java.util.List; + /** * 任务下发接口ServiceImpl层 * @author ricard @@ -25,6 +33,8 @@ public class TaskAssignServiceImpl implements TaskAssignService { @Autowired private AddressService addressService; + @Autowired + private TaskDetailService taskDetailService; public static String platform = "wms"; @@ -57,9 +67,7 @@ public class TaskAssignServiceImpl implements TaskAssignService { if(StringUtils.isEmpty(taskHeader.getContainerCode())){ throw new ServiceException("wms任务中容器为空"); } -// if(StringUtils.isEmpty(taskHeader.getStation())){ -// throw new ServiceException("wms站台为空"); -// } + //入库性质的任务源库位不能为空 if(taskHeader.getTaskType()==100 || taskHeader.getTaskType()==200 @@ -83,16 +91,40 @@ public class TaskAssignServiceImpl implements TaskAssignService { WcsTask wcsTask = new WcsTask(); wcsTask.setTaskNo(taskHeader.getId().toString()); wcsTask.setTaskType(taskHeader.getTaskType().toString()); -// wcsTask.setStation(taskHeader.getStation); - wcsTask.setPalletNo(taskHeader.getContainerCode()); + wcsTask.setFromPort("0"); + wcsTask.setToPort("0"); + wcsTask.setContainerCode(taskHeader.getContainerCode()); wcsTask.setFromLocationCode(taskHeader.getFromLocation()); wcsTask.setToLocationCode(taskHeader.getToLocation()); + wcsTask.setPriority(100); + wcsTask.setRemark("0"); wcsTask.setPlatform(platform); + //找到任务明细 + LambdaQueryWrapper<TaskDetail> taskDetailLam = Wrappers.lambdaQuery(); + taskDetailLam.eq(TaskDetail::getTaskId,taskHeader.getId()); + List<TaskDetail> taskDetailList = taskDetailService.list(taskDetailLam); + if(taskDetailList == null){ + throw new ServiceException("没有子任务"); + } + List<TaskDetails> taskDetails =new ArrayList<>(); + for(TaskDetail item : taskDetailList){ + TaskDetails details = new TaskDetails(); + details.setMaterialCode(item.getMaterialCode()); + details.setMaterialName(item.getMaterialName()); + details.setUnit(item.getMaterialUnit()); + details.setQty(item.getQty()); + details.setReferLineNo(item.getId().toString()); + taskDetails.add(details); + } + + wcsTask.setTaskDetails(taskDetails); + //4、发送数据 String param="wcs"; String url=addressService.selectAddress(param)+"TaskAssign"; String JsonParam = JSON.toJSONString(wcsTask); + System.out.println(JsonParam); String result = HttpUtils.bodypost(url, JsonParam); if(StringUtils.isEmpty(result)){ throw new ServiceException("接口地址错误"); diff --git a/src/main/java/com/huaheng/api/wcs/service/taskCancel/TaskCancelService.java b/src/main/java/com/huaheng/api/wcs/service/taskCancel/TaskCancelService.java index 104b3a2..5bf9238 100644 --- a/src/main/java/com/huaheng/api/wcs/service/taskCancel/TaskCancelService.java +++ b/src/main/java/com/huaheng/api/wcs/service/taskCancel/TaskCancelService.java @@ -6,5 +6,5 @@ import com.huaheng.framework.web.domain.AjaxResult; public interface TaskCancelService { //取消任务 - AjaxResult TaskCance(Integer id,String reason); + AjaxResult TaskCance(Integer id); } diff --git a/src/main/java/com/huaheng/api/wcs/service/taskCancel/TaskCancelServiceImpl.java b/src/main/java/com/huaheng/api/wcs/service/taskCancel/TaskCancelServiceImpl.java index 80d4ee1..b8683ca 100644 --- a/src/main/java/com/huaheng/api/wcs/service/taskCancel/TaskCancelServiceImpl.java +++ b/src/main/java/com/huaheng/api/wcs/service/taskCancel/TaskCancelServiceImpl.java @@ -26,20 +26,17 @@ public class TaskCancelServiceImpl implements TaskCancelService { * @return */ @Override - public AjaxResult TaskCance(Integer id, String reason) { + public AjaxResult TaskCance(Integer id) { //1、判断参数是否为空 if(id == null){ throw new ServiceException("任务号为空"); } - if(StringUtils.isEmpty(reason)){ - throw new ServiceException("取消原因"); - } + //2、转换实体 WcsTask wcsTask = new WcsTask(); wcsTask.setTaskNo(id.toString()); - wcsTask.setReason(reason); //3、发送数据 String param="wcs"; diff --git a/src/main/java/com/huaheng/api/wcs/service/taskFinish/TaskFinishService.java b/src/main/java/com/huaheng/api/wcs/service/taskFinish/TaskFinishService.java index 9ddfb62..8eb2bc1 100644 --- a/src/main/java/com/huaheng/api/wcs/service/taskFinish/TaskFinishService.java +++ b/src/main/java/com/huaheng/api/wcs/service/taskFinish/TaskFinishService.java @@ -1,10 +1,10 @@ package com.huaheng.api.wcs.service.taskFinish; -import com.huaheng.api.wcs.domain.WcsTask; +import com.huaheng.api.wcs.domain.TaskFinishDomain; import com.huaheng.framework.web.domain.AjaxResult; public interface TaskFinishService { //任务完成 - AjaxResult completeTaskByWCS(WcsTask wcsTask); + AjaxResult completeTaskByWCS(TaskFinishDomain taskFinishDomain); } diff --git a/src/main/java/com/huaheng/api/wcs/service/taskFinish/TaskFinishServiceImpl.java b/src/main/java/com/huaheng/api/wcs/service/taskFinish/TaskFinishServiceImpl.java index 488da19..d487d5f 100644 --- a/src/main/java/com/huaheng/api/wcs/service/taskFinish/TaskFinishServiceImpl.java +++ b/src/main/java/com/huaheng/api/wcs/service/taskFinish/TaskFinishServiceImpl.java @@ -1,6 +1,6 @@ package com.huaheng.api.wcs.service.taskFinish; -import com.huaheng.api.wcs.domain.WcsTask; +import com.huaheng.api.wcs.domain.TaskFinishDomain; import com.huaheng.common.support.Convert; import com.huaheng.common.utils.StringUtils; import com.huaheng.framework.web.domain.AjaxResult; @@ -16,13 +16,13 @@ public class TaskFinishServiceImpl implements TaskFinishService { //任务完成 @Override - public AjaxResult completeTaskByWCS(WcsTask wcsTask) { + public AjaxResult completeTaskByWCS(TaskFinishDomain taskFinishDomain) { AjaxResult ajaxResult=new AjaxResult(); - if(StringUtils.isEmpty(wcsTask.getTaskNo())){ + if(StringUtils.isEmpty(taskFinishDomain.getTaskNo())){ return AjaxResult.error("任务号为空"); } try{ - ajaxResult=taskHeaderService.completeTaskByWMS(Convert.toIntArray(wcsTask.getTaskNo())); + ajaxResult=taskHeaderService.completeTaskByWMS(Convert.toIntArray(taskFinishDomain.getTaskNo())); } catch (Exception e) { e.printStackTrace(); } 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 f918a25..18abb7c 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 @@ -1,18 +1,81 @@ package com.huaheng.api.wcs.service.warecellAllocation; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.huaheng.api.wcs.domain.WcsTask; +import com.huaheng.common.exception.service.ServiceException; import com.huaheng.common.utils.StringUtils; +import com.huaheng.common.utils.security.ShiroUtils; +import com.huaheng.framework.config.FilterConfig; import com.huaheng.framework.web.domain.AjaxResult; +import com.huaheng.pc.config.FilterConfigDetail.domain.FilterConfigDetail; +import com.huaheng.pc.config.FilterConfigDetail.service.FilterConfigDetailService; +import com.huaheng.pc.config.configValue.domain.ConfigValue; +import com.huaheng.pc.config.configValue.service.ConfigValueService; +import com.huaheng.pc.config.location.domain.Location; +import com.huaheng.pc.config.location.service.LocationService; +import com.huaheng.pc.config.locationType.domain.LocationType; +import com.huaheng.pc.config.locationType.service.LocationTypeService; +import com.huaheng.pc.config.material.domain.Material; +import com.huaheng.pc.config.material.service.MaterialService; +import com.huaheng.pc.config.material.service.MaterialServiceImpl; +import com.huaheng.pc.config.materialType.domain.MaterialType; +import com.huaheng.pc.config.materialType.service.MaterialTypeService; +import com.huaheng.pc.config.receiptPreference.domain.ReceiptPreference; +import com.huaheng.pc.config.receiptPreference.service.ReceiptPreferenceService; +import com.huaheng.pc.receipt.receiptContainerDetail.domain.ReceiptContainerDetail; +import com.huaheng.pc.receipt.receiptContainerDetail.service.ReceiptContainerDetailService; +import com.huaheng.pc.receipt.receiptContainerHeader.domain.ReceiptContainerHeader; +import com.huaheng.pc.receipt.receiptContainerHeader.service.ReceiptContainerHeaderService; +import com.huaheng.pc.receipt.receiptDetail.domain.ReceiptDetail; +import com.huaheng.pc.receipt.receiptDetail.service.ReceiptDetailService; +import com.huaheng.pc.system.config.domain.Config; +import com.huaheng.pc.task.taskDetail.domain.TaskDetail; +import com.huaheng.pc.task.taskDetail.service.TaskDetailService; +import com.huaheng.pc.task.taskHeader.domain.TaskHeader; +import com.huaheng.pc.task.taskHeader.service.TaskHeaderService; +import com.jhlabs.image.LightFilter; +import io.swagger.annotations.ResponseHeader; import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + @Service public class WarecellAllocationServiceImpl implements WarecellAllocationService { + @Resource + private LocationTypeService locationTypeService; + @Resource + private LocationService locationService; + @Resource + private ConfigValueService configValueService; + @Resource + private ReceiptPreferenceService receiptPreferenceService; + @Resource + private FilterConfigDetailService filterConfigDetailService; + @Resource + private TaskDetailService taskDetailService; + @Resource + private TaskHeaderService taskHeaderService; + @Resource + private ReceiptContainerDetailService receiptContainerDetailService; + @Resource + private ReceiptContainerHeaderService receiptContainerHeaderService; + @Resource + private ReceiptDetailService receiptDetailService; + @Resource + private MaterialService materialService; + @Resource + private MaterialTypeService materialTypeService; + /** * 仓位分配 * 1、判断非空字段 * 2、实体转换 - * + * 3、查询满足条件的库位类型 * @param wcsTask * @return */ @@ -23,11 +86,8 @@ public class WarecellAllocationServiceImpl implements WarecellAllocationService if(StringUtils.isEmpty(wcsTask.getTaskNo())){ return AjaxResult.error("任务号为空"); } - if(StringUtils.isEmpty(wcsTask.getPalletNo())){ - return AjaxResult.error("托盘编号为空"); - } - if(StringUtils.isEmpty(wcsTask.getStation())){ - return AjaxResult.error("站台编码为空"); + if(StringUtils.isEmpty(wcsTask.getRoadWay())){ + return AjaxResult.error("巷道为空"); } if(StringUtils.isNull(wcsTask.getLength())){ return AjaxResult.error("长为空"); @@ -42,7 +102,144 @@ public class WarecellAllocationServiceImpl implements WarecellAllocationService return AjaxResult.error("重为空"); } + //查询满足条件的库位类型 + 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()); + List<LocationType> locationTypeList = locationTypeService.list(lambdaQueryWrapper); + List<String> codeList = new ArrayList<>(); + for (LocationType locationType: locationTypeList) { + codeList.add(locationType.getCode()); + } + + String locationCode = null; + //查询任务明细 + LambdaQueryWrapper<TaskDetail> taskDetailLambda = Wrappers.lambdaQuery(); + taskDetailLambda.eq(TaskDetail::getTaskId, wcsTask.getTaskNo()); + List<TaskDetail> taskDetailList = taskDetailService.list(taskDetailLambda); + + List<ReceiptContainerDetail> receiptContainerDetailList = new ArrayList<>(); + for (TaskDetail taskDetail : taskDetailList) { + receiptContainerDetailList.add(receiptContainerDetailService.getById(taskDetail.getAllocationId())); + } + //去重 + receiptContainerDetailList = receiptContainerDetailList.stream().distinct().collect(Collectors.toList()); + + for (ReceiptContainerDetail receiptContainerDetail : receiptContainerDetailList) { + ReceiptContainerHeader receiptContainerHeader = receiptContainerHeaderService.getById(receiptContainerDetail.getReceiptContainerId()); + String locatingRule = receiptContainerHeader.getLocatingRule(); //定位规则 + if (StringUtils.isEmpty(locatingRule)){ + locatingRule = receiptDetailService.getById(receiptContainerDetail.getReceiptDetailId()).getLocatingRule(); + //入库单明细定位规则不为空时执行 + if (StringUtils.isEmpty(locatingRule)){ + //入库单明细为空时,查询物料表中是否含有定位规则 + LambdaQueryWrapper<Material> materialLambda = Wrappers.lambdaQuery(); + materialLambda.eq(Material::getCode, receiptContainerDetail.getMaterialCode()); + Material material = materialService.getOne(materialLambda); + locatingRule = material.getLocatingRule(); + + if (StringUtils.isEmpty(locatingRule)){ + //物料表中定位规则为空时,查询物料类别 + LambdaQueryWrapper<MaterialType> materialTypeLambda = Wrappers.lambdaQuery(); + materialTypeLambda.eq(MaterialType::getCode, material.getType()); + MaterialType materialType = materialTypeService.getOne(materialTypeLambda); + locatingRule = materialType.getLocatingRule(); + if (StringUtils.isEmpty(locatingRule)){ + //物料类别中定位规则为空时,查询入库首选项 + LambdaQueryWrapper<ConfigValue> configValueLambda = Wrappers.lambdaQuery(); + configValueLambda.eq(ConfigValue::getWarehouseCode, ShiroUtils.getWarehouseCode()) + .eq(ConfigValue::getModuleType, "receipt") + .eq(ConfigValue::getRecordType, "入库首选项"); + ConfigValue configValue = configValueService.getOne(configValueLambda); + LambdaQueryWrapper<ReceiptPreference> receiptPreferenceLambda = Wrappers.lambdaQuery(); + receiptPreferenceLambda.eq(ReceiptPreference::getCode, configValue.getValue()); + ReceiptPreference receiptPreference = receiptPreferenceService.getOne(receiptPreferenceLambda); + locatingRule = receiptPreferenceService.getOne(receiptPreferenceLambda).getLocationRule(); + } + } + } + + } + //通过定位规则查找自定义sql + if (StringUtils.isEmpty(locatingRule)){ + throw new ServiceException("未绑定定位规则"); + } + + LambdaQueryWrapper<FilterConfigDetail> filterConfigDetailLambda = Wrappers.lambdaQuery(); + filterConfigDetailLambda.eq(FilterConfigDetail::getCode, locatingRule); + FilterConfigDetail filterConfigDetail = filterConfigDetailService.getOne(filterConfigDetailLambda); + + String[] locatingRules = filterConfigDetail.getStatement().split("limit"); + + //根据定位规则查询库位编码 + LambdaQueryWrapper<Location> locationLambda = Wrappers.lambdaQuery(); + locationLambda.last(locatingRules[0]); + List<Location> locationList = locationService.list(locationLambda); +// locationList.stream().filter(location -> location.getLocationType().equals(locationTypeList.get(0))); + locationCode = filter(locationList, locationTypeList); + if (StringUtils.isEmpty(locationCode)){ + throw new ServiceException("没有库位可分配"); + } + + if (StringUtils.isNotEmpty(locationCode)){ + locationService.updateStatus(locationCode, "lock"); + } else { + throw new ServiceException("定位失败,请检查定位规则是否正确"); + } + //更新库位编码到组盘头表 + receiptContainerHeader.setToLocation(locationCode); + if (!receiptContainerHeaderService.updateById(receiptContainerHeader)){ + throw new ServiceException("更新库位失败"); + } + + //把库位编码赋到该入库组盘头表下的所有明细 + LambdaQueryWrapper<ReceiptContainerDetail> lambda = Wrappers.lambdaQuery(); + lambda.eq(ReceiptContainerDetail::getReceiptContainerId, receiptContainerHeader.getId()); + List<ReceiptContainerDetail> receiptContainerDetails = receiptContainerDetailService.list(lambda); + for (ReceiptContainerDetail receiptContainerDetail2: receiptContainerDetails) { + receiptContainerDetail2.setLocationCode(locationCode); + if (!receiptContainerDetailService.updateById(receiptContainerDetail2)){throw new ServiceException("更新库位编码到入库组盘明细");} + } + + } + if (StringUtils.isNotEmpty(locationCode)){ + //修改任务明细目标库位 + for (TaskDetail taskDetail : taskDetailList) { + taskDetail.setToLocation(locationCode); + if (!taskDetailService.updateById(taskDetail)){ throw new ServiceException("更新任务明细目标库位失败");} + } + + TaskHeader taskHeader = taskHeaderService.getById(wcsTask.getTaskNo()); + + taskHeader.setToLocation(locationCode); + if (!taskHeaderService.updateById(taskHeader)){throw new ServiceException("更新任务头表目标库位失败");} + WcsTask wcsTaskResult = new WcsTask(); + wcsTaskResult.setToLocationCode(locationCode); + return AjaxResult.success(wcsTaskResult); + } + + return AjaxResult.error("错误"); + } + + /** + * 库位筛选 + * @param locationList + * @param locationTypeList + * @return + */ + public String filter(List<Location> locationList, List<LocationType> locationTypeList){ + String locationCode = null; + for (Location location: locationList){ + for (LocationType locationType: locationTypeList) { + if (location.getLocationType().equals(locationType.getCode())){ + locationCode = location.getCode(); + return locationCode; + } + } + } return null; } } diff --git a/src/main/java/com/huaheng/pc/config/station/controller/stationController.java b/src/main/java/com/huaheng/pc/config/station/controller/stationController.java new file mode 100644 index 0000000..fef29bd --- /dev/null +++ b/src/main/java/com/huaheng/pc/config/station/controller/stationController.java @@ -0,0 +1,136 @@ +package com.huaheng.pc.config.station.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.huaheng.common.support.Convert; +import com.huaheng.common.utils.StringUtils; +import com.huaheng.common.utils.security.ShiroUtils; +import com.huaheng.framework.aspectj.lang.annotation.Log; +import com.huaheng.framework.aspectj.lang.constant.BusinessType; +import com.huaheng.framework.web.controller.BaseController; +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.config.station.domain.Station; +import com.huaheng.pc.config.station.service.StationService; +import io.swagger.annotations.ApiParam; +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; +import java.util.Arrays; +import java.util.List; + +/** + * Created by Enzo Cotter on 2019/10/14. + */ +@Controller +@RequestMapping("/config/station") +public class stationController extends BaseController { + + @Resource + private StationService stationService; + + private String prefix = "config/station"; + + @RequiresPermissions("config:station:view") + @GetMapping() + public String station() { + return prefix + "/station"; + } + + /** + * 查询出库类型 + */ + @RequiresPermissions("config:station:list") + @Log(title = "配置-站台",operating = "站台列表", action = BusinessType.GRANT) + @PostMapping("/list") + @ResponseBody + public TableDataInfo list(@ApiParam(name="shipmentType",value="编码、类型") Station station, + @ApiParam(name = "createdBegin", value = "起止时间") String createdBegin, + @ApiParam(name = "createdEnd", value = "结束时间") String createdEnd) { + LambdaQueryWrapper<Station> lambdaQueryWrapper = Wrappers.lambdaQuery(); + PageDomain pageDomain = TableSupport.buildPageRequest(); + Integer pageNum = pageDomain.getPageNum(); + Integer pageSize = pageDomain.getPageSize(); + lambdaQueryWrapper.gt(StringUtils.isNotEmpty(createdBegin), Station::getCreated, createdBegin) + .lt(StringUtils.isNotEmpty(createdEnd), Station::getCreated, createdEnd) + .eq(StringUtils.isNotEmpty(station.getCode()), Station::getCode, station.getCode()) + .eq(StringUtils.isNotEmpty(station.getType()), Station::getType, station.getType()) + .eq(Station::getWarehouseCode, ShiroUtils.getWarehouseCode()); + + if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){ + /*使用分页查询*/ + Page<Station> page = new Page<>(pageNum, pageSize); + IPage<Station> iPage = stationService.page(page, lambdaQueryWrapper); + return getMpDataTable(iPage.getRecords(), iPage.getTotal()); + } else { + List<Station> list = stationService.list(lambdaQueryWrapper); + return getDataTable(list); + } + } + + /** + * 新增站台 + */ + @GetMapping("/add") + public String add() { + return prefix + "/add"; + } + + /** + * 新增保存站台 + */ + @RequiresPermissions("config:station:add") + @Log(title = "配置-站台",operating = "新增站台", action = BusinessType.INSERT) + @PostMapping("/add") + @ResponseBody + public AjaxResult addSave(Station station) { + station.setWarehouseCode(ShiroUtils.getWarehouseCode()); + return toAjax(stationService.save(station)); + } + + /** + * 修改站台 + */ + @GetMapping("/edit/{id}") + public String edit(@PathVariable("id") Integer id, ModelMap mmap) { + Station station = stationService.getById(id); + mmap.put("station", station); + return prefix + "/edit"; + } + + /** + * 修改保存站台 + */ + @RequiresPermissions("config:station:edit") + @Log(title = "配置-站台",operating = "修改站台", action = BusinessType.UPDATE) + @PostMapping("/edit") + @ResponseBody + public AjaxResult editSave(Station station) { + station.setLastUpdatedBy(ShiroUtils.getLoginName()); + return toAjax(stationService.updateById(station)); + } + + /** + * 删除出库 + */ + @RequiresPermissions("config:station:remove") + @Log(title = "配置-站台",operating = "删除站台", action = BusinessType.DELETE) + @PostMapping( "/remove") + @ResponseBody + public AjaxResult remove(String ids) { + if (StringUtils.isEmpty(ids)) { + return AjaxResult.error("id不能为空"); + } + List<Integer> list = new ArrayList<>(Arrays.asList(Convert.toIntArray(ids))); + return toAjax(stationService.removeByIds(list)); + } + +} diff --git a/src/main/java/com/huaheng/pc/config/station/domain/Station.java b/src/main/java/com/huaheng/pc/config/station/domain/Station.java index 70eadf5..0b935bf 100644 --- a/src/main/java/com/huaheng/pc/config/station/domain/Station.java +++ b/src/main/java/com/huaheng/pc/config/station/domain/Station.java @@ -30,6 +30,13 @@ public class Station implements Serializable { private String code; /** + * 类型 + */ + @TableField(value = "type") + @ApiModelProperty(value="类型") + private String type; + + /** * 状态 */ @TableField(value = "status") diff --git a/src/main/java/com/huaheng/pc/receipt/receiptContainerHeader/domain/ReceiptContainerHeader.java b/src/main/java/com/huaheng/pc/receipt/receiptContainerHeader/domain/ReceiptContainerHeader.java index eaa2e5b..bc1dc27 100644 --- a/src/main/java/com/huaheng/pc/receipt/receiptContainerHeader/domain/ReceiptContainerHeader.java +++ b/src/main/java/com/huaheng/pc/receipt/receiptContainerHeader/domain/ReceiptContainerHeader.java @@ -6,11 +6,14 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + import java.io.Serializable; import java.util.Date; @ApiModel(value="com.huaheng.pc.receipt.receiptContainerHeader.domain.ReceiptContainerHeader") @TableName(value = "receipt_container_header") +@Data public class ReceiptContainerHeader implements Serializable { /** * ID @@ -208,563 +211,13 @@ public class ReceiptContainerHeader implements Serializable { @ApiModelProperty(value="状态") private Short status; - private static final long serialVersionUID = 1L; - - public static final String COL_WAREHOUSECODE = "warehouseCode"; - - public static final String COL_COMPANYCODE = "companyCode"; - - public static final String COL_CONTAINERCODE = "containerCode"; - - public static final String COL_CONTAINERTYPE = "containerType"; - - public static final String COL_TASKTYPE = "taskType"; - - public static final String COL_WEIGHT = "weight"; - - public static final String COL_PROJECTNO = "projectNo"; - - public static final String COL_LOCATINGRULE = "locatingRule"; - - public static final String COL_FROMLOCATION = "fromLocation"; - - public static final String COL_TOLOCATION = "toLocation"; - - public static final String COL_WAVEID = "waveId"; - - public static final String COL_TASKCREATED = "taskCreated"; - - public static final String COL_CREATED = "created"; - - public static final String COL_CREATEDBY = "createdBy"; - - public static final String COL_LASTUPDATED = "lastUpdated"; - - public static final String COL_LASTUPDATEDBY = "lastUpdatedBy"; - - public static final String COL_VERSION = "version"; - - public static final String COL_USERDEF1 = "userDef1"; - - public static final String COL_USERDEF2 = "userDef2"; - - public static final String COL_USERDEF3 = "userDef3"; - - public static final String COL_USERDEF4 = "userDef4"; - - public static final String COL_USERDEF5 = "userDef5"; - - public static final String COL_USERDEF6 = "userDef6"; - - public static final String COL_USERDEF7 = "userDef7"; - - public static final String COL_USERDEF8 = "userDef8"; - - public static final String COL_PROCESSSTAMP = "processStamp"; - - public static final String COL_STATUS = "status"; - - /** - * 获取ID - * - * @return id - ID - */ - public Integer getId() { - return this.id; - } - - /** - * 设置ID - * - * @param id ID - */ - public void setId(Integer id) { - this.id = id; - } - - /** - * 获取仓库 - * - * @return warehouseCode - 仓库 - */ - public String getWarehouseCode() { - return warehouseCode; - } - - /** - * 设置仓库 - * - * @param warehouseCode 仓库 - */ - public void setWarehouseCode(String warehouseCode) { - this.warehouseCode = warehouseCode; - } - - /** - * 获取货主 - * - * @return companyCode - 货主 - */ - public String getCompanyCode() { - return companyCode; - } - - /** - * 设置货主 - * - * @param companyCode 货主 - */ - public void setCompanyCode(String companyCode) { - this.companyCode = companyCode; - } - - /** - * 获取容器号 - * - * @return containerCode - 容器号 - */ - public String getContainerCode() { - return containerCode; - } - - /** - * 设置容器号 - * - * @param containerCode 容器号 - */ - public void setContainerCode(String containerCode) { - this.containerCode = containerCode; - } - - /** - * 获取容器类型 - * - * @return containerType - 容器类型 - */ - public String getContainerType() { - return containerType; - } - - /** - * 设置容器类型 - * - * @param containerType 容器类型 - */ - public void setContainerType(String containerType) { - this.containerType = containerType; - } - - /** - * 获取任务类型 - * - * @return taskType - 任务类型 - */ - public String getTaskType() { - return taskType; - } - - /** - * 设置任务类型 - * - * @param taskType 任务类型 - */ - public void setTaskType(String taskType) { - this.taskType = taskType; - } - - /** - * 获取重量 - * - * @return weight - 重量 - */ - public String getWeight() { - return weight; - } - - /** - * 设置重量 - * - * @param weight 重量 - */ - public void setWeight(String weight) { - this.weight = weight; - } - - /** - * 获取项目号 - * - * @return projectNo - 项目号 - */ - public String getProjectNo() { - return projectNo; - } - - /** - * 设置项目号 - * - * @param projectNo 项目号 - */ - public void setProjectNo(String projectNo) { - this.projectNo = projectNo; - } - - /** - * 获取定位规则 - * - * @return locatingRule - 定位规则 - */ - public String getLocatingRule() { - return locatingRule; - } - - /** - * 设置定位规则 - * - * @param locatingRule 定位规则 - */ - public void setLocatingRule(String locatingRule) { - this.locatingRule = locatingRule; - } - - /** - * 获取从库位 - * - * @return fromLocation - 从库位 - */ - public String getFromLocation() { - return fromLocation; - } - - /** - * 设置从库位 - * - * @param fromLocation 从库位 - */ - public void setFromLocation(String fromLocation) { - this.fromLocation = fromLocation; - } - - /** - * 获取目标库位 - * - * @return toLocation - 目标库位 - */ - public String getToLocation() { - return toLocation; - } - - /** - * 设置目标库位 - * - * @param toLocation 目标库位 - */ - public void setToLocation(String toLocation) { - this.toLocation = toLocation; - } - - /** - * 获取波次号 - * - * @return waveId - 波次号 - */ - public Integer getWaveId() { - return waveId; - } - /** - * 设置波次号 - * - * @param waveId 波次号 + * 站台 */ - public void setWaveId(Integer waveId) { - this.waveId = waveId; - } + @TableField(value = "recvDock") + @ApiModelProperty(value="站台") + private String recvDock; - /** - * 获取任务已创建 - * - * @return taskCreated - 任务已创建 - */ - public Integer getTaskCreated() { - return taskCreated; - } - - /** - * 设置任务已创建 - * - * @param taskCreated 任务已创建 - */ - public void setTaskCreated(Integer taskCreated) { - this.taskCreated = taskCreated; - } - - /** - * 获取创建时间 - * - * @return created - 创建时间 - */ - public Date getCreated() { - return created; - } - - /** - * 设置创建时间 - * - * @param created 创建时间 - */ - public void setCreated(Date created) { - this.created = created; - } - - /** - * 获取创建用户 - * - * @return createdBy - 创建用户 - */ - public String getCreatedBy() { - return createdBy; - } - - /** - * 设置创建用户 - * - * @param createdBy 创建用户 - */ - public void setCreatedBy(String createdBy) { - this.createdBy = createdBy; - } - - /** - * 获取创建时间 - * - * @return lastUpdated - 创建时间 - */ - public Date getLastUpdated() { - return lastUpdated; - } - - /** - * 设置创建时间 - * - * @param lastUpdated 创建时间 - */ - public void setLastUpdated(Date lastUpdated) { - this.lastUpdated = lastUpdated; - } - - /** - * 获取更新用户 - * - * @return lastUpdatedBy - 更新用户 - */ - public String getLastUpdatedBy() { - return lastUpdatedBy; - } - - /** - * 设置更新用户 - * - * @param lastUpdatedBy 更新用户 - */ - public void setLastUpdatedBy(String lastUpdatedBy) { - this.lastUpdatedBy = lastUpdatedBy; - } - - /** - * 获取数据版本 - * - * @return version - 数据版本 - */ - public Integer getVersion() { - return version; - } - - /** - * 设置数据版本 - * - * @param version 数据版本 - */ - public void setVersion(Integer version) { - this.version = version; - } - - /** - * 获取自定义字段1 - * - * @return userDef1 - 自定义字段1 - */ - public String getUserDef1() { - return userDef1; - } - - /** - * 设置自定义字段1 - * - * @param userDef1 自定义字段1 - */ - public void setUserDef1(String userDef1) { - this.userDef1 = userDef1; - } - - /** - * 获取自定义字段2 - * - * @return userDef2 - 自定义字段2 - */ - public String getUserDef2() { - return userDef2; - } - - /** - * 设置自定义字段2 - * - * @param userDef2 自定义字段2 - */ - public void setUserDef2(String userDef2) { - this.userDef2 = userDef2; - } - - /** - * 获取自定义字段3 - * - * @return userDef3 - 自定义字段3 - */ - public String getUserDef3() { - return userDef3; - } - - /** - * 设置自定义字段3 - * - * @param userDef3 自定义字段3 - */ - public void setUserDef3(String userDef3) { - this.userDef3 = userDef3; - } - - /** - * 获取自定义字段4 - * - * @return userDef4 - 自定义字段4 - */ - public String getUserDef4() { - return userDef4; - } - - /** - * 设置自定义字段4 - * - * @param userDef4 自定义字段4 - */ - public void setUserDef4(String userDef4) { - this.userDef4 = userDef4; - } - - /** - * 获取自定义字段5 - * - * @return userDef5 - 自定义字段5 - */ - public String getUserDef5() { - return userDef5; - } - - /** - * 设置自定义字段5 - * - * @param userDef5 自定义字段5 - */ - public void setUserDef5(String userDef5) { - this.userDef5 = userDef5; - } - - /** - * 获取自定义字段6 - * - * @return userDef6 - 自定义字段6 - */ - public String getUserDef6() { - return userDef6; - } - - /** - * 设置自定义字段6 - * - * @param userDef6 自定义字段6 - */ - public void setUserDef6(String userDef6) { - this.userDef6 = userDef6; - } - - /** - * 获取自定义字段7 - * - * @return userDef7 - 自定义字段7 - */ - public String getUserDef7() { - return userDef7; - } - - /** - * 设置自定义字段7 - * - * @param userDef7 自定义字段7 - */ - public void setUserDef7(String userDef7) { - this.userDef7 = userDef7; - } - - /** - * 获取自定义字段8 - * - * @return userDef8 - 自定义字段8 - */ - public String getUserDef8() { - return userDef8; - } - - /** - * 设置自定义字段8 - * - * @param userDef8 自定义字段8 - */ - public void setUserDef8(String userDef8) { - this.userDef8 = userDef8; - } - - /** - * 获取处理标记 - * - * @return processStamp - 处理标记 - */ - public String getProcessStamp() { - return processStamp; - } - - /** - * 设置处理标记 - * - * @param processStamp 处理标记 - */ - public void setProcessStamp(String processStamp) { - this.processStamp = processStamp; - } - - /** - * 获取状态 - * - * @return status - 状态 - */ - public Short getStatus() { - return status; - } + private static final long serialVersionUID = 1L; - /** - * 设置状态 - * - * @param status 状态 - */ - public void setStatus(Short status) { - this.status = status; - } } \ No newline at end of file diff --git a/src/main/java/com/huaheng/pc/receipt/receiptDetail/service/ReceiptDetailServiceImpl.java b/src/main/java/com/huaheng/pc/receipt/receiptDetail/service/ReceiptDetailServiceImpl.java index cc23162..be1f0a4 100644 --- a/src/main/java/com/huaheng/pc/receipt/receiptDetail/service/ReceiptDetailServiceImpl.java +++ b/src/main/java/com/huaheng/pc/receipt/receiptDetail/service/ReceiptDetailServiceImpl.java @@ -26,6 +26,7 @@ import com.huaheng.pc.receipt.receiptHeader.service.ReceiptHeaderService; import com.huaheng.pc.system.config.domain.Config; import com.huaheng.pc.system.dict.domain.DictData; import com.huaheng.pc.system.dict.service.IDictDataService; +import io.swagger.models.auth.In; import org.aspectj.weaver.loadtime.Aj; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -296,13 +297,18 @@ public class ReceiptDetailServiceImpl extends ServiceImpl<ReceiptDetailMapper, R //查询出头表信息 ReceiptHeader receiptHeader = receiptHeaderService.getById(id); Integer minStatus = Integer.parseInt(receiptDetails.get(0).getProcessStamp()); + Integer maxStatus = Integer.parseInt(receiptDetails.get(0).getProcessStamp()); //遍历明细状态得出最小状态值 for (int i = 1; i<receiptDetails.size(); i++){ - if ( minStatus > Integer.parseInt(receiptDetails.get(1).getProcessStamp())) { - minStatus = Integer.parseInt(receiptDetails.get(1).getProcessStamp()); + if ( minStatus > Integer.parseInt(receiptDetails.get(i).getProcessStamp())) { + minStatus = Integer.parseInt(receiptDetails.get(i).getProcessStamp()); + } + if ( maxStatus < Integer.parseInt(receiptDetails.get(i).getProcessStamp())) { + maxStatus = Integer.parseInt(receiptDetails.get(i).getProcessStamp()); } } + //从数据字典中获取单据当前状态 List<DictData> dictData = dictDataService.selectDictDataByType("receiptHeaderStatus"); for (int i = 0; i<dictData.size(); i++){ @@ -314,8 +320,8 @@ public class ReceiptDetailServiceImpl extends ServiceImpl<ReceiptDetailMapper, R //若更新状态值小于头状态,更新尾状态否则更新头尾状态 if (minStatus < receiptHeader.getFirstStatus()){ receiptHeader.setLastStatus(minStatus); - } else { - receiptHeader.setFirstStatus(minStatus); + } if (maxStatus > receiptHeader.getFirstStatus()){ + receiptHeader.setFirstStatus(maxStatus); receiptHeader.setLastStatus(minStatus); receiptHeaderService.updateById(receiptHeader); } 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 bd493fc..2d033e9 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 @@ -90,9 +90,7 @@ public class ReceivingService { //如果入库组盘表中有目标库位说明已经指定 if (StringUtils.isNotEmpty(receiptContainerHeader.getToLocation())){return true;} String locatingRule = receiptContainerHeader.getLocatingRule(); //定位规则 - if (StringUtils.isNotEmpty(locatingRule)){ - //入库组盘头表中定位规则不为空时执行 - } else if (locatingRule == null){ + if (StringUtils.isEmpty(locatingRule)){ locatingRule = receiptDetailService.getById(receiptContainerDetail.getReceiptDetailId()).getLocatingRule(); //入库单明细定位规则不为空时执行 if (StringUtils.isEmpty(locatingRule)){ @@ -147,6 +145,7 @@ public class ReceivingService { //更新库位编码到组盘头表 receiptContainerHeader.setToLocation(locationCode); + receiptContainerHeader.setRecvDock("0"); if (!receiptContainerHeaderService.updateById(receiptContainerHeader)){ throw new ServiceException("更新库位失败"); } diff --git a/src/main/java/com/huaheng/pc/task/taskHeader/domain/TaskHeader.java b/src/main/java/com/huaheng/pc/task/taskHeader/domain/TaskHeader.java index 6e94931..85572df 100644 --- a/src/main/java/com/huaheng/pc/task/taskHeader/domain/TaskHeader.java +++ b/src/main/java/com/huaheng/pc/task/taskHeader/domain/TaskHeader.java @@ -294,5 +294,12 @@ public class TaskHeader implements Serializable { @ApiModelProperty(value="处理标记") private String processStamp; + /** + * 站台 + */ + @TableField(value = "recvDock") + @ApiModelProperty(value="站台") + private String recvDock; + private static final long serialVersionUID = 1L; } \ No newline at end of file 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 5542963..5e79b92 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 @@ -407,8 +407,8 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea // } // } - //给wcs传递任务 -// taskAssignService.wcsTaskAssign(task); +// 给wcs传递任务 + taskAssignService.wcsTaskAssign(task); } return AjaxResult.success("执行下发任务成功", task); } @@ -1141,6 +1141,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea task.setFromLocation(receiptContainerHeader.getFromLocation()); task.setToLocation(receiptContainerHeader.getToLocation()); task.setContainerCode(receiptContainerHeader.getContainerCode()); + task.setRecvDock(receiptContainerHeader.getRecvDock()); task.setCreated(new Date()); task.setCreatedBy(ShiroUtils.getLoginName()); if (this.save(task)){ @@ -1151,6 +1152,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea taskDetail.setTaskType(Integer.valueOf(receiptContainerHeaderService.getById(item.getReceiptContainerId()).getTaskType())); taskDetail.setInternalTaskType(100); taskDetail.setWarehouseCode(task.getWarehouseCode()); + taskDetail.setAllocationId(item.getReceiptId()); taskDetail.setCompanyCode(task.getCompanyCode()); taskDetail.setCompanyCode(task.getCompanyCode()); taskDetail.setMaterialCode(item.getMaterialCode()); @@ -1174,12 +1176,14 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea } ReceiptDetail receiptDetail = receiptDetailService.getById(item.getReceiptDetailId()); - if ("300".equals(receiptDetail.getProcessStamp())){ - ReceiptDetail detail = receiptDetailService.queryflow(receiptDetail); - if (!receiptDetailService.updateById(detail)){ - throw new ServiceException("更新入库单详情失败"); - } + + ReceiptDetail detail = receiptDetailService.queryflow(receiptDetail); + if (!receiptDetailService.updateById(detail)){ + throw new ServiceException("更新入库单详情失败"); } + //更新头表状态 + receiptDetailService.updateReceiptHeaderLastStatus(receiptDetail.getReceiptId()); + } } else { throw new ServiceException("生成任务头表失败"); diff --git a/src/main/resources/mybatis/config/StationMapper.xml b/src/main/resources/mybatis/config/StationMapper.xml index 40c50ce..3b74cac 100644 --- a/src/main/resources/mybatis/config/StationMapper.xml +++ b/src/main/resources/mybatis/config/StationMapper.xml @@ -7,6 +7,7 @@ <id column="id" jdbcType="INTEGER" property="id" /> <result column="code" jdbcType="VARCHAR" property="code" /> <result column="status" jdbcType="INTEGER" property="status" /> + <result column="code" jdbcType="VARCHAR" property="code" /> <result column="warehouseCode" jdbcType="VARCHAR" property="warehouseCode" /> <result column="created" jdbcType="TIMESTAMP" property="created" /> <result column="createdBy" jdbcType="VARCHAR" property="createdBy" /> @@ -15,6 +16,6 @@ </resultMap> <sql id="Base_Column_List"> <!--@mbg.generated--> - id, code, `status`, warehouseCode, created, createdBy, lastUpdated, lastUpdatedBy + id, code, `status`, type, warehouseCode, created, createdBy, lastUpdated, lastUpdatedBy </sql> </mapper> \ No newline at end of file diff --git a/src/main/resources/mybatis/receipt/ReceiptContainerHeaderMapper.xml b/src/main/resources/mybatis/receipt/ReceiptContainerHeaderMapper.xml index 2d30d19..bcc90b0 100644 --- a/src/main/resources/mybatis/receipt/ReceiptContainerHeaderMapper.xml +++ b/src/main/resources/mybatis/receipt/ReceiptContainerHeaderMapper.xml @@ -31,12 +31,13 @@ <result column="userDef8" jdbcType="VARCHAR" property="userDef8" /> <result column="processStamp" jdbcType="VARCHAR" property="processStamp" /> <result column="status" jdbcType="SMALLINT" property="status" /> + <result column="recvDock" jdbcType="VARCHAR" property="recvDock" /> </resultMap> <sql id="Base_Column_List"> <!--@mbg.generated--> id, warehouseCode, companyCode, containerCode, containerType, taskType, weight, projectNo, locatingRule, fromLocation, toLocation, waveId, taskCreated, created, createdBy, lastUpdated, lastUpdatedBy, version, userDef1, userDef2, userDef3, userDef4, userDef5, - userDef6, userDef7, userDef8, processStamp, `status` + userDef6, userDef7, userDef8, processStamp, `status`, recvDock </sql> </mapper> \ No newline at end of file diff --git a/src/main/resources/mybatis/task/TaskHeaderMapper.xml b/src/main/resources/mybatis/task/TaskHeaderMapper.xml index ddbfcbf..e6c753b 100644 --- a/src/main/resources/mybatis/task/TaskHeaderMapper.xml +++ b/src/main/resources/mybatis/task/TaskHeaderMapper.xml @@ -41,6 +41,7 @@ <result column="userDef2" jdbcType="VARCHAR" property="userDef2"/> <result column="userDef3" jdbcType="VARCHAR" property="userDef3"/> <result column="processStamp" jdbcType="VARCHAR" property="processStamp"/> + <result column="recvDock" jdbcType="VARCHAR" property="recvDock" /> </resultMap> <select id="getReceiptTask" resultType="java.util.Map"> SELECT rd.id receiptDetailId,rd.receiptId,td.taskId, td.warehouseCode, td.id taskDetailId, td.status, diff --git a/src/main/resources/templates/config/configValue/add.html b/src/main/resources/templates/config/configValue/add.html index 6b612f5..86dfefc 100644 --- a/src/main/resources/templates/config/configValue/add.html +++ b/src/main/resources/templates/config/configValue/add.html @@ -9,13 +9,17 @@ <div class="form-group"> <label class="col-sm-3 control-label">模块:</label> <div class="col-sm-8"> - <input id="moduleType" name="moduleType" class="form-control" type="text"> + <select id="moduleType" name="moduleType" class="form-control" th:with="moduleTypeList=${@dict.getType('moduleType')}"> + <option th:each="moduleType : ${moduleTypeList}" th:text="${moduleType['dictLabel']}" th:value="${moduleType['dictValue']}"></option> + </select> </div> </div> <div class="form-group"> <label class="col-sm-3 control-label">类型:</label> <div class="col-sm-8"> - <input id="recordType" name="recordType" class="form-control" type="text"> + <select id="recordType" name="recordType" class="form-control" th:with="moduleTypeList=${@dict.getType('recordType')}"> + <option th:each="moduleType : ${moduleTypeList}" th:text="${moduleType['dictLabel']}" th:value="${moduleType['dictValue']}"></option> + </select> </div> </div> <div class="form-group"> diff --git a/src/main/resources/templates/config/configValue/edit.html b/src/main/resources/templates/config/configValue/edit.html index cb8d6de..4e349b5 100644 --- a/src/main/resources/templates/config/configValue/edit.html +++ b/src/main/resources/templates/config/configValue/edit.html @@ -9,13 +9,13 @@ <div class="form-group"> <label class="col-sm-3 control-label">模块:</label> <div class="col-sm-8"> - <input id="moduleType" name="moduleType" class="form-control" type="text" th:field="*{moduleType}"> + <input id="moduleType" name="moduleType" class="form-control" type="text" th:field="*{moduleType}" readonly> </div> </div> <div class="form-group"> <label class="col-sm-3 control-label">类型:</label> <div class="col-sm-8"> - <input id="recordType" name="recordType" class="form-control" type="text" th:field="*{recordType}"> + <input id="recordType" name="recordType" class="form-control" type="text" th:field="*{recordType}" readonly> </div> </div> <div class="form-group"> diff --git a/src/main/resources/templates/config/receiptPreference/edit.html b/src/main/resources/templates/config/receiptPreference/edit.html index 565b81b..849c085 100644 --- a/src/main/resources/templates/config/receiptPreference/edit.html +++ b/src/main/resources/templates/config/receiptPreference/edit.html @@ -21,7 +21,7 @@ <div class="form-group"> <label class="col-sm-3 control-label">入库流程:</label> <div class="col-sm-8"> - <select id="receivingFlow" name="receivingFlow" class="form-control" th:with="statusFlowList=${@StatusFlow.flowList('入库单')}" th:field="*{receivingFlow}"> + <select id="receivingFlow" name="receivingFlow" class="form-control" th:with="statusFlowList=${@StatusFlow.flowList('receivingFlow')}" th:field="*{receivingFlow}"> <option th:each="flow : ${statusFlowList}" th:text="${flow['name']}" th:value="${flow['code']}"></option> </select> </div> diff --git a/src/main/resources/templates/config/station/add.html b/src/main/resources/templates/config/station/add.html new file mode 100644 index 0000000..6bcb411 --- /dev/null +++ b/src/main/resources/templates/config/station/add.html @@ -0,0 +1,54 @@ +<!DOCTYPE HTML> +<html lang="zh" xmlns:th="http://www.thymeleaf.org"> +<meta charset="utf-8"> +<head th:include="include :: header"></head> +<body class="white-bg"> +<div class="wrapper wrapper-content animated fadeInRight ibox-content"> + <form class="form-horizontal m" id="form-station-add"> + <div class="form-group"> + <label class="col-sm-3 control-label">编码:</label> + <div class="col-sm-8"> + <input id="code" name="code" 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="type" name="type" 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="status" name="status" class="form-control" type="text" > + </div> + </div> + <div class="form-group"> + <div class="form-control-static col-sm-offset-9"> + <button type="submit" class="btn btn-primary">提交</button> + <button onclick="$.modal.close()" class="btn btn-danger" type="button">关闭</button> + </div> + </div> + </form> +</div> +<div th:include="include::footer"></div> +<script type="text/javascript"> + var prefix = ctx + "config/station" + $("#form-station-add").validate({ + rules:{ + code:{ + required:true + }, + type:{ + required: true + } + }, + submitHandler: function(form) { + // $.operate.save(prefix + "/add", $('#form-supplier-add').serialize()); + var tableValue = $.common.getTableValue("#form-station-add"); + $.operate.save(prefix + "/add", tableValue); + } + }); +</script> +</body> +</html> diff --git a/src/main/resources/templates/config/station/edit.html b/src/main/resources/templates/config/station/edit.html new file mode 100644 index 0000000..b483673 --- /dev/null +++ b/src/main/resources/templates/config/station/edit.html @@ -0,0 +1,54 @@ +<!DOCTYPE HTML> +<html lang="zh" xmlns:th="http://www.thymeleaf.org"> +<meta charset="utf-8"> +<head th:include="include :: header"></head> +<body class="white-bg"> +<div class="wrapper wrapper-content animated fadeInRight ibox-content"> + <form class="form-horizontal m" id="form-station-add" th:object="${station}"> + <div class="form-group"> + <label class="col-sm-3 control-label">编码:</label> + <div class="col-sm-8"> + <input id="code" name="code" class="form-control" type="text" th:field="*{code}"> + </div> + </div> + <div class="form-group"> + <label class="col-sm-3 control-label">类型:</label> + <div class="col-sm-8"> + <input id="type" name="type" class="form-control" type="text" th:field="*{type}"> + </div> + </div> + <div class="form-group"> + <label class="col-sm-3 control-label">状态:</label> + <div class="col-sm-8"> + <input id="status" name="status" class="form-control" type="text" th:field="*{status}"> + </div> + </div> + <div class="form-group"> + <div class="form-control-static col-sm-offset-9"> + <button type="submit" class="btn btn-primary">提交</button> + <button onclick="$.modal.close()" class="btn btn-danger" type="button">关闭</button> + </div> + </div> + </form> +</div> +<div th:include="include::footer"></div> +<script type="text/javascript"> + var prefix = ctx + "config/station" + $("#form-station-add").validate({ + rules:{ + code:{ + required:true + }, + type:{ + required: true + } + }, + submitHandler: function(form) { + // $.operate.save(prefix + "/add", $('#form-supplier-add').serialize()); + var tableValue = $.common.getTableValue("#form-station-add"); + $.operate.save(prefix + "/edit", tableValue); + } + }); +</script> +</body> +</html> diff --git a/src/main/resources/templates/config/station/station.html b/src/main/resources/templates/config/station/station.html new file mode 100644 index 0000000..6b5f357 --- /dev/null +++ b/src/main/resources/templates/config/station/station.html @@ -0,0 +1,115 @@ +<!DOCTYPE HTML> +<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro"> +<meta charset="utf-8"> +<head th:include="include :: header"></head> +<body class="gray-bg"> +<div class="container-div"> + <div class="row"> + <div class="col-sm-12 select-info"> + <form id="supplier-form"> + <div class="select-list"> + <ul> + <li> + 编码:<input type="text" name="code"/> + </li> + <li class="time"> + <label>创建时间: </label> + <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="params[createdBegin]"/> + <span>-</span> + <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="params[createdEnd]"/> + </li> + <li> + <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> + <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('supplier-form')"><i class="fa fa-refresh"></i> 重置</a> + <!--<a class="btn btn-success btn-rounded btn-sm" onclick="$.table.exportExcel()" shiro:hasPermission="config:supplier:export"><i class="fa fa-download"></i> 导出</a>--> + </li> + </ul> + </div> + </form> + </div> + + <div class="btn-group hidden-xs" id="toolbar" role="group"> + <a class="btn btn-outline btn-success btn-rounded" onclick="$.operate.add()" shiro:hasPermission="config:station:add"> + <i class="fa fa-plus"></i> 新增 + </a> + <a class="btn btn-outline btn-danger btn-rounded" onclick="$.operate.batRemove()" shiro:hasPermission="config:station:remove"> + <i class="fa fa-trash-o"></i> 删除 + </a> + </div> + + <div class="col-sm-12 select-info"> + <table id="bootstrap-table" data-mobile-responsive="true" class="table table-bordered table-hover"></table> + </div> + </div> +</div> +<div th:include="include :: footer"></div> +<script th:inline="javascript"> + var editFlag = [[${@permission.hasPermi('config:station:edit')}]]; + var removeFlag = [[${@permission.hasPermi('config:station:remove')}]]; + var prefix = ctx + "config/station" + var datas = [[${@dict.getType('sys_normal_disable')}]]; + $(function() { + var options = { + url: prefix + "/list", + createUrl: prefix + "/add", + updateUrl: prefix + "/edit/{id}", + removeUrl: prefix + "/remove", + modalName: "站台", + search: false, + sortName: "id", + sortOrder: "desc", + columns: [{ + checkbox: true + }, + { + field : 'id', + title : 'id' + }, + { + field : 'warehouseCode', + title : '仓库' + }, + { + field : 'code', + title : '编码' + }, + { + field : 'type', + title : '类型' + }, + { + field : 'status', + title : '状态' + }, + { + field : 'created', + title : '创建时间' + }, + { + field : 'createdBy', + title : '创建用户' + }, + { + field : 'lastUpdated', + title : '更新时间' + }, + { + field : 'lastUpdatedBy', + title : '更新用户' + }, + { + title: '操作', + align: 'center', + formatter: function(value, row, index) { + var actions = []; + 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(''); + } + }] + }; + $.table.init(options); + }); +</script> +</body> +</html> \ No newline at end of file diff --git a/src/main/resources/templates/task/taskHeader/taskHeader.html b/src/main/resources/templates/task/taskHeader/taskHeader.html index b908105..5749be0 100644 --- a/src/main/resources/templates/task/taskHeader/taskHeader.html +++ b/src/main/resources/templates/task/taskHeader/taskHeader.html @@ -188,6 +188,11 @@ title : '容器号' , sortable: true }, + { + field : 'exceptionCode', + title : '异常原因', + sortable: true + }, { field : 'startPickDateTime', @@ -218,7 +223,8 @@ }, { field : 'userDef1', - title : '处理' , + title : '自定义字段1' , + visible:false }, { field : 'userDef2',