src/main/java/com/zy/asrs/controller/WorkController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/entity/WaitPakin.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/entity/WmsWrk.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/entity/WrkMast.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/entity/WrkMastLog.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/WaitPakinService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/WorkService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/WaitPakinServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/mapper/WmsWrkMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/controller/WorkController.java
New file @@ -0,0 +1,37 @@ package com.zy.asrs.controller; import com.core.annotations.ManagerAuth; import com.core.common.R; import com.zy.asrs.service.WorkService; import com.zy.common.web.BaseController; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; /** * 工作流接口控制器 * Created by vincent on 2020/6/10 */ @RestController public class WorkController extends BaseController { @Autowired private WorkService workService; @RequestMapping("/hand/control/wrkMast") @ManagerAuth(memo = "手动处理工作档") public R handControlWrkMast(@RequestParam String workNo, @RequestParam Integer type){ if (type == 1) { workService.completeWrkMast(workNo, getUserId()); return R.ok("任务已完成"); } else if (type == 2) { workService.cancelWrkMast(workNo, getUserId()); return R.ok("任务已取消"); } return R.ok(); } } src/main/java/com/zy/asrs/entity/WaitPakin.java
@@ -91,7 +91,7 @@ @ApiModelProperty(value= "库位号") @TableField("loc_no") private Date locNo; private String locNo; @ApiModelProperty(value= "状态") private String status; @@ -134,6 +134,13 @@ @TableField("appe_user") private Long appeUser; @ApiModelProperty(value= "单据编号") @TableField("order_no") private String orderNo; @ApiModelProperty(value= "批号") private String batch; public String getModiTime$(){ if (Cools.isEmpty(this.modiTime)){ return ""; src/main/java/com/zy/asrs/entity/WmsWrk.java
@@ -176,6 +176,14 @@ @TableField("barcode") private String barcode; /** * 结束时间 */ @ApiModelProperty(value= "结束时间") @TableField("end_time") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") private Date endTime; public WmsWrk() {} public WmsWrk(Integer wmsWrkNo, Integer wmsStatus, Integer wrkNo, Date createTime, Integer ioType, Double ioPri, String locNo, Integer staNo, Integer sourceStaNo, String sourceLocNo, String locSts, String picking, Long modiUser, Date modiTime, Long appeUser, Date appeTime, String memo, String barcode) { @@ -309,6 +317,13 @@ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime); } public String getEndTime$(){ if (Cools.isEmpty(this.endTime)){ return ""; } return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.endTime); } /** * 获取持续时间 */ @@ -318,6 +333,9 @@ } Date endDate = new Date(); if (!Cools.isEmpty(this.endTime)) { endDate = this.endTime; } //用来获取两个时间相差的毫秒数 long l = this.createTime.getTime() - endDate.getTime(); src/main/java/com/zy/asrs/entity/WrkMast.java
@@ -13,6 +13,7 @@ import com.zy.system.service.UserService; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import java.io.Serializable; import java.text.SimpleDateFormat; @@ -315,6 +316,14 @@ @TableField("wms_wrk_no") private Integer wmsWrkNo; /** * 结束时间 */ @ApiModelProperty(value= "结束时间") @TableField("end_time") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") private Date endTime; public String getWrkSts$(){ BasWrkStatusMapper mapper = SpringUtils.getBean(BasWrkStatusMapper.class); BasWrkStatus entity = mapper.selectById(this.wrkSts); @@ -491,6 +500,13 @@ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.logErrTime); } public String getEndTime$(){ if (Cools.isEmpty(this.endTime)){ return ""; } return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.endTime); } /** * 获取持续时间 */ @@ -500,6 +516,9 @@ } Date endDate = new Date(); if (!Cools.isEmpty(this.endTime)) { endDate = this.endTime; } //用来获取两个时间相差的毫秒数 long l = this.ioTime.getTime() - endDate.getTime(); src/main/java/com/zy/asrs/entity/WrkMastLog.java
@@ -11,6 +11,7 @@ import com.zy.system.service.UserService; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import java.io.Serializable; import java.text.SimpleDateFormat; @@ -324,6 +325,14 @@ @TableField("shuttle_no") private Integer shuttleNo; /** * 结束时间 */ @ApiModelProperty(value= "结束时间") @TableField("end_time") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") private Date endTime; public WrkMastLog() {} public String getWrkNo$(){ @@ -501,6 +510,13 @@ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.logErrTime); } public String getEndTime$(){ if (Cools.isEmpty(this.endTime)){ return ""; } return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.endTime); } /** * 获取持续时间 */ @@ -510,6 +526,9 @@ } Date endDate = new Date(); if (!Cools.isEmpty(this.endTime)) { endDate = this.endTime; } //用来获取两个时间相差的毫秒数 long l = this.ioTime.getTime() - endDate.getTime(); src/main/java/com/zy/asrs/service/WaitPakinService.java
New file @@ -0,0 +1,7 @@ package com.zy.asrs.service; import com.baomidou.mybatisplus.service.IService; import com.zy.asrs.entity.WaitPakin; public interface WaitPakinService extends IService<WaitPakin> { } src/main/java/com/zy/asrs/service/WorkService.java
New file @@ -0,0 +1,15 @@ package com.zy.asrs.service; public interface WorkService { /** * 手动完成工作档 */ void completeWrkMast(String workNo, Long userId); /** * 手动取消工作档 */ void cancelWrkMast(String workNo, Long userId); } src/main/java/com/zy/asrs/service/impl/WaitPakinServiceImpl.java
New file @@ -0,0 +1,11 @@ package com.zy.asrs.service.impl; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.zy.asrs.entity.WaitPakin; import com.zy.asrs.mapper.WaitPakinMapper; import com.zy.asrs.service.WaitPakinService; import org.springframework.stereotype.Service; @Service public class WaitPakinServiceImpl extends ServiceImpl<WaitPakinMapper, WaitPakin> implements WaitPakinService { } src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
New file @@ -0,0 +1,177 @@ package com.zy.asrs.service.impl; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; import com.core.common.DateUtils; import com.core.exception.CoolException; import com.zy.asrs.domain.enums.WmsWrkStatusType; import com.zy.asrs.entity.*; import com.zy.asrs.service.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Date; import java.util.List; import java.util.concurrent.TimeUnit; @Service public class WorkServiceImpl implements WorkService { @Autowired private WrkMastService wrkMastService; @Autowired private WmsWrkService wmsWrkService; @Autowired private LocMastService locMastService; @Autowired private WaitPakinService waitPakinService; @Autowired private WrkMastLogService wrkMastLogService; @Autowired private WrkDetlLogService wrkDetlLogService; @Autowired private WrkDetlService wrkDetlService; @Override @Transactional public void completeWrkMast(String workNo, Long userId) { WrkMast wrkMast = wrkMastService.selectById(workNo); WmsWrk wmsWrk = wmsWrkService.selectByWmsWrkNo(wrkMast.getWmsWrkNo()); if (Cools.isEmpty(wrkMast, wmsWrk)) { throw new CoolException(workNo + "任务不存在"); } if (wrkMast.getWrkSts() == 4 || wrkMast.getWrkSts() == 14) { throw new CoolException("当前任务已完成"); } // 入库 + 库位转移 if (wrkMast.getWrkSts() < 4 || (wrkMast.getWrkSts() > 10 && wrkMast.getIoType()==11)) { wrkMast.setWrkSts(4L); // 出库 } else if (wrkMast.getWrkSts() > 10) { wrkMast.setWrkSts(14L); } Date now = new Date(); wrkMast.setCrnStrTime(DateUtils.calculate(now, 1L, TimeUnit.SECONDS, true)); wrkMast.setCrnEndTime(now); wrkMast.setModiTime(now); wrkMast.setModiUser(userId); // 完成操作人员记录 wrkMast.setManuType("手动完成"); wmsWrk.setWmsStatus(WmsWrkStatusType.COMPLETE.id); wmsWrk.setModiUser(userId); wmsWrk.setModiTime(now); wmsWrk.setEndTime(now); if (!wrkMastService.updateById(wrkMast) || !wmsWrkService.updateById(wmsWrk)) { throw new CoolException("修改任务失败"); } } @Override @Transactional public void cancelWrkMast(String workNo, Long userId) { Date now = new Date(); WrkMast wrkMast = wrkMastService.selectById(workNo); WmsWrk wmsWrk = wmsWrkService.selectByWmsWrkNo(wrkMast.getWmsWrkNo()); if (Cools.isEmpty(wrkMast, wmsWrk)) { throw new CoolException(workNo + "任务不存在"); } String locNo = ""; // 待修改目标库位 String locSts = ""; // 待修改目标库位状态 // 入库取消(修改目标库位) if (wrkMast.getWrkSts() < 4) { locNo = wrkMast.getLocNo(); locSts = "O"; // 库位转移 if (wrkMast.getIoType() == 11) { // 库位转移:源库位 LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo()); if (Cools.isEmpty(locMast)) { throw new CoolException("取消库位转移失败,源库位不存在:"+ wrkMast.getSourceLocNo()); } locMast.setLocSts(wrkMast.getFullPlt().equalsIgnoreCase("N")?"D":"F"); locMast.setModiTime(now); locMast.setModiUser(userId); locMastService.updateById(locMast); } // 出库取消(修改源库位) } else if (wrkMast.getWrkSts() > 10 && wrkMast.getWrkSts() != 14) { locNo = wrkMast.getSourceLocNo(); // 出库 ===>> F.在库 if (wrkMast.getIoType() > 100 && wrkMast.getIoType() != 110) { locSts = "F"; // 空板出库 ===>> D.空桶/空栈板 } else if (wrkMast.getIoType() == 110) { locSts = "D"; // 库位转移 ===>> D.空桶/空栈板 } else if (wrkMast.getIoType() == 11) { locSts = wrkMast.getFullPlt().equalsIgnoreCase("N")?"D":"F"; // 库位转移:目标库位 LocMast locMast = locMastService.selectById(wrkMast.getLocNo()); if (Cools.isEmpty(locMast)) { throw new CoolException("取消库位转移失败,目标库位不存在:"+ wrkMast.getSourceLocNo()); } locMast.setLocSts("O"); locMast.setModiTime(now); locMast.setModiUser(userId); locMastService.updateById(locMast); } } else { throw new CoolException("当前工作状态无法取消"); } //取消入库工作档时,查询组托表,如果有将状态改为待处理 if(wrkMast.getIoType() == 1) { List<WaitPakin> waitPakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", wrkMast.getBarcode())); for (WaitPakin waitPakin:waitPakins){ if (!Cools.isEmpty(waitPakin)) { waitPakin.setIoStatus("N"); waitPakin.setLocNo(""); waitPakinService.update(waitPakin, new EntityWrapper<WaitPakin>() .eq("order_no", waitPakin.getOrderNo()) .eq("matnr", waitPakin.getMatnr()) .eq("batch", waitPakin.getBatch())); } } } // 取消操作人员记录 wrkMast.setManuType("手动取消"); wrkMast.setModiUser(userId); wrkMast.setModiTime(now); if (!wrkMastService.updateById(wrkMast)) { throw new CoolException("取消任务失败"); } wmsWrk.setWmsStatus(WmsWrkStatusType.CANCEL.id); wmsWrk.setModiUser(userId); wmsWrk.setModiTime(now); wmsWrk.setEndTime(now); if (!wmsWrkService.updateById(wmsWrk)) { throw new CoolException("取消任务失败"); } // 保存工作主档历史档 if (!wrkMastLogService.save(wrkMast.getWrkNo())) { throw new CoolException("保存任务历史档失败, workNo = " + wrkMast.getWrkNo()); } // 删除工作主档 boolean wrkMastRes = wrkMastService.deleteById(wrkMast); // 修改库位状态 LocMast locMast = locMastService.selectById(locNo); if (Cools.isEmpty(locMast)) { throw new CoolException("取消任务失败,库位不存在:"+ locNo); } locMast.setLocSts(locSts); locMast.setModiTime(now); locMast.setModiUser(userId); boolean locMastRes = locMastService.updateById(locMast); if (!wrkMastRes || !locMastRes) { throw new CoolException("保存数据失败"); } } } src/main/resources/mapper/WmsWrkMapper.xml
@@ -22,6 +22,7 @@ <result column="appe_time" property="appeTime" /> <result column="memo" property="memo" /> <result column="barcode" property="barcode" /> <result column="end_time" property="endTime" /> </resultMap>