From ddee9db870db0459bb0dfbdd86987e86924f7eaa Mon Sep 17 00:00:00 2001 From: Junjie <fallin.jie@qq.com> Date: 星期六, 20 五月 2023 16:23:15 +0800 Subject: [PATCH] WMS任务(1.入库,101.出库) --- src/main/webapp/views/wmsWrk/wmsWrk.html | 254 +++++++++ src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java | 4 src/main/webapp/views/wrkMast/wrkMast.html | 2 src/main/webapp/static/wms/js/wrkMast/wrkMast.js | 3 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 10 src/main/resources/mapper/LocMastMapper.xml | 5 src/main/java/com/zy/asrs/controller/WmsWrkController.java | 186 +++++++ src/main/java/com/zy/asrs/entity/WrkMast.java | 7 src/main/java/com/zy/asrs/service/WmsWrkService.java | 19 src/main/resources/mapper/WmsWrkMapper.xml | 33 + src/main/java/com/zy/asrs/mapper/LocMastMapper.java | 2 src/main/java/com/zy/asrs/mapper/WmsWrkMapper.java | 14 src/main/java/com/zy/asrs/service/StaDescService.java | 2 src/main/java/com/zy/asrs/service/impl/WmsWrkServiceImpl.java | 177 ++++++ src/main/webapp/static/wms/js/wmsWrk/wmsWrk.js | 405 +++++++++++++++ src/main/java/com/zy/asrs/domain/enums/WmsWrkStatusType.java | 34 + src/main/java/com/zy/asrs/entity/WmsWrk.java | 334 ++++++++++++ src/main/java/com/zy/asrs/service/LocMastService.java | 1 src/main/java/com/zy/common/service/CommonService.java | 2 src/main/java/com/zy/asrs/service/impl/StaDescServiceImpl.java | 15 20 files changed, 1,506 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/WmsWrkController.java b/src/main/java/com/zy/asrs/controller/WmsWrkController.java new file mode 100644 index 0000000..dbb1bd2 --- /dev/null +++ b/src/main/java/com/zy/asrs/controller/WmsWrkController.java @@ -0,0 +1,186 @@ +package com.zy.asrs.controller; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.mapper.Wrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.core.common.DateUtils; +import com.zy.asrs.domain.enums.WmsWrkStatusType; +import com.zy.asrs.entity.WmsWrk; +import com.zy.asrs.entity.WrkMast; +import com.zy.asrs.service.WmsWrkService; +import com.core.annotations.ManagerAuth; +import com.core.common.BaseRes; +import com.core.common.Cools; +import com.core.common.R; +import com.zy.common.web.BaseController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.*; + +@RestController +public class WmsWrkController extends BaseController { + + @Autowired + private WmsWrkService wmsWrkService; + + @RequestMapping(value = "/wmsWrk/{id}/auth") + @ManagerAuth + public R get(@PathVariable("id") String id) { + return R.ok(wmsWrkService.selectById(String.valueOf(id))); + } + + @RequestMapping(value = "/wmsWrk/list/auth") + @ManagerAuth + public R list(@RequestParam(defaultValue = "1")Integer curr, + @RequestParam(defaultValue = "10")Integer limit, + @RequestParam(required = false)String orderByField, + @RequestParam(required = false)String orderByType, + @RequestParam Map<String, Object> param){ + EntityWrapper<WmsWrk> wrapper = new EntityWrapper<>(); + excludeTrash(param); + convert(param, wrapper); + if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} + return R.ok(wmsWrkService.selectPage(new Page<>(curr, limit), wrapper)); + } + + private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){ + for (Map.Entry<String, Object> entry : map.entrySet()){ + String val = String.valueOf(entry.getValue()); + if (val.contains(RANGE_TIME_LINK)){ + String[] dates = val.split(RANGE_TIME_LINK); + wrapper.ge(entry.getKey(), DateUtils.convert(dates[0])); + wrapper.le(entry.getKey(), DateUtils.convert(dates[1])); + } else { + wrapper.like(entry.getKey(), val); + } + } + } + + @RequestMapping(value = "/wmsWrk/add/auth") + @ManagerAuth + public R add(WmsWrk wmsWrk) { + wmsWrkService.insert(wmsWrk); + return R.ok(); + } + + @RequestMapping(value = "/wmsWrk/update/auth") + @ManagerAuth + public R update(WmsWrk wmsWrk){ + if (Cools.isEmpty(wmsWrk) || null==wmsWrk.getWmsWrkNo()){ + return R.error(); + } + wmsWrkService.updateById(wmsWrk); + return R.ok(); + } + + @RequestMapping(value = "/wmsWrk/delete/auth") + @ManagerAuth + public R delete(@RequestParam(value="ids[]") Long[] ids){ + for (Long id : ids){ + wmsWrkService.deleteById(id); + } + return R.ok(); + } + + @RequestMapping(value = "/wmsWrk/export/auth") + @ManagerAuth + public R export(@RequestBody JSONObject param){ + EntityWrapper<WmsWrk> wrapper = new EntityWrapper<>(); + List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class); + Map<String, Object> map = excludeTrash(param.getJSONObject("wmsWrk")); + convert(map, wrapper); + List<WmsWrk> list = wmsWrkService.selectList(wrapper); + return R.ok(exportSupport(list, fields)); + } + + @RequestMapping(value = "/wmsWrkQuery/auth") + @ManagerAuth + public R query(String condition) { + EntityWrapper<WmsWrk> wrapper = new EntityWrapper<>(); + wrapper.like("id", condition); + Page<WmsWrk> page = wmsWrkService.selectPage(new Page<>(0, 10), wrapper); + List<Map<String, Object>> result = new ArrayList<>(); + for (WmsWrk wmsWrk : page.getRecords()){ + Map<String, Object> map = new HashMap<>(); + map.put("id", wmsWrk.getWmsWrkNo()); + map.put("value", wmsWrk.getWmsWrkNo()); + result.add(map); + } + return R.ok(result); + } + + @RequestMapping(value = "/wmsWrk/check/column/auth") + @ManagerAuth + public R query(@RequestBody JSONObject param) { + Wrapper<WmsWrk> wrapper = new EntityWrapper<WmsWrk>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val")); + if (null != wmsWrkService.selectOne(wrapper)){ + return R.parse(BaseRes.REPEAT).add(getComment(WmsWrk.class, String.valueOf(param.get("key")))); + } + return R.ok(); + } + + @RequestMapping(value = "/wmsWrk/add/pri/auth") + @ManagerAuth(memo = "浠诲姟澧炲姞浼樺厛绾�") + public R addPri(@RequestBody List<WmsWrk> list) { + if (list.isEmpty()) { + return R.error("璇疯嚦灏戦�夋嫨涓�琛屾暟鎹�"); + } + for (WmsWrk entity : list){ + entity.setIoPri(entity.getIoPri() + 1); + } + wmsWrkService.updateBatchById(list); + return R.ok(); + } + + @RequestMapping(value = "/wmsWrk/red/pri/auth") + @ManagerAuth(memo = "浠诲姟闄嶄綆浼樺厛绾�") + public R redPri(@RequestBody List<WmsWrk> list) { + if (list.isEmpty()) { + return R.error("璇疯嚦灏戦�夋嫨涓�琛屾暟鎹�"); + } + for (WmsWrk entity : list){ + entity.setIoPri(entity.getIoPri() - 1); + } + wmsWrkService.updateBatchById(list); + return R.ok(); + } + + @PostMapping(value = "/wmsWrk/complete/auth") + @ManagerAuth(memo = "鎵嬪姩瀹屾垚浠诲姟") + public R complete(@RequestParam Integer wmsWrkNo) { + WmsWrk wmsWrk = wmsWrkService.selectByWmsWrkNo(wmsWrkNo); + if (wmsWrk == null) { + return R.error(); + } + wmsWrk.setWmsStatus(WmsWrkStatusType.COMPLETE.id); + wmsWrk.setModiTime(new Date()); + wmsWrk.setModiUser(getUserId()); + wmsWrkService.updateById(wmsWrk); + return R.ok(); + } + + @PostMapping(value = "/wmsWrk/cancel/auth") + @ManagerAuth(memo = "鎵嬪姩鍙栨秷浠诲姟") + public R cancel(@RequestParam Integer wmsWrkNo) { + WmsWrk wmsWrk = wmsWrkService.selectByWmsWrkNo(wmsWrkNo); + if (wmsWrk == null) { + return R.error(); + } + wmsWrk.setWmsStatus(WmsWrkStatusType.CANCEL.id); + wmsWrk.setModiTime(new Date()); + wmsWrk.setModiUser(getUserId()); + wmsWrkService.updateById(wmsWrk); + return R.ok(); + } + + @PostMapping(value = "/wmsWrk/distribute/auth") + @ManagerAuth(memo = "鎵嬪姩娲惧彂浠诲姟") + public R distribute(@RequestParam Integer wmsWrkNo) { + wmsWrkService.distribute(wmsWrkNo, getUserId()); + return R.ok(); + } + +} diff --git a/src/main/java/com/zy/asrs/domain/enums/WmsWrkStatusType.java b/src/main/java/com/zy/asrs/domain/enums/WmsWrkStatusType.java new file mode 100644 index 0000000..b27edd7 --- /dev/null +++ b/src/main/java/com/zy/asrs/domain/enums/WmsWrkStatusType.java @@ -0,0 +1,34 @@ +package com.zy.asrs.domain.enums; + +import com.zy.core.enums.CrnForkPosType; + +public enum WmsWrkStatusType { + + RECEIVE(1,"鎺ユ敹"), + DISTRIBUTE(2,"娲惧彂"), + WORKING(3,"鎵ц"), + COMPLETE(4,"瀹岀粨"), + CANCEL(5,"鍙栨秷"), + ; + + public Integer id; + public String desc; + + WmsWrkStatusType(Integer id,String desc){ + this.id = id; + this.desc = desc; + } + + public static String get(Integer id) { + if (null == id) { + return null; + } + for (WmsWrkStatusType type : WmsWrkStatusType.values()) { + if (type.id.equals(id)) { + return type.desc; + } + } + return null; + } + +} diff --git a/src/main/java/com/zy/asrs/entity/WmsWrk.java b/src/main/java/com/zy/asrs/entity/WmsWrk.java new file mode 100644 index 0000000..ac4efbb --- /dev/null +++ b/src/main/java/com/zy/asrs/entity/WmsWrk.java @@ -0,0 +1,334 @@ +package com.zy.asrs.entity; + +import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.enums.IdType; +import com.baomidou.mybatisplus.annotations.TableField; +import java.text.SimpleDateFormat; +import java.util.Date; + +import com.zy.asrs.domain.enums.WmsWrkStatusType; +import org.springframework.format.annotation.DateTimeFormat; +import com.core.common.SpringUtils; +import com.zy.asrs.service.BasWrkIotypeService; +import com.zy.asrs.entity.BasWrkIotype; +import com.core.common.SpringUtils; +import com.zy.asrs.service.BasCrnpService; +import com.zy.asrs.entity.BasCrnp; +import com.core.common.SpringUtils; +import com.zy.asrs.service.LocMastService; +import com.zy.asrs.entity.LocMast; +import com.core.common.SpringUtils; +import com.zy.asrs.service.BasDevpService; +import com.zy.asrs.entity.BasDevp; +import com.core.common.SpringUtils; +import com.zy.asrs.service.BasDevpService; +import com.zy.asrs.entity.BasDevp; +import com.core.common.SpringUtils; +import com.zy.asrs.service.LocMastService; +import com.zy.asrs.entity.LocMast; +import com.core.common.SpringUtils; +import com.zy.system.service.UserService; +import com.zy.system.entity.User; +import java.text.SimpleDateFormat; +import java.util.Date; +import com.core.common.SpringUtils; +import com.zy.system.service.UserService; +import com.zy.system.entity.User; +import java.text.SimpleDateFormat; +import java.util.Date; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import com.baomidou.mybatisplus.annotations.TableName; +import java.io.Serializable; + +@Data +@TableName("wcs_wms_wrk") +public class WmsWrk implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * wms浠诲姟鍙� + */ + @ApiModelProperty(value= "wms浠诲姟鍙�") + @TableId(value = "wms_wrk_no", type = IdType.INPUT) + @TableField("wms_wrk_no") + private Integer wmsWrkNo; + + /** + * wms浠诲姟鐘舵�� 1: 鎺ユ敹 2: 娲惧彂 3: 鎵ц 4: 瀹岀粨 5: 鍙栨秷 + */ + @ApiModelProperty(value= "wms浠诲姟鐘舵�� 1: 鎺ユ敹 2: 娲惧彂 3: 鎵ц 4: 瀹岀粨 5: 鍙栨秷") + @TableField("wms_status") + private Integer wmsStatus; + + /** + * 浠诲姟鍙� + */ + @ApiModelProperty(value= "浠诲姟鍙�") + @TableField("wrk_no") + private Integer wrkNo; + + /** + * 浠诲姟鏃堕棿 + */ + @ApiModelProperty(value= "浠诲姟鏃堕棿") + @TableField("create_time") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date createTime; + + /** + * 浠诲姟绫诲瀷 + */ + @ApiModelProperty(value= "浠诲姟绫诲瀷") + @TableField("io_type") + private Integer ioType; + + /** + * 浼樺厛绾� + */ + @ApiModelProperty(value= "浼樺厛绾�") + @TableField("io_pri") + private Double ioPri; + + /** + * 鐩爣搴撲綅 + */ + @ApiModelProperty(value= "鐩爣搴撲綅") + @TableField("loc_no") + private String locNo; + + /** + * 鐩爣绔� + */ + @ApiModelProperty(value= "鐩爣绔�") + @TableField("sta_no") + private Integer staNo; + + /** + * 婧愮珯 + */ + @ApiModelProperty(value= "婧愮珯") + @TableField("source_sta_no") + private Integer sourceStaNo; + + /** + * 婧愬簱浣� + */ + @ApiModelProperty(value= "婧愬簱浣�") + @TableField("source_loc_no") + private String sourceLocNo; + + /** + * 搴撲綅鐘舵�� + */ + @ApiModelProperty(value= "搴撲綅鐘舵��") + @TableField("loc_sts") + private String locSts; + + /** + * 鎷f枡(checkBox) + */ + @ApiModelProperty(value= "鎷f枡(checkBox)") + private String picking; + + /** + * 淇敼浜哄憳 + */ + @ApiModelProperty(value= "淇敼浜哄憳") + @TableField("modi_user") + private Long modiUser; + + /** + * 淇敼鏃堕棿 + */ + @ApiModelProperty(value= "淇敼鏃堕棿") + @TableField("modi_time") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date modiTime; + + /** + * 鍒涘缓鑰� + */ + @ApiModelProperty(value= "鍒涘缓鑰�") + @TableField("appe_user") + private Long appeUser; + + /** + * 娣诲姞鏃堕棿 + */ + @ApiModelProperty(value= "娣诲姞鏃堕棿") + @TableField("appe_time") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date appeTime; + + /** + * 澶囨敞 + */ + @ApiModelProperty(value= "澶囨敞") + private String memo; + + /** + * 鏉$爜 + */ + @ApiModelProperty(value= "鏉$爜") + @TableField("barcode") + private String barcode; + + 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) { + this.wmsWrkNo = wmsWrkNo; + this.wmsStatus = wmsStatus; + this.wrkNo = wrkNo; + this.createTime = createTime; + this.ioType = ioType; + this.ioPri = ioPri; + this.locNo = locNo; + this.staNo = staNo; + this.sourceStaNo = sourceStaNo; + this.sourceLocNo = sourceLocNo; + this.locSts = locSts; + this.picking = picking; + this.modiUser = modiUser; + this.modiTime = modiTime; + this.appeUser = appeUser; + this.appeTime = appeTime; + this.memo = memo; + this.barcode = barcode; + } + +// WmsWrk wmsWrk = new WmsWrk( +// null, // wms浠诲姟鍙穂闈炵┖] +// null, // wms浠诲姟鐘舵�� +// null, // 浠诲姟鍙� +// null, // 浠诲姟鏃堕棿 +// null, // 鍏ュ嚭搴撶被鍨� +// null, // 鍫嗗灈鏈� +// null, // 浼樺厛绾� +// null, // 鐩爣搴撲綅 +// null, // 鐩爣绔� +// null, // 婧愮珯 +// null, // 婧愬簱浣� +// null, // 搴撲綅鐘舵�� +// null, // 鎷f枡(checkBox) +// null, // 淇敼浜哄憳 +// null, // 淇敼鏃堕棿 +// null, // 鍒涘缓鑰� +// null, // 娣诲姞鏃堕棿 +// null // 澶囨敞 +// ); + + public String getWmsStatus$(){ + if (null == this.wmsStatus){ return null; } + return WmsWrkStatusType.get(this.wmsStatus); + } + + public String getCreateTime$(){ + if (Cools.isEmpty(this.createTime)){ + return ""; + } + return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime); + } + + public String getIoType$(){ + BasWrkIotypeService service = SpringUtils.getBean(BasWrkIotypeService.class); + BasWrkIotype basWrkIotype = service.selectById(this.ioType); + if (!Cools.isEmpty(basWrkIotype)){ + return String.valueOf(basWrkIotype.getIoDesc()); + } + return null; + } + + public String getLocNo$(){ + LocMastService service = SpringUtils.getBean(LocMastService.class); + LocMast locMast = service.selectById(this.locNo); + if (!Cools.isEmpty(locMast)){ + return String.valueOf(locMast.getLocNo()); + } + return null; + } + + public String getStaNo$(){ + BasDevpService service = SpringUtils.getBean(BasDevpService.class); + BasDevp basDevp = service.selectById(this.staNo); + if (!Cools.isEmpty(basDevp)){ + return String.valueOf(basDevp.getDevNo()); + } + return null; + } + + public String getSourceStaNo$(){ + BasDevpService service = SpringUtils.getBean(BasDevpService.class); + BasDevp basDevp = service.selectById(this.sourceStaNo); + if (!Cools.isEmpty(basDevp)){ + return String.valueOf(basDevp.getDevNo()); + } + return null; + } + + public String getSourceLocNo$(){ + LocMastService service = SpringUtils.getBean(LocMastService.class); + LocMast locMast = service.selectById(this.sourceLocNo); + if (!Cools.isEmpty(locMast)){ + return String.valueOf(locMast.getLocNo()); + } + return null; + } + + public String getModiUser$(){ + UserService service = SpringUtils.getBean(UserService.class); + User user = service.selectById(this.modiUser); + if (!Cools.isEmpty(user)){ + return String.valueOf(user.getUsername()); + } + return null; + } + + public String getModiTime$(){ + if (Cools.isEmpty(this.modiTime)){ + return ""; + } + return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.modiTime); + } + + public String getAppeUser$(){ + UserService service = SpringUtils.getBean(UserService.class); + User user = service.selectById(this.appeUser); + if (!Cools.isEmpty(user)){ + return String.valueOf(user.getUsername()); + } + return null; + } + + public String getAppeTime$(){ + if (Cools.isEmpty(this.appeTime)){ + return ""; + } + return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime); + } + + /** + * 鑾峰彇鎸佺画鏃堕棿 + */ + public String getDurationTime() { + if (Cools.isEmpty(this.createTime)) { + return ""; + } + + Date endDate = new Date(); + + //鐢ㄦ潵鑾峰彇涓や釜鏃堕棿鐩稿樊鐨勬绉掓暟 + long l = this.createTime.getTime() - endDate.getTime(); + + //鍒嗗埆璁$畻鐩稿樊鐨勫ぉ銆佸皬鏃躲�佸垎銆佺 + long day = l / (24 * 60 * 60 * 1000); + long hour = (l / (60 * 60 * 1000) - day * 24); + long min = ((l / (60 * 1000)) - day * 24 * 60 - hour * 60); + long s = (l / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60); + + return Math.abs(day) + "澶�" + Math.abs(hour) + "灏忔椂" + Math.abs(min) + "鍒�" + Math.abs(s) + "绉�"; + } + +} diff --git a/src/main/java/com/zy/asrs/entity/WrkMast.java b/src/main/java/com/zy/asrs/entity/WrkMast.java index 1078c51..5800466 100644 --- a/src/main/java/com/zy/asrs/entity/WrkMast.java +++ b/src/main/java/com/zy/asrs/entity/WrkMast.java @@ -308,6 +308,13 @@ @TableField("full_plt") private String fullPlt; + /** + * 婊℃澘 + */ + @ApiModelProperty(value= "wms浠诲姟鍙�") + @TableField("wms_wrk_no") + private Integer wmsWrkNo; + public String getWrkSts$(){ BasWrkStatusMapper mapper = SpringUtils.getBean(BasWrkStatusMapper.class); BasWrkStatus entity = mapper.selectById(this.wrkSts); diff --git a/src/main/java/com/zy/asrs/mapper/LocMastMapper.java b/src/main/java/com/zy/asrs/mapper/LocMastMapper.java index 9fd1d06..37d6a8d 100644 --- a/src/main/java/com/zy/asrs/mapper/LocMastMapper.java +++ b/src/main/java/com/zy/asrs/mapper/LocMastMapper.java @@ -35,4 +35,6 @@ @Select("select count(*) as count from asr_loc_mast where 1=1 and loc_sts = 'O' and loc_type1 = #{locType1} and crn_no = #{crnNo}") Integer selectEmptyLocCount(@Param("locType1") Short locType1, @Param("crnNo") Integer crnNo); + LocMast selectByLocNo(String locNo); + } diff --git a/src/main/java/com/zy/asrs/mapper/WmsWrkMapper.java b/src/main/java/com/zy/asrs/mapper/WmsWrkMapper.java new file mode 100644 index 0000000..15d280c --- /dev/null +++ b/src/main/java/com/zy/asrs/mapper/WmsWrkMapper.java @@ -0,0 +1,14 @@ +package com.zy.asrs.mapper; + +import com.zy.asrs.entity.WmsWrk; +import com.baomidou.mybatisplus.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.springframework.stereotype.Repository; + +@Mapper +@Repository +public interface WmsWrkMapper extends BaseMapper<WmsWrk> { + + WmsWrk selectByWmsWrkNo(Integer wmsWrkNo); + +} diff --git a/src/main/java/com/zy/asrs/service/LocMastService.java b/src/main/java/com/zy/asrs/service/LocMastService.java index bc45966..91c716e 100644 --- a/src/main/java/com/zy/asrs/service/LocMastService.java +++ b/src/main/java/com/zy/asrs/service/LocMastService.java @@ -45,5 +45,6 @@ */ Boolean checkEmptyCount(LocMast locMast); + LocMast selectByLocNo(String locNo); } diff --git a/src/main/java/com/zy/asrs/service/StaDescService.java b/src/main/java/com/zy/asrs/service/StaDescService.java index b0ea462..f72f0a0 100644 --- a/src/main/java/com/zy/asrs/service/StaDescService.java +++ b/src/main/java/com/zy/asrs/service/StaDescService.java @@ -5,4 +5,6 @@ public interface StaDescService extends IService<StaDesc> { + StaDesc queryCrnStn(Integer typeNo, Integer crnNo, Integer stnNo); + } diff --git a/src/main/java/com/zy/asrs/service/WmsWrkService.java b/src/main/java/com/zy/asrs/service/WmsWrkService.java new file mode 100644 index 0000000..745ae7e --- /dev/null +++ b/src/main/java/com/zy/asrs/service/WmsWrkService.java @@ -0,0 +1,19 @@ +package com.zy.asrs.service; + +import com.zy.asrs.entity.WmsWrk; +import com.baomidou.mybatisplus.service.IService; + +public interface WmsWrkService extends IService<WmsWrk> { + + WmsWrk selectByWmsWrkNo(Integer wmsWrkNo); + + //娲惧彂浠诲姟 + void distribute(Integer wmsWrkNo, Long userId); + + //鍏ュ簱 + void startup(WmsWrk wmsWrk, Long userId); + + //鍑哄簱 + void stockOut(WmsWrk wmsWrk, Long userId); + +} diff --git a/src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java index ababf93..9c6a0b7 100644 --- a/src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java @@ -52,4 +52,8 @@ return this.baseMapper.selectEmptyLocCount(locMast.getLocType1(), locMast.getCrnNo()) > 1; } + @Override + public LocMast selectByLocNo(String locNo) { + return this.baseMapper.selectByLocNo(locNo); + } } diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java index e6c11c8..98eb27e 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -7,6 +7,7 @@ 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.mapper.BasCrnErrorMapper; import com.zy.asrs.mapper.WaitPakinMapper; @@ -87,6 +88,8 @@ private BasErrLogService basErrLogService; @Autowired private BasCrnErrorMapper basCrnErrorMapper; + @Autowired + private WmsWrkService wmsWrkService; @Value("${wms.url}") private String wmsUrl; @@ -305,6 +308,13 @@ if (wrkMastMapper.updateById(wrkMast) == 0) { log.error("鏇存柊宸ヤ綔妗eけ璐ワ紒锛侊紒 [宸ヤ綔鍙凤細{}]", wrkMast.getWrkNo()); } + + //鏇存柊WMS浠诲姟鐘舵�� + WmsWrk wmsWrk = wmsWrkService.selectByWmsWrkNo(wrkMast.getWmsWrkNo()); + wmsWrk.setWmsStatus(WmsWrkStatusType.WORKING.id);//鎵ц涓� + wmsWrk.setModiTime(new Date()); + wmsWrkService.updateById(wmsWrk); + } else { log.error("鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId()); } diff --git a/src/main/java/com/zy/asrs/service/impl/StaDescServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/StaDescServiceImpl.java index 87a3f20..2bfd0ce 100644 --- a/src/main/java/com/zy/asrs/service/impl/StaDescServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/StaDescServiceImpl.java @@ -1,6 +1,9 @@ package com.zy.asrs.service.impl; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.mapper.Wrapper; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.core.exception.CoolException; import com.zy.asrs.entity.StaDesc; import com.zy.asrs.mapper.StaDescMapper; import com.zy.asrs.service.StaDescService; @@ -9,4 +12,16 @@ @Service("staDescService") public class StaDescServiceImpl extends ServiceImpl<StaDescMapper, StaDesc> implements StaDescService { + @Override + public StaDesc queryCrnStn(Integer typeNo, Integer crnNo, Integer stnNo) { + Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>() + .eq("type_no", typeNo) + .eq("stn_no", stnNo) + .eq("crn_no", crnNo); + StaDesc staDesc = this.selectOne(wrapper); + if (staDesc == null) { + throw new CoolException("鍑哄簱璺緞涓嶅瓨鍦�"); + } + return staDesc; + } } diff --git a/src/main/java/com/zy/asrs/service/impl/WmsWrkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WmsWrkServiceImpl.java new file mode 100644 index 0000000..22917e7 --- /dev/null +++ b/src/main/java/com/zy/asrs/service/impl/WmsWrkServiceImpl.java @@ -0,0 +1,177 @@ +package com.zy.asrs.service.impl; + +import com.core.exception.CoolException; +import com.zy.asrs.domain.enums.WmsWrkStatusType; +import com.zy.asrs.entity.*; +import com.zy.asrs.mapper.WmsWrkMapper; +import com.zy.asrs.service.*; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.zy.common.service.CommonService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; + +@Service("wmsWrkService") +public class WmsWrkServiceImpl extends ServiceImpl<WmsWrkMapper, WmsWrk> implements WmsWrkService { + + @Autowired + private BasDevpService basDevpService; + @Autowired + private CommonService commonService; + @Autowired + private LocMastService locMastService; + @Autowired + private WrkMastService wrkMastService; + @Autowired + private StaDescService staDescService; + + @Override + public WmsWrk selectByWmsWrkNo(Integer wmsWrkNo) { + return this.baseMapper.selectByWmsWrkNo(wmsWrkNo); + } + + @Override + @Transactional + public void distribute(Integer wmsWrkNo, Long userId) { + WmsWrk wmsWrk = this.selectByWmsWrkNo(wmsWrkNo); + if (wmsWrk == null) { + throw new CoolException("WMS浠诲姟涓嶅瓨鍦�"); + } + + wmsWrk.setWmsStatus(WmsWrkStatusType.DISTRIBUTE.id);//娲惧彂鐘舵�� + wmsWrk.setModiTime(new Date()); + wmsWrk.setModiUser(userId); + this.updateById(wmsWrk); + + //鍒涘缓浠诲姟 + if (wmsWrk.getIoType() == 1) { + //鍏ュ簱 + startup(wmsWrk, userId); + }else if(wmsWrk.getIoType() == 101){ + //鍑哄簱 + stockOut(wmsWrk, userId); + } + + } + + @Override + @Transactional + public void startup(WmsWrk wmsWrk, Long userId) { + Date now = new Date(); + LocMast locMast = locMastService.selectByLocNo(wmsWrk.getLocNo()); + if (locMast == null) { + throw new CoolException("搴撲綅涓嶅瓨鍦�"); + } + + // 鐢熸垚浠诲姟鍙� + int workNo = commonService.getWorkNo(0); + wmsWrk.setWrkNo(workNo); + this.baseMapper.updateById(wmsWrk); + + // 婧愮珯鐐圭姸鎬佹娴� + BasDevp sourceStaNo = basDevpService.checkSiteStatus(wmsWrk.getSourceStaNo(), true); + + // 鐢熸垚宸ヤ綔妗� + WrkMast wrkMast = new WrkMast(); + wrkMast.setWrkNo(workNo); + wrkMast.setWmsWrkNo(wmsWrk.getWmsWrkNo()); + wrkMast.setIoTime(now); + wrkMast.setWrkSts(1L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID + wrkMast.setIoType(1); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱 + wrkMast.setIoPri(13D); // 浼樺厛绾э細13 + wrkMast.setCrnNo(locMast.getCrnNo()); + wrkMast.setSourceStaNo(wmsWrk.getSourceStaNo()); + wrkMast.setStaNo(wmsWrk.getStaNo()); + wrkMast.setLocNo(wmsWrk.getLocNo()); + wrkMast.setBarcode(wmsWrk.getBarcode()); // 鎵樼洏鐮� + wrkMast.setFullPlt("Y"); // 婊℃澘锛歒 + wrkMast.setPicking("N"); // 鎷f枡 + wrkMast.setExitMk("N"); // 閫�鍑� + wrkMast.setEmptyMk("N"); // 绌烘澘 + wrkMast.setLinkMis("N"); + wrkMast.setCtnType(sourceStaNo.getCtnType()); // 瀹瑰櫒绫诲瀷 + wrkMast.setAppeUser(userId); + wrkMast.setAppeTime(now); + wrkMast.setModiUser(userId); + wrkMast.setModiTime(now); + if (!wrkMastService.insert(wrkMast)) { + throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); + } + + // 鏇存柊婧愮珯鐐逛俊鎭� + sourceStaNo.setWrkNo(workNo); + sourceStaNo.setModiUser(userId); + sourceStaNo.setModiTime(now); + if (!basDevpService.updateById(sourceStaNo)) { + throw new CoolException("鏇存柊婧愮珯澶辫触"); + } + + // 鏇存柊鐩爣搴撲綅鐘舵�� + if (locMast.getLocSts().equals("O")) { + locMast.setLocSts("S"); // S.鍏ュ簱棰勭害 + locMast.setModiUser(userId); + locMast.setModiTime(now); + if (!locMastService.updateById(locMast)) { + throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�"); + } + } else { + throw new CoolException(wmsWrk.getLocNo() + "鐩爣搴撲綅宸茶鍗犵敤"); + } + } + + @Override + public void stockOut(WmsWrk wmsWrk, Long userId) { + Date now = new Date(); + LocMast locMast = locMastService.selectByLocNo(wmsWrk.getSourceLocNo()); + if (locMast == null) { + throw new CoolException("搴撲綅涓嶅瓨鍦�"); + } + + // 鐢熸垚浠诲姟鍙� + int workNo = commonService.getWorkNo(2); + wmsWrk.setWrkNo(workNo); + this.baseMapper.updateById(wmsWrk); + + // 鑾峰彇璺緞 + StaDesc staDesc = staDescService.queryCrnStn(101, locMast.getCrnNo(), wmsWrk.getStaNo()); + // 鐢熸垚宸ヤ綔妗� + WrkMast wrkMast = new WrkMast(); + wrkMast.setWrkNo(workNo); + wrkMast.setIoTime(now); + wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID + wrkMast.setIoType(101); // 101.鍑哄簱 + wrkMast.setIoPri(13D); // 浼樺厛绾э細13 + wrkMast.setCrnNo(locMast.getCrnNo()); + wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯 + wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔� + wrkMast.setSourceLocNo(wmsWrk.getSourceLocNo()); // 婧愬簱浣� + wrkMast.setFullPlt("Y"); // 婊℃澘锛歒 + wrkMast.setPicking("N"); // 鎷f枡 + wrkMast.setExitMk("N"); // 閫�鍑� + wrkMast.setEmptyMk("N"); // 绌烘澘 + wrkMast.setLinkMis("N"); + wrkMast.setBarcode(locMast.getBarcode()); + wrkMast.setAppeUser(userId); // 鎿嶄綔浜哄憳鏁版嵁 + wrkMast.setAppeTime(now); + wrkMast.setModiUser(userId); + wrkMast.setModiTime(now); + if (!wrkMastService.insert(wrkMast)) { + throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細" + wmsWrk.getSourceLocNo()); + } + + // 淇敼搴撲綅鐘舵��: F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓� + locMast = locMastService.selectById(wmsWrk.getSourceLocNo()); + if (locMast.getLocSts().equals("F")) { + locMast.setLocSts("R"); + locMast.setModiUser(userId); + locMast.setModiTime(now); + if (!locMastService.updateById(locMast)) { + throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細" + wmsWrk.getSourceLocNo()); + } + } else { + throw new CoolException(wmsWrk.getSourceLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��"); + } + } +} diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java index f568cb7..5ce8a83 100644 --- a/src/main/java/com/zy/common/service/CommonService.java +++ b/src/main/java/com/zy/common/service/CommonService.java @@ -49,7 +49,7 @@ private LocDetlService locDetlService; /** - * 鐢熸垚宸ヤ綔鍙� + * 鐢熸垚宸ヤ綔鍙� wrkMk 0:鍏ュ簱 1 - 3000 ; 1:鎷f枡/骞舵澘/鐩樼偣 3001 - 6000 ; 2: 鍑哄簱 6001 -9000 ; 3:鍏朵粬 9001 -9999 * @return workNo(宸ヤ綔鍙�) */ public int getWorkNo(Integer wrkMk) { diff --git a/src/main/resources/mapper/LocMastMapper.xml b/src/main/resources/mapper/LocMastMapper.xml index 04b10a7..b92736d 100644 --- a/src/main/resources/mapper/LocMastMapper.xml +++ b/src/main/resources/mapper/LocMastMapper.xml @@ -60,4 +60,9 @@ ORDER BY NEWID() </select> + <select id="selectByLocNo" resultMap="BaseResultMap"> + select * from asr_loc_mast + where loc_no = #{locNo} + </select> + </mapper> diff --git a/src/main/resources/mapper/WmsWrkMapper.xml b/src/main/resources/mapper/WmsWrkMapper.xml new file mode 100644 index 0000000..a82602f --- /dev/null +++ b/src/main/resources/mapper/WmsWrkMapper.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.zy.asrs.mapper.WmsWrkMapper"> + + <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> + <resultMap id="BaseResultMap" type="com.zy.asrs.entity.WmsWrk"> + <result column="wms_wrk_no" property="wmsWrkNo" /> + <result column="wms_status" property="wmsStatus" /> + <result column="wrk_no" property="wrkNo" /> + <result column="create_time" property="createTime" /> + <result column="io_type" property="ioType" /> + <result column="io_pri" property="ioPri" /> + <result column="loc_no" property="locNo" /> + <result column="sta_no" property="staNo" /> + <result column="source_sta_no" property="sourceStaNo" /> + <result column="source_loc_no" property="sourceLocNo" /> + <result column="loc_sts" property="locSts" /> + <result column="picking" property="picking" /> + <result column="modi_user" property="modiUser" /> + <result column="modi_time" property="modiTime" /> + <result column="appe_user" property="appeUser" /> + <result column="appe_time" property="appeTime" /> + <result column="memo" property="memo" /> + <result column="barcode" property="barcode" /> + + </resultMap> + + <select id="selectByWmsWrkNo" resultMap="BaseResultMap"> + select * from wcs_wms_wrk + where wms_wrk_no = #{wmsWrkNo} + </select> + +</mapper> diff --git a/src/main/webapp/static/wms/js/wmsWrk/wmsWrk.js b/src/main/webapp/static/wms/js/wmsWrk/wmsWrk.js new file mode 100644 index 0000000..f6beca5 --- /dev/null +++ b/src/main/webapp/static/wms/js/wmsWrk/wmsWrk.js @@ -0,0 +1,405 @@ +var pageCurr; +layui.config({ + base: baseUrl + "/static/wms/layui/lay/modules/" +}).extend({ + dropdown: 'dropdown/dropdown', +}).use(['table','laydate', 'form', 'admin', 'dropdown'], function(){ + var table = layui.table; + var $ = layui.jquery; + var layer = layui.layer; + var layDate = layui.laydate; + var form = layui.form; + var admin = layui.admin; + + // 鏁版嵁娓叉煋 + tableIns = table.render({ + elem: '#wmsWrk', + headers: {token: localStorage.getItem('token')}, + url: baseUrl+'/wmsWrk/list/auth', + page: true, + limit: 15, + limits: [15, 30, 50, 100, 200, 500], + toolbar: '#toolbar', + cellMinWidth: 50, + height: 'full-120', + cols: [[ + {type: 'checkbox'} + ,{field: 'wmsWrkNo', align: 'center',title: 'WMS浠诲姟鍙�',width: 110} + ,{field: 'wmsStatus$', align: 'center',title: 'WMS浠诲姟鐘舵��',width: 130} + ,{field: 'wrkNo', align: 'center',title: '浠诲姟鍙�'} + ,{field: 'createTime$', align: 'center',title: '浠诲姟鏃堕棿',width: 170} + ,{field: 'durationTime', align: 'center',title: '鎸佺画鏃堕暱',width: 150} + ,{field: 'ioType$', align: 'center',title: '浠诲姟绫诲瀷'} + ,{field: 'ioPri', align: 'center',title: '浼樺厛绾�'} + ,{field: 'sourceStaNo$', align: 'center',title: '婧愮珯'} + ,{field: 'staNo$', align: 'center',title: '鐩爣绔�'} + ,{field: 'sourceLocNo', align: 'center',title: '婧愬簱浣�'} + ,{field: 'locNo', align: 'center',title: '鐩爣搴撲綅'} + ,{field: 'locSts', align: 'center',title: '搴撲綅鐘舵��'} + ,{field: 'barcode', align: 'center',title: '鏉$爜'} + // ,{field: 'picking', align: 'center',title: '鎷f枡'} + // ,{field: 'modiUser$', align: 'center',title: '淇敼浜哄憳'} + // ,{field: 'modiTime$', align: 'center',title: '淇敼鏃堕棿'} + // ,{field: 'appeUser$', align: 'center',title: '鍒涘缓鑰�'} + ,{field: 'appeTime$', align: 'center',title: '娣诲姞鏃堕棿'} + ,{field: 'memo', align: 'center',title: '澶囨敞'} + + ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width: 110} + ]], + request: { + pageName: 'curr', + pageSize: 'limit' + }, + parseData: function (res) { + return { + 'code': res.code, + 'msg': res.msg, + 'count': res.data.total, + 'data': res.data.records + } + }, + response: { + statusCode: 200 + }, + done: function(res, curr, count) { + if (res.code === 403) { + top.location.href = baseUrl+"/"; + } + $(".layui-table-body, .layui-table-box, .layui-table-cell").css('overflow','visible');//瑙e喅layui鏁版嵁琛ㄦ牸涓祵濂椾笅鎷夋鏄剧ず闂 + pageCurr=curr; + limit(); + } + }); + + // 鐩戝惉鎺掑簭浜嬩欢 + table.on('sort(wmsWrk)', function (obj) { + var searchData = {}; + $.each($('#search-box [name]').serializeArray(), function() { + searchData[this.name] = this.value; + }); + searchData['orderByField'] = obj.field; + searchData['orderByType'] = obj.type; + tableIns.reload({ + where: searchData, + page: {curr: 1} + }); + }); + + // 鐩戝惉澶村伐鍏锋爮浜嬩欢 + table.on('toolbar(wmsWrk)', function (obj) { + var checkStatus = table.checkStatus(obj.config.id).data; + switch(obj.event) { + case 'addData': + showEditModel(); + break; + case 'deleteData': + if (checkStatus.length === 0) { + layer.msg('璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁', {icon: 2}); + return; + } + del(checkStatus.map(function (d) { + return d.wmsWrkNo; + })); + break; + case 'exportData': + admin.confirm('纭畾瀵煎嚭Excel鍚�', {shadeClose: true}, function(){ + var titles=[]; + var fields=[]; + obj.config.cols[0].map(function (col) { + if (col.type === 'normal' && col.hide === false && col.toolbar == null) { + titles.push(col.title); + fields.push(col.field); + } + }); + var exportData = {}; + $.each($('#search-box [name]').serializeArray(), function() { + exportData[this.name] = this.value; + }); + var param = { + 'wmsWrk': exportData, + 'fields': fields + }; + $.ajax({ + url: baseUrl+"/wmsWrk/export/auth", + headers: {'token': localStorage.getItem('token')}, + data: JSON.stringify(param), + dataType:'json', + contentType:'application/json;charset=UTF-8', + method: 'POST', + success: function (res) { + layer.closeAll(); + if (res.code === 200) { + table.exportFile(titles,res.data,'xls'); + } else if (res.code === 403) { + top.location.href = baseUrl+"/"; + } else { + layer.msg(res.msg, {icon: 2}) + } + } + }); + }); + break; + // 澧炲姞浼樺厛绾� + case 'priAdd': + var list = []; + checkStatus.map(function (track) { + list.push({ + wmsWrkNo: track.wmsWrkNo, + ioPri: track.ioPri + }); + }); + $.ajax({ + url: baseUrl + "/wmsWrk/add/pri/auth", + headers: {'token': localStorage.getItem('token')}, + contentType: 'application/json;charset=UTF-8', + data: JSON.stringify(list), + method: 'POST', + traditional: true, + success: function (res) { + layer.closeAll(); + if (res.code === 200) { + $(".layui-laypage-btn")[0].click(); + layer.msg(res.msg); + } else if (res.code === 403) { + top.location.href = baseUrl + "/"; + } else { + layer.msg(res.msg) + } + } + }) + break; + // 闄嶄綆浼樺厛绾� + case 'priRed': + var list = []; + checkStatus.map(function (track) { + list.push({ + wmsWrkNo: track.wmsWrkNo, + ioPri: track.ioPri + }); + }); + $.ajax({ + url: baseUrl + "/wmsWrk/red/pri/auth", + headers: {'token': localStorage.getItem('token')}, + contentType: 'application/json;charset=UTF-8', + data: JSON.stringify(list), + method: 'POST', + traditional: true, + success: function (res) { + layer.closeAll(); + if (res.code === 200) { + $(".layui-laypage-btn")[0].click(); + layer.msg(res.msg); + } else if (res.code === 403) { + top.location.href = baseUrl + "/"; + } else { + layer.msg(res.msg) + } + } + }) + break; + } + }); + + // 鐩戝惉琛屽伐鍏蜂簨浠� + table.on('tool(wmsWrk)', function(obj){ + var data = obj.data; + switch (obj.event) { + case 'distribute'://娲惧彂 + layer.confirm('纭娲惧彂璇ョ瑪浠诲姟锛�', {title: 'WMS浠诲姟鍙凤細' + data.wmsWrkNo, shadeClose: true}, function () { + $.ajax({ + url: baseUrl + "/wmsWrk/distribute/auth", + headers: {'token': localStorage.getItem('token')}, + data: { + wmsWrkNo: data.wmsWrkNo + }, + method: 'POST', + success: function (res) { + if (res.code === 200) { + layer.msg(res.msg) + setTimeout(() => { + layer.closeAll(); + tableReload(); + }, 1000); + } else if (res.code === 403) { + top.location.href = baseUrl + "/"; + } else { + layer.msg(res.msg) + } + + } + }) + }); + break; + case "complete"://瀹岀粨 + layer.confirm('纭瀹屾垚璇ョ瑪浠诲姟锛�', {title: 'WMS浠诲姟鍙凤細' + data.wmsWrkNo, shadeClose: true}, function () { + $.ajax({ + url: baseUrl + "/wmsWrk/complete/auth", + headers: {'token': localStorage.getItem('token')}, + data: { + wmsWrkNo: data.wmsWrkNo + }, + method: 'POST', + success: function (res) { + if (res.code === 200) { + layer.msg(res.msg) + setTimeout(() => { + layer.closeAll(); + tableReload(); + }, 1000); + } else if (res.code === 403) { + top.location.href = baseUrl + "/"; + } else { + layer.msg(res.msg) + } + + } + }) + }); + break; + case "cancel"://鍙栨秷 + layer.confirm('纭鍙栨秷璇ョ瑪浠诲姟锛�', {title: 'WMS浠诲姟鍙凤細' + data.wmsWrkNo, shadeClose: true}, function () { + $.ajax({ + url: baseUrl + "/wmsWrk/cancel/auth", + headers: {'token': localStorage.getItem('token')}, + data: { + wmsWrkNo: data.wmsWrkNo + }, + method: 'POST', + success: function (res) { + if (res.code === 200) { + layer.msg(res.msg) + setTimeout(() => { + layer.closeAll(); + tableReload(); + }, 1000); + } else if (res.code === 403) { + top.location.href = baseUrl + "/"; + } else { + layer.msg(res.msg) + } + } + }) + }); + break; + } + }); + + /* 寮圭獥 - 鏂板銆佷慨鏀� */ + function showEditModel(mData) { + admin.open({ + type: 1, + area: '600px', + title: (mData ? '淇敼' : '娣诲姞') + '璁㈠崟鐘舵��', + content: $('#editDialog').html(), + success: function (layero, dIndex) { + layDateRender(mData); + form.val('detail', mData); + form.on('submit(editSubmit)', function (data) { + var loadIndex = layer.load(2); + $.ajax({ + url: baseUrl+"/wmsWrk/"+(mData?'update':'add')+"/auth", + headers: {'token': localStorage.getItem('token')}, + data: data.field, + method: 'POST', + success: function (res) { + layer.close(loadIndex); + if (res.code === 200){ + layer.close(dIndex); + layer.msg(res.msg, {icon: 1}); + tableReload(); + } else if (res.code === 403){ + top.location.href = baseUrl+"/"; + }else { + layer.msg(res.msg, {icon: 2}); + } + } + }) + return false; + }); + $(layero).children('.layui-layer-content').css('overflow', 'visible'); + layui.form.render('select'); + } + }); + } + + /* 鍒犻櫎 */ + function del(ids) { + layer.confirm('纭畾瑕佸垹闄ら�変腑鏁版嵁鍚楋紵', { + skin: 'layui-layer-admin', + shade: .1 + }, function (i) { + layer.close(i); + var loadIndex = layer.load(2); + $.ajax({ + url: baseUrl+"/wmsWrk/delete/auth", + headers: {'token': localStorage.getItem('token')}, + data: {ids: ids}, + method: 'POST', + success: function (res) { + layer.close(loadIndex); + if (res.code === 200){ + layer.msg(res.msg, {icon: 1}); + tableReload(); + } else if (res.code === 403){ + top.location.href = baseUrl+"/"; + } else { + layer.msg(res.msg, {icon: 2}); + } + } + }) + }); + } + + // 鎼滅储 + form.on('submit(search)', function (data) { + pageCurr = 1; + tableReload(false); + }); + + // 閲嶇疆 + form.on('submit(reset)', function (data) { + pageCurr = 1; + clearFormVal($('#search-box')); + tableReload(false); + }); + + // 鏃堕棿閫夋嫨鍣� + function layDateRender(data) { + setTimeout(function () { + layDate.render({ + elem: '#createTime\\$', + type: 'datetime', + value: data!==undefined?data['createTime\\$']:null + }); + layDate.render({ + elem: '#modiTime\\$', + type: 'datetime', + value: data!==undefined?data['modiTime\\$']:null + }); + layDate.render({ + elem: '#appeTime\\$', + type: 'datetime', + value: data!==undefined?data['appeTime\\$']:null + }); + + }, 300); + } + layDateRender(); + +}); + +// 鍏抽棴鍔ㄤ綔 +$(document).on('click','#data-detail-close', function () { + parent.layer.closeAll(); +}); + +function tableReload(child) { + var searchData = {}; + $.each($('#search-box [name]').serializeArray(), function() { + searchData[this.name] = this.value; + }); + tableIns.reload({ + where: searchData, + page: {curr: pageCurr} + }); +} diff --git a/src/main/webapp/static/wms/js/wrkMast/wrkMast.js b/src/main/webapp/static/wms/js/wrkMast/wrkMast.js index 13a9de9..e702b10 100644 --- a/src/main/webapp/static/wms/js/wrkMast/wrkMast.js +++ b/src/main/webapp/static/wms/js/wrkMast/wrkMast.js @@ -26,6 +26,7 @@ cellMinWidth: 50, cols: [[ {type: 'checkbox'} + , {field: 'wmsWrkNo', align: 'center', title: 'WMS浠诲姟鍙�', sort: true, width: 85} , {field: 'wrkNo', align: 'center', title: '浠诲姟鍙�', sort: true, width: 85} , {field: 'ioTime$', align: 'center', title: '浠诲姟鏃堕棿', sort: true, width: 160} , {field: 'durationTime', align: 'center', title: '鎸佺画鏃堕暱', width: 160} @@ -73,7 +74,7 @@ // return html; // }} - , {fixed: 'right', title: '鎿嶄綔', align: 'left', toolbar: '#operate', width: 120} + , {fixed: 'right', title: '鎿嶄綔', align: 'center', toolbar: '#operate', width: 110} ]], request: { pageName: 'curr', diff --git a/src/main/webapp/views/wmsWrk/wmsWrk.html b/src/main/webapp/views/wmsWrk/wmsWrk.html new file mode 100644 index 0000000..33528be --- /dev/null +++ b/src/main/webapp/views/wmsWrk/wmsWrk.html @@ -0,0 +1,254 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="utf-8"> + <title></title> + <meta name="renderer" content="webkit"> + <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> + <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> + <link rel="stylesheet" href="../../static/wms/layui/css/layui.css" media="all"> + <link rel="stylesheet" href="../../static/wms/css/admin.css?v=318" media="all"> + <link rel="stylesheet" href="../../static/wms/css/cool.css" media="all"> +</head> +<body> + +<div class="layui-fluid"> + <div class="layui-card"> + <div class="layui-card-body"> + <div class="layui-form toolbar" id="search-box"> + <div class="layui-form-item"> + <div class="layui-inline"> + <div class="layui-input-inline"> + <input class="layui-input" type="text" name="wms_wrk_no" placeholder="WMS浠诲姟鍙�" autocomplete="off"> + </div> + </div> + <div class="layui-inline"> + <div class="layui-input-inline"> + <input class="layui-input" type="text" name="wrk_no" placeholder="浠诲姟鍙�" autocomplete="off"> + </div> + </div> + <div class="layui-inline">  + <button class="layui-btn icon-btn" lay-filter="search" lay-submit> + <i class="layui-icon"></i>鎼滅储 + </button> + <button class="layui-btn icon-btn" lay-filter="reset" lay-submit> + <i class="layui-icon"></i>閲嶇疆 + </button> + </div> + </div> + </div> + <table class="layui-hide" id="wmsWrk" lay-filter="wmsWrk"></table> + </div> + </div> +</div> + +<script type="text/html" id="toolbar"> + <div class="layui-btn-container"> +<!-- <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">鏂板</button>--> +<!-- <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">鍒犻櫎</button>--> + <button class="layui-btn layui-btn-normal" id="btn-pri-add" lay-event="priAdd"><i class="layui-icon"></i>澧炲姞浼樺厛绾�</button> + <button class="layui-btn layui-btn-normal" id="btn-pri-red" lay-event="priRed"><i class="layui-icon"></i>闄嶄綆浼樺厛绾�</button> + <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right">瀵煎嚭</button> + </div> +</script> + +<script type="text/html" id="operate"> + <!-- 鍟嗗搧/鐗╂枡 鏁版嵁涓績 --> + <div class="dropdown-menu"> + <button class="layui-btn layui-btn-primary layui-border-black icon-btn layui-btn-sm"><i class="layui-icon layui-icon-drop"></i></button> + <ul class="dropdown-menu-nav" style="margin-left: -35px"> + {{#if (d.wmsStatus === 1 || d.wmsStatus === 0) { }} + <li><a lay-event="distribute">娲惧彂</a></li> + {{# } }} + <li><a lay-event="complete">瀹岀粨</a></li> + <li><a lay-event="cancel">鍙栨秷</a></li> + </ul> + </div> +</script> + +<script type="text/javascript" src="../../static/wms/js/jquery/jquery-3.3.1.min.js"></script> +<script type="text/javascript" src="../../static/wms/layui/layui.js" charset="utf-8"></script> +<script type="text/javascript" src="../../static/wms/js/common.js" charset="utf-8"></script> +<script type="text/javascript" src="../../static/wms/js/cool.js" charset="utf-8"></script> +<script type="text/javascript" src="../../static/wms/js/wmsWrk/wmsWrk.js" charset="utf-8"></script> +</body> +<!-- 琛ㄥ崟寮圭獥 --> +<script type="text/html" id="editDialog"> + <form id="detail" lay-filter="detail" class="layui-form admin-form model-form"> + <input name="id" type="hidden"> + <div class="layui-row"> + <div class="layui-col-md12"> + <div class="layui-form-item"> + <label class="layui-form-label layui-form-required">WMS浠诲姟鍙�: </label> + <div class="layui-input-block"> + <input class="layui-input" name="wmsWrkNo" placeholder="璇疯緭鍏MS浠诲姟鍙�" lay-vertype="tips" lay-verify="required"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">WMS浠诲姟鐘舵��: </label> + <div class="layui-input-block"> + <select name="wmsStatus"> + <option value="">璇烽�夋嫨WMS浠诲姟鐘舵��</option> + <option value="0">鍒涘缓</option> + <option value="1">鎺ユ敹</option> + <option value="2">娲惧彂</option> + <option value="3">瀹岀粨</option> + </select> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">浠诲姟鍙�: </label> + <div class="layui-input-block"> + <input class="layui-input" name="wrkNo" placeholder="璇疯緭鍏ヤ换鍔″彿"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">浠诲姟鏃堕棿: </label> + <div class="layui-input-block"> + <input class="layui-input" name="createTime" id="createTime$" placeholder="璇疯緭鍏ヤ换鍔℃椂闂�"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">鍏ュ嚭搴撶被鍨�: </label> + <div class="layui-input-block cool-auto-complete"> + <input class="layui-input" name="ioType" placeholder="璇疯緭鍏ュ叆鍑哄簱绫诲瀷" style="display: none"> + <input id="ioType$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ュ叆鍑哄簱绫诲瀷" onfocus=this.blur()> + <div class="cool-auto-complete-window"> + <input class="cool-auto-complete-window-input" data-key="basWrkIotypeQueryByioType" onkeyup="autoLoad(this.getAttribute('data-key'))"> + <select class="cool-auto-complete-window-select" data-key="basWrkIotypeQueryByioTypeSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple"> + </select> + </div> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">鍫嗗灈鏈�: </label> + <div class="layui-input-block cool-auto-complete"> + <input class="layui-input" name="crnNo" placeholder="璇疯緭鍏ュ爢鍨涙満" style="display: none"> + <input id="crnNo$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ュ爢鍨涙満" onfocus=this.blur()> + <div class="cool-auto-complete-window"> + <input class="cool-auto-complete-window-input" data-key="basCrnpQueryBycrnNo" onkeyup="autoLoad(this.getAttribute('data-key'))"> + <select class="cool-auto-complete-window-select" data-key="basCrnpQueryBycrnNoSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple"> + </select> + </div> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">浼樺厛绾�: </label> + <div class="layui-input-block"> + <input class="layui-input" name="ioPri" placeholder="璇疯緭鍏ヤ紭鍏堢骇"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">鐩爣搴撲綅: </label> + <div class="layui-input-block cool-auto-complete"> + <input class="layui-input" name="locNo" placeholder="璇疯緭鍏ョ洰鏍囧簱浣�" style="display: none"> + <input id="locNo$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ョ洰鏍囧簱浣�" onfocus=this.blur()> + <div class="cool-auto-complete-window"> + <input class="cool-auto-complete-window-input" data-key="locMastQueryBylocNo" onkeyup="autoLoad(this.getAttribute('data-key'))"> + <select class="cool-auto-complete-window-select" data-key="locMastQueryBylocNoSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple"> + </select> + </div> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">鐩爣绔�: </label> + <div class="layui-input-block cool-auto-complete"> + <input class="layui-input" name="staNo" placeholder="璇疯緭鍏ョ洰鏍囩珯" style="display: none"> + <input id="staNo$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ョ洰鏍囩珯" onfocus=this.blur()> + <div class="cool-auto-complete-window"> + <input class="cool-auto-complete-window-input" data-key="basDevpQueryBystaNo" onkeyup="autoLoad(this.getAttribute('data-key'))"> + <select class="cool-auto-complete-window-select" data-key="basDevpQueryBystaNoSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple"> + </select> + </div> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">婧愮珯: </label> + <div class="layui-input-block cool-auto-complete"> + <input class="layui-input" name="sourceStaNo" placeholder="璇疯緭鍏ユ簮绔�" style="display: none"> + <input id="sourceStaNo$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ユ簮绔�" onfocus=this.blur()> + <div class="cool-auto-complete-window"> + <input class="cool-auto-complete-window-input" data-key="basDevpQueryBysourceStaNo" onkeyup="autoLoad(this.getAttribute('data-key'))"> + <select class="cool-auto-complete-window-select" data-key="basDevpQueryBysourceStaNoSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple"> + </select> + </div> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">婧愬簱浣�: </label> + <div class="layui-input-block cool-auto-complete"> + <input class="layui-input" name="sourceLocNo" placeholder="璇疯緭鍏ユ簮搴撲綅" style="display: none"> + <input id="sourceLocNo$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ユ簮搴撲綅" onfocus=this.blur()> + <div class="cool-auto-complete-window"> + <input class="cool-auto-complete-window-input" data-key="locMastQueryBysourceLocNo" onkeyup="autoLoad(this.getAttribute('data-key'))"> + <select class="cool-auto-complete-window-select" data-key="locMastQueryBysourceLocNoSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple"> + </select> + </div> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">搴撲綅鐘舵��: </label> + <div class="layui-input-block"> + <input class="layui-input" name="locSts" placeholder="璇疯緭鍏ュ簱浣嶇姸鎬�"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">鎷f枡(checkBox): </label> + <div class="layui-input-block"> + <input class="layui-input" name="picking" placeholder="璇疯緭鍏ユ嫞鏂�(checkBox)"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">淇敼浜哄憳: </label> + <div class="layui-input-block cool-auto-complete"> + <input class="layui-input" name="modiUser" placeholder="璇疯緭鍏ヤ慨鏀逛汉鍛�" style="display: none"> + <input id="modiUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ヤ慨鏀逛汉鍛�" onfocus=this.blur()> + <div class="cool-auto-complete-window"> + <input class="cool-auto-complete-window-input" data-key="userQueryBymodiUser" onkeyup="autoLoad(this.getAttribute('data-key'))"> + <select class="cool-auto-complete-window-select" data-key="userQueryBymodiUserSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple"> + </select> + </div> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">淇敼鏃堕棿: </label> + <div class="layui-input-block"> + <input class="layui-input" name="modiTime" id="modiTime$" placeholder="璇疯緭鍏ヤ慨鏀规椂闂�"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">鍒涘缓鑰�: </label> + <div class="layui-input-block cool-auto-complete"> + <input class="layui-input" name="appeUser" placeholder="璇疯緭鍏ュ垱寤鸿��" style="display: none"> + <input id="appeUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ュ垱寤鸿��" onfocus=this.blur()> + <div class="cool-auto-complete-window"> + <input class="cool-auto-complete-window-input" data-key="userQueryByappeUser" onkeyup="autoLoad(this.getAttribute('data-key'))"> + <select class="cool-auto-complete-window-select" data-key="userQueryByappeUserSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple"> + </select> + </div> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">娣诲姞鏃堕棿: </label> + <div class="layui-input-block"> + <input class="layui-input" name="appeTime" id="appeTime$" placeholder="璇疯緭鍏ユ坊鍔犳椂闂�"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">澶囨敞: </label> + <div class="layui-input-block"> + <input class="layui-input" name="memo" placeholder="璇疯緭鍏ュ娉�"> + </div> + </div> + + </div> + </div> + <hr class="layui-bg-gray"> + <div class="layui-form-item text-right"> + <button class="layui-btn" lay-filter="editSubmit" lay-submit="">淇濆瓨</button> + <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">鍙栨秷</button> + </div> + </form> +</script> +</html> + diff --git a/src/main/webapp/views/wrkMast/wrkMast.html b/src/main/webapp/views/wrkMast/wrkMast.html index 6ee2ff6..2abbbaf 100644 --- a/src/main/webapp/views/wrkMast/wrkMast.html +++ b/src/main/webapp/views/wrkMast/wrkMast.html @@ -116,7 +116,7 @@ <!-- 鍟嗗搧/鐗╂枡 鏁版嵁涓績 --> <div class="dropdown-menu"> <button class="layui-btn layui-btn-primary layui-border-black icon-btn layui-btn-sm"><i class="layui-icon layui-icon-drop"></i></button> - <ul class="dropdown-menu-nav"> + <ul class="dropdown-menu-nav" style="margin-left: -35px"> {{#if (d.preHave === 'Y' && d.wrkSts === 3) { }} <li><a lay-event="preHave">鍏堝叆鍝�</a></li> {{# } }} -- Gitblit v1.9.1