diff --git a/ant-design-vue-jeecg/package-lock.json b/ant-design-vue-jeecg/package-lock.json index ca1b85f..14e31be 100644 --- a/ant-design-vue-jeecg/package-lock.json +++ b/ant-design-vue-jeecg/package-lock.json @@ -6072,9 +6072,9 @@ "integrity": "sha512-6zCYv0bxVP6ppQ/XpZsTQZNDC2zUutl8Yes2TDj7LyIDyBhq2N9JbQjcqQo6mAe8IVfszW5pmE0yHvAYD0zEmQ==" }, "node_modules/caniuse-lite": { - "version": "1.0.30001097", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001097.tgz", - "integrity": "sha512-TeuSleKt/vWXaPkLVFqGDnbweYfq4IaZ6rUugFf3rWY6dlII8StUZ8Ddin0PkADfgYZ4wRqCdO2ORl4Rn5eZIA==" + "version": "1.0.30001449", + "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001449.tgz", + "integrity": "sha512-CPB+UL9XMT/Av+pJxCKGhdx+yg1hzplvFJQlJ2n68PyQGMz9L/E2zCyLdOL8uasbouTUgnPl+y0tccI/se+BEw==" }, "node_modules/case-sensitive-paths-webpack-plugin": { "version": "2.3.0", @@ -27024,9 +27024,9 @@ "integrity": "sha512-6zCYv0bxVP6ppQ/XpZsTQZNDC2zUutl8Yes2TDj7LyIDyBhq2N9JbQjcqQo6mAe8IVfszW5pmE0yHvAYD0zEmQ==" }, "caniuse-lite": { - "version": "1.0.30001097", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001097.tgz", - "integrity": "sha512-TeuSleKt/vWXaPkLVFqGDnbweYfq4IaZ6rUugFf3rWY6dlII8StUZ8Ddin0PkADfgYZ4wRqCdO2ORl4Rn5eZIA==" + "version": "1.0.30001449", + "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001449.tgz", + "integrity": "sha512-CPB+UL9XMT/Av+pJxCKGhdx+yg1hzplvFJQlJ2n68PyQGMz9L/E2zCyLdOL8uasbouTUgnPl+y0tccI/se+BEw==" }, "case-sensitive-paths-webpack-plugin": { "version": "2.3.0", diff --git a/ant-design-vue-jeecg/package.json b/ant-design-vue-jeecg/package.json index a172be8..86053f5 100644 --- a/ant-design-vue-jeecg/package.json +++ b/ant-design-vue-jeecg/package.json @@ -58,13 +58,13 @@ "@vue/cli-service": "^3.3.0", "@vue/eslint-config-standard": "^4.0.0", "babel-eslint": "7.2.3", + "compression-webpack-plugin": "^3.1.0", "eslint": "^5.16.0", "eslint-plugin-vue": "^5.1.0", + "html-webpack-plugin": "^4.2.0", "less": "^3.9.0", "less-loader": "^4.1.0", "vue-template-compiler": "^2.6.10", - "html-webpack-plugin": "^4.2.0", - "compression-webpack-plugin": "^3.1.0", "webpack": "^4.23.0" }, "eslintConfig": { diff --git a/ant-design-vue-jeecg/src/views/user/LoginAccount.vue b/ant-design-vue-jeecg/src/views/user/LoginAccount.vue index f65073f..8b73ced 100644 --- a/ant-design-vue-jeecg/src/views/user/LoginAccount.vue +++ b/ant-design-vue-jeecg/src/views/user/LoginAccount.vue @@ -2,7 +2,7 @@ <div> <a-form-model ref="form" :model="model" :rules="validatorRules"> <a-form-model-item required prop="username"> - <a-input v-model="model.username" size="large" placeholder="请输入帐户名 / admin" @keyup="getWarehouse"> + <a-input v-model="model.username" size="large" placeholder="请输入帐户名 / admin" @blur="getWarehouse"> <a-icon slot="prefix" type="user" :style="{ color: 'rgba(0,0,0,.25)' }"/> </a-input> </a-form-model-item> @@ -16,8 +16,8 @@ <a-form-model-item prop="warehouseCode"> <a-select show-search - placeholder="请选择仓库" - option-filter-prop="children" + placeholder="请选择仓库!" + option-filter-prop="label" :filter-option="filterOption" v-model="model.warehouseCode"> <a-select-option v-for="item in warehouseList" :key="item.name" :value="item.code">{{ @@ -61,10 +61,10 @@ export default { password: [{ required: true, message: '请输入密码!', validator: 'click' }], - warehouseCode: [{required: true, message: '请选择仓库', validator: 'click'}], - + warehouseCode: [{ + required: true, message: '请选择仓库!', validator: 'click' + }], } - } }, created() { diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/system/controller/LoginController.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/system/controller/LoginController.java index 622a5df..5506683 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/system/controller/LoginController.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/system/controller/LoginController.java @@ -120,7 +120,7 @@ public class LoginController { // 用户登录信息 userInfo(sysUser, result, warehouseCode); // update-begin--Author:liusq Date:20210126 for:登录成功,删除redis中的验证码 -// redisUtil.del(realKey); + // redisUtil.del(realKey); // update-begin--Author:liusq Date:20210126 for:登录成功,删除redis中的验证码 LoginUser loginUser = new LoginUser(); BeanUtils.copyProperties(sysUser, loginUser); diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/system/controller/SysAnnouncementController.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/system/controller/SysAnnouncementController.java index 1cba1f0..b86ef27 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/system/controller/SysAnnouncementController.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/system/controller/SysAnnouncementController.java @@ -28,6 +28,7 @@ import org.jeecg.common.util.oConvertUtils; import org.jeecg.modules.message.websocket.WebSocket; import org.jeecg.modules.system.entity.SysAnnouncement; import org.jeecg.modules.system.entity.SysAnnouncementSend; +import org.jeecg.modules.system.entity.SysUser; import org.jeecg.modules.system.service.ISysAnnouncementSendService; import org.jeecg.modules.system.service.ISysAnnouncementService; import org.jeecg.modules.system.service.impl.ThirdAppDingtalkServiceImpl; @@ -334,16 +335,16 @@ public class SysAnnouncementController { @RequestMapping(value = "/listByUser", method = RequestMethod.GET) public Result<Map<String, Object>> listByUser(@RequestParam(required = false, defaultValue = "5") Integer pageSize) { Result<Map<String, Object>> result = new Result<Map<String, Object>>(); - LoginUser sysUser = (LoginUser)SecurityUtils.getSubject().getPrincipal(); - String userId = sysUser.getId().toString(); + LoginUser loginUser = (LoginUser)SecurityUtils.getSubject().getPrincipal(); + String userId = loginUser.getId().toString(); // 1.将系统消息补充到用户通告阅读标记表中 LambdaQueryWrapper<SysAnnouncement> querySaWrapper = new LambdaQueryWrapper<SysAnnouncement>(); querySaWrapper.eq(SysAnnouncement::getMsgType, CommonConstant.MSG_TYPE_ALL); // 全部人员 querySaWrapper.eq(SysAnnouncement::getDelFlag, CommonConstant.DEL_FLAG_0.toString()); // 未删除 querySaWrapper.eq(SysAnnouncement::getSendStatus, CommonConstant.HAS_SEND); // 已发布 - querySaWrapper.ge(SysAnnouncement::getEndTime, sysUser.getCreateTime()); // 新注册用户不看结束通知 + querySaWrapper.ge(SysAnnouncement::getEndTime, loginUser.getCreateTime()); // 新注册用户不看结束通知 // update-begin--Author:liusq Date:20210108 for:[JT-424] 【开源issue】bug处理-------------------- - querySaWrapper.notInSql(SysAnnouncement::getId, "select annt_id from sys_announcement_send where user_id='" + userId + "'"); + querySaWrapper.notInSql(SysAnnouncement::getId, "select annt_id from sys_announcement_send where user_id ='" + userId + "'"); // update-begin--Author:liusq Date:20210108 for: [JT-424] 【开源issue】bug处理-------------------- List<SysAnnouncement> announcements = sysAnnouncementService.list(querySaWrapper); if (announcements.size() > 0) { diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/system/entity/SysUser.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/system/entity/SysUser.java index 02144fe..37566a1 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/system/entity/SysUser.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/system/entity/SysUser.java @@ -34,8 +34,8 @@ public class SysUser implements Serializable { /** * id */ - @TableId(type = IdType.AUTO) - private java.lang.Integer id; + @TableId + private String id; /** * 登录账号 */ diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java index 8793a24..393903f 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java @@ -39,6 +39,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import org.springframework.util.AntPathMatcher; +import org.springframework.util.CollectionUtils; import org.springframework.util.PathMatcher; import javax.annotation.Resource; @@ -379,7 +380,7 @@ public class SysBaseApiImpl implements ISysBaseAPI { } SysAnnouncementSend announcementSend = new SysAnnouncementSend(); announcementSend.setAnntId(anntId); - announcementSend.setUserId(sysUser.getId()); + announcementSend.setUserId(Integer.parseInt(sysUser.getId())); announcementSend.setReadFlag(CommonConstant.NO_READ_FLAG); sysAnnouncementSendMapper.insert(announcementSend); JSONObject obj = new JSONObject(); @@ -453,7 +454,7 @@ public class SysBaseApiImpl implements ISysBaseAPI { } SysAnnouncementSend announcementSend = new SysAnnouncementSend(); announcementSend.setAnntId(anntId); - announcementSend.setUserId(sysUser.getId()); + announcementSend.setUserId(Integer.parseInt(sysUser.getId())); announcementSend.setReadFlag(CommonConstant.NO_READ_FLAG); sysAnnouncementSendMapper.insert(announcementSend); JSONObject obj = new JSONObject(); @@ -717,7 +718,7 @@ public class SysBaseApiImpl implements ISysBaseAPI { @Override public List<LoginUser> queryAllUserByIds(String[] userIds) { QueryWrapper<SysUser> queryWrapper = new QueryWrapper<SysUser>().eq("status", 1).eq("del_flag", 0); - queryWrapper.in("id", userIds); + queryWrapper.in("id", CollectionUtils.arrayToList(userIds)); List<LoginUser> loginUsers = new ArrayList<>(); List<SysUser> sysUsers = userMapper.selectList(queryWrapper); for (SysUser user : sysUsers) { @@ -956,7 +957,7 @@ public class SysBaseApiImpl implements ISysBaseAPI { } SysAnnouncementSend announcementSend = new SysAnnouncementSend(); announcementSend.setAnntId(anntId); - announcementSend.setUserId(sysUser.getId()); + announcementSend.setUserId(Integer.parseInt(sysUser.getId())); announcementSend.setReadFlag(CommonConstant.NO_READ_FLAG); sysAnnouncementSendMapper.insert(announcementSend); JSONObject obj = new JSONObject(); @@ -1008,7 +1009,7 @@ public class SysBaseApiImpl implements ISysBaseAPI { } SysAnnouncementSend announcementSend = new SysAnnouncementSend(); announcementSend.setAnntId(anntId); - announcementSend.setUserId(sysUser.getId()); + announcementSend.setUserId(Integer.parseInt(sysUser.getId())); announcementSend.setReadFlag(CommonConstant.NO_READ_FLAG); sysAnnouncementSendMapper.insert(announcementSend); JSONObject obj = new JSONObject(); diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/system/service/impl/SysDictServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/system/service/impl/SysDictServiceImpl.java index 9a4b783..3a78921 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/system/service/impl/SysDictServiceImpl.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/system/service/impl/SysDictServiceImpl.java @@ -94,7 +94,7 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl }).collect(Collectors.toList()); res.put(d.getDictCode(), dictModelList); } - log.debug("-------登录加载系统字典-----" + res.toString()); + log.debug("\r\n-----登录加载系统字典-----\r\n" + res.toString()); return res; } @@ -104,7 +104,6 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl * @param key * @return */ - @Override @Cacheable(value = CacheConstant.SYS_DICT_CACHE, key = "#code+':'+#key", unless = "#result == null ") public String queryDictTextByKey(String code, String key) { diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/system/service/impl/SysThirdAccountServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/system/service/impl/SysThirdAccountServiceImpl.java index 975ff73..2d42e45 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/system/service/impl/SysThirdAccountServiceImpl.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/system/service/impl/SysThirdAccountServiceImpl.java @@ -109,7 +109,7 @@ public class SysThirdAccountServiceImpl extends ServiceImpl<SysThirdAccountMappe // 保存用户角色 SysUserRole userRole = new SysUserRole(); userRole.setRoleId(sysRole.getId()); - userRole.setUserId(sysUser.getId()); + userRole.setUserId(Integer.parseInt(sysUser.getId())); sysUserRoleMapper.insert(userRole); return sysUser.getId().toString(); } diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java index 44c4b77..c71c9ef 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java @@ -155,7 +155,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl if (oConvertUtils.isNotEmpty(roles)) { String[] arr = roles.split(","); for (String roleId : arr) { - SysUserRole userRole = new SysUserRole(user.getId(), Integer.valueOf(roleId)); + SysUserRole userRole = new SysUserRole(Integer.valueOf(user.getId()), Integer.valueOf(roleId)); sysUserRoleMapper.insert(userRole); } } @@ -171,7 +171,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl if (oConvertUtils.isNotEmpty(roles)) { String[] arr = roles.split(","); for (String roleId : arr) { - SysUserRole userRole = new SysUserRole(user.getId(), Integer.valueOf(roleId)); + SysUserRole userRole = new SysUserRole(Integer.valueOf(user.getId()), Integer.valueOf(roleId)); sysUserRoleMapper.insert(userRole); } } @@ -327,7 +327,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl if (oConvertUtils.isNotEmpty(selectedParts)) { String[] arr = selectedParts.split(","); for (String deaprtId : arr) { - SysUserDepart userDeaprt = new SysUserDepart(user.getId(), Integer.valueOf(deaprtId)); + SysUserDepart userDeaprt = new SysUserDepart(Integer.valueOf(user.getId()), Integer.valueOf(deaprtId)); sysUserDepartMapper.insert(userDeaprt); } } @@ -347,7 +347,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl if (userDepartList != null && userDepartList.size() > 0) { for (SysUserDepart depart : userDepartList) { // 修改已关联部门删除部门用户角色关系 - if (!Arrays.asList(arr).contains(depart.getDepId())) { + if (!Arrays.asList(arr).contains(depart.getDepId() + "")) { List<SysDepartRole> sysDepartRoleList = sysDepartRoleMapper.selectList(new QueryWrapper<SysDepartRole>().lambda().eq(SysDepartRole::getDepartId, depart.getDepId())); @@ -368,7 +368,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl sysUserDepartMapper.delete(new QueryWrapper<SysUserDepart>().lambda().eq(SysUserDepart::getUserId, user.getId())); if (oConvertUtils.isNotEmpty(departs)) { for (String departId : arr) { - SysUserDepart userDepart = new SysUserDepart(user.getId(), Integer.valueOf(departId)); + SysUserDepart userDepart = new SysUserDepart(Integer.valueOf(user.getId()), Integer.valueOf(departId)); sysUserDepartMapper.insert(userDepart); } } @@ -468,7 +468,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl // 保存用户角色 SysUserRole userRole = new SysUserRole(); userRole.setRoleId(sysRole.getId()); - userRole.setUserId(sysUser.getId()); + userRole.setUserId(Integer.valueOf(sysUser.getId())); sysUserRoleMapper.insert(userRole); } @@ -486,7 +486,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl if (oConvertUtils.isNotEmpty(selectedRoles)) { String[] arr = selectedRoles.split(","); for (String roleId : arr) { - SysUserRole userRole = new SysUserRole(user.getId(), Integer.valueOf(roleId)); + SysUserRole userRole = new SysUserRole(Integer.valueOf(user.getId()), Integer.valueOf(roleId)); sysUserRoleMapper.insert(userRole); } } @@ -494,7 +494,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl if (oConvertUtils.isNotEmpty(selectedDeparts)) { String[] arr = selectedDeparts.split(","); for (String deaprtId : arr) { - SysUserDepart userDeaprt = new SysUserDepart(user.getId(), Integer.valueOf(deaprtId)); + SysUserDepart userDeaprt = new SysUserDepart(Integer.valueOf(user.getId()), Integer.valueOf(deaprtId)); sysUserDepartMapper.insert(userDeaprt); } } @@ -512,7 +512,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl if (oConvertUtils.isNotEmpty(roles)) { String[] arr = roles.split(","); for (String roleId : arr) { - SysUserRole userRole = new SysUserRole(user.getId(), Integer.valueOf(roleId)); + SysUserRole userRole = new SysUserRole(Integer.valueOf(user.getId()), Integer.valueOf(roleId)); sysUserRoleMapper.insert(userRole); } } @@ -527,7 +527,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl if (userDepartList != null && userDepartList.size() > 0) { for (SysUserDepart depart : userDepartList) { // 修改已关联部门删除部门用户角色关系 - if (!Arrays.asList(arr).contains(depart.getDepId())) { + if (!Arrays.asList(arr).contains(depart.getDepId() + "")) { List<SysDepartRole> sysDepartRoleList = sysDepartRoleMapper.selectList(new QueryWrapper<SysDepartRole>().lambda().eq(SysDepartRole::getDepartId, depart.getDepId())); List<String> roleIds = new ArrayList<>(); @@ -547,7 +547,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl sysUserDepartMapper.delete(new QueryWrapper<SysUserDepart>().lambda().eq(SysUserDepart::getUserId, user.getId())); if (oConvertUtils.isNotEmpty(departs)) { for (String departId : arr) { - SysUserDepart userDepart = new SysUserDepart(user.getId(), Integer.valueOf(departId)); + SysUserDepart userDepart = new SysUserDepart(Integer.valueOf(user.getId()), Integer.valueOf(departId)); sysUserDepartMapper.insert(userDepart); } } diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/mobile/controller/ReceiptController.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/mobile/controller/ReceiptController.java index d3a3973..918276a 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/mobile/controller/ReceiptController.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/mobile/controller/ReceiptController.java @@ -6,6 +6,7 @@ import javax.servlet.http.HttpServletRequest; import org.jeecg.common.api.vo.Result; import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.modules.wms.api.mobile.entity.CallBoxBean; +import org.jeecg.modules.wms.api.mobile.entity.QuickReceiptBean; import org.jeecg.modules.wms.api.mobile.service.IMobileService; import org.jeecg.modules.wms.framework.aspectj.lang.annotation.ApiLogger; import org.jeecg.modules.wms.framework.controller.HuahengBaseController; @@ -50,4 +51,22 @@ public class ReceiptController extends HuahengBaseController { }); return result; } + + @AutoLog(value = "PDA入库-快速入库") + @ApiOperation(value = "PDA入库-快速入库", notes = "快速入库") + @PostMapping("/quickReceipt") + @ResponseBody + @ApiLogger(apiName = "PDA入库-快速入库", from = "PDA") + public Result<?> quickReceipt(@RequestBody QuickReceiptBean bean, HttpServletRequest req) { + String warehouseCode = HuahengJwtUtil.getWarehouseCodeByToken(req); + bean.setWarehouseCode(warehouseCode); + + Result<?> result = handleMultiProcess("quickReceipt", new MultiProcessListener() { + @Override + public Result<?> doProcess() { + return mobileService.quickReceipt(bean, warehouseCode); + } + }); + return result; + } } diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/mobile/entity/QuickReceiptBean.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/mobile/entity/QuickReceiptBean.java new file mode 100644 index 0000000..2e571c6 --- /dev/null +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/mobile/entity/QuickReceiptBean.java @@ -0,0 +1,23 @@ +package org.jeecg.modules.wms.api.mobile.entity; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.jeecg.modules.wms.receipt.receiptHeader.entity.ReceiptDetail; + +import java.util.List; + +@Data +public class QuickReceiptBean { + @ApiModelProperty(value = "托盘号", required = true) + private String containerCode; + @ApiModelProperty(value = "库位号", required = false) + private String locationCode; + @ApiModelProperty(value = "单据类型", required = true) + private String receiptType; + @ApiModelProperty(value = "货主编码", required = true) + private String companyCode; + @ApiModelProperty(value = "仓库编码", required = false) + private String warehouseCode; + @ApiModelProperty(value = "收货明细", required = true) + private List<ReceiptDetail> receiptDetails; +} diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/mobile/service/IMobileService.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/mobile/service/IMobileService.java index 04aa932..15cb482 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/mobile/service/IMobileService.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/mobile/service/IMobileService.java @@ -2,9 +2,11 @@ package org.jeecg.modules.wms.api.mobile.service; import org.jeecg.common.api.vo.Result; import org.jeecg.modules.wms.api.mobile.entity.CallBoxBean; +import org.jeecg.modules.wms.api.mobile.entity.QuickReceiptBean; import org.jeecg.modules.wms.task.taskHeader.entity.TaskHeader; public interface IMobileService { Result<TaskHeader> callBox(CallBoxBean bean, String warehouseCode); + Result<TaskHeader> quickReceipt(QuickReceiptBean bean, String warehouseCode); } diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/mobile/service/impl/MobileService.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/mobile/service/impl/MobileService.java index 0cc32bd..405ddc3 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/mobile/service/impl/MobileService.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/mobile/service/impl/MobileService.java @@ -5,19 +5,30 @@ import javax.annotation.Resource; import org.apache.commons.lang3.StringUtils; import org.jeecg.common.api.vo.Result; import org.jeecg.modules.wms.api.mobile.entity.CallBoxBean; +import org.jeecg.modules.wms.api.mobile.entity.QuickReceiptBean; import org.jeecg.modules.wms.api.mobile.service.IMobileService; import org.jeecg.modules.wms.config.container.entity.Container; import org.jeecg.modules.wms.config.container.service.IContainerService; import org.jeecg.modules.wms.config.location.entity.Location; import org.jeecg.modules.wms.config.location.service.ILocationService; +import org.jeecg.modules.wms.receipt.receiptHeader.entity.ReceiptDetail; +import org.jeecg.modules.wms.receipt.receiptHeader.entity.ReceiptHeader; +import org.jeecg.modules.wms.receipt.receiptHeader.service.IReceiptDetailService; +import org.jeecg.modules.wms.receipt.receiptHeader.service.IReceiptHeaderService; +import org.jeecg.modules.wms.receipt.receiving.domain.Receive; +import org.jeecg.modules.wms.receipt.receiving.service.IReceiveService; import org.jeecg.modules.wms.task.taskHeader.entity.TaskHeader; import org.jeecg.modules.wms.task.taskHeader.service.ITaskHeaderService; import org.jeecg.utils.constant.QuantityConstant; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.aliyun.oss.ServiceException; +import java.util.ArrayList; +import java.util.List; + /** */ @Service @@ -32,6 +43,15 @@ public class MobileService implements IMobileService { @Resource private ITaskHeaderService taskHeaderService; + @Autowired + private IReceiptHeaderService receiptHeaderService; + + @Autowired + private IReceiptDetailService receiptDetailService; + + @Resource + private IReceiveService receiveService; + @Override @Transactional(rollbackFor = Exception.class) public Result<TaskHeader> callBox(CallBoxBean bean, String warehouseCode) { @@ -99,4 +119,62 @@ public class MobileService implements IMobileService { return Result.OK("呼叫料盒成功", taskHeader); } + + @Override + @Transactional(rollbackFor = Exception.class) + public Result<TaskHeader> quickReceipt(QuickReceiptBean bean, String warehouseCode) { + if (StringUtils.isEmpty(bean.getContainerCode())) { + return Result.error("托盘号containerCode不能为空"); + } + if (StringUtils.isEmpty(bean.getReceiptType())) { + return Result.error("单据类型不能为空"); + } + if (StringUtils.isEmpty(bean.getCompanyCode())) { + return Result.error("货主companyCode不能为空"); + } + if (bean.getReceiptDetails() == null || bean.getReceiptDetails().size() == 0) { + return Result.error("收货明细不能为空"); + } + + //创建入库单 + ReceiptHeader receiptHeader = new ReceiptHeader(); + receiptHeader.setType(bean.getReceiptType()); + receiptHeader.setCompanyCode(bean.getCompanyCode()); + receiptHeader.setWarehouseCode(bean.getWarehouseCode()); + Result<ReceiptHeader> rs1 = receiptHeaderService.saveReceiptHeader(receiptHeader); + + if (rs1.isSuccess()) { + receiptHeader = rs1.getResult(); + } else { + throw new ServiceException(rs1.getMessage()); + } + + List<Receive> receiveList = new ArrayList<>(); + for (ReceiptDetail d : bean.getReceiptDetails()) { + d.setReceiptId(receiptHeader.getId()); + Result rs2 = receiptDetailService.saveReceiptDetail(d); + if(!rs2.isSuccess()) { + throw new ServiceException(rs2.getMessage()); + } + Receive v = new Receive(); + v.setId(d.getId()); + v.setQty(d.getQty()); + v.setTaskQty(d.getQty()); + v.setInventoryStatus(d.getInventoryStatus()); + v.setMaterialCode(d.getMaterialCode()); + v.setMaterialName(d.getMaterialName()); + v.setBatch(d.getBatch()); + v.setMateiralSpec(d.getMaterialSpec()); + v.setMaterialUnit(d.getMaterialUnit()); + v.setContainerCode(bean.getContainerCode()); + receiveList.add(v); + } + + Result<TaskHeader> rs3 = receiveService.receivingAndCreateTask(receiveList, warehouseCode); + if(rs3.isSuccess()) { + return rs3; + }else{ + throw new ServiceException(rs3.getMessage()); + } + } } diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/controller/WcsController.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/controller/WcsController.java index 0972a5a..6089140 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/controller/WcsController.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/controller/WcsController.java @@ -19,6 +19,8 @@ import org.springframework.web.bind.annotation.*; import io.swagger.annotations.ApiOperation; +import java.util.Map; + @RestController @RequestMapping("/API/WMS/v2") public class WcsController extends HuahengBaseController { @@ -130,8 +132,7 @@ public class WcsController extends HuahengBaseController { }); return result; } - - /** + /** * 设置物料信息 * @return */ @@ -143,5 +144,4 @@ public class WcsController extends HuahengBaseController { public Result setMaterialInfo(@RequestBody MaterialInfoEntity materialInfoEntity) { Result result = wcsService.setMaterialInfo(materialInfoEntity); return result; - } -} + }} diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/WcsService.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/WcsService.java index c42c355..43dfe8c 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/WcsService.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/WcsService.java @@ -17,10 +17,7 @@ public interface WcsService { Result wcsTaskAssign(TaskHeader taskHeader); WcsTask switchTaskTypeToWcs(WcsTask wcsTask); - - /** + /** * 设置物料信息,包括长、宽、高、重量 */ - Result setMaterialInfo(MaterialInfoEntity materialInfoEntity); - -} + Result setMaterialInfo(MaterialInfoEntity materialInfoEntity);} diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/WcsServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/WcsServiceImpl.java index 22e4954..3ceffa6 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/WcsServiceImpl.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/WcsServiceImpl.java @@ -1,6 +1,8 @@ package org.jeecg.modules.wms.api.wcs.service; +import java.math.BigDecimal; import java.util.ArrayList; +import java.util.Date; import java.util.List; import java.util.stream.Collectors; @@ -13,6 +15,8 @@ import org.jeecg.modules.wms.api.wcs.entity.WcsTask; import org.jeecg.modules.wms.config.address.service.IAddressService; import org.jeecg.modules.wms.config.container.entity.Container; import org.jeecg.modules.wms.config.container.service.IContainerService; +import org.jeecg.modules.wms.config.containerType.entity.ContainerType; +import org.jeecg.modules.wms.config.containerType.service.impl.ContainerTypeServiceImpl; import org.jeecg.modules.wms.config.location.entity.Location; import org.jeecg.modules.wms.config.location.service.ILocationService; import org.jeecg.modules.wms.config.locationHigh.entity.LocationHigh; @@ -22,6 +26,7 @@ import org.jeecg.modules.wms.config.locationType.service.ILocationTypeService; import org.jeecg.modules.wms.config.material.entity.Material; import org.jeecg.modules.wms.config.material.service.IMaterialService; import org.jeecg.modules.wms.config.parameterConfiguration.service.IParameterConfigurationService; +import org.jeecg.modules.wms.config.receiptType.entity.ReceiptType; import org.jeecg.modules.wms.config.zone.entity.Zone; import org.jeecg.modules.wms.config.zone.service.IZoneService; import org.jeecg.modules.wms.framework.aspectj.lang.annotation.ApiLogger; @@ -76,6 +81,8 @@ public class WcsServiceImpl implements WcsService { private ILocationService locationService; @Resource private IAddressService addressService; + @Resource + private ContainerTypeServiceImpl containerTypeServiceImpl; @Override @Transactional(rollbackFor = Exception.class) @@ -415,8 +422,7 @@ public class WcsServiceImpl implements WcsService { } return wcsTask; } - - @Override + @Override public Result setMaterialInfo(MaterialInfoEntity materialInfoEntity) { int taskNo = materialInfoEntity.getTaskNo(); TaskHeader taskHeader = taskHeaderService.getById(taskNo); @@ -432,5 +438,4 @@ public class WcsServiceImpl implements WcsService { return Result.error("设置物料信息失败,更新任务信息失败"); } return Result.ok("设置物料信息成功"); - } -} + }} diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/location/entity/Location.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/location/entity/Location.java index da5561a..e55d612 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/location/entity/Location.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/location/entity/Location.java @@ -4,7 +4,10 @@ import java.io.Serializable; import java.io.UnsupportedEncodingException; import java.util.Date; import java.math.BigDecimal; +import java.util.List; + import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -123,4 +126,19 @@ public class Location implements Serializable { /** 更新日期 */ @ApiModelProperty(value = "更新日期") private Date updateTime; + /** 物料编码 */ + @TableField(exist = false) + private List<String> materialCode; + /** 物料名称 */ + @TableField(exist = false) + private List<String> materialName; + /** 批次 */ + @TableField(exist = false) + private List<String> batch; + /** 数量 */ + @TableField(exist = false) + private List<BigDecimal> qty; + /** 库存所在库位状态 */ + @TableField(exist = false) + private String locationAttribute; } diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/locationMonitor/controller/LocationMonitorController.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/locationMonitor/controller/LocationMonitorController.java new file mode 100644 index 0000000..0962ed2 --- /dev/null +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/locationMonitor/controller/LocationMonitorController.java @@ -0,0 +1,194 @@ +package org.jeecg.modules.wms.config.locationMonitor.controller; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.stream.Collectors; +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import org.jeecg.common.api.vo.Result; +import org.jeecg.modules.wms.config.container.entity.Container; +import org.jeecg.modules.wms.config.container.service.IContainerService; +import org.jeecg.modules.wms.config.location.entity.Location; +import org.jeecg.modules.wms.config.location.service.ILocationService; +import lombok.extern.slf4j.Slf4j; + +import org.jeecg.modules.wms.inventory.inventoryHeader.entity.InventoryDetail; +import org.jeecg.modules.wms.inventory.inventoryHeader.service.IInventoryDetailService; +import org.jeecg.modules.wms.config.locationMonitor.entity.LocationStatus; +import org.jeecg.utils.HuahengJwtUtil; +import org.jeecg.utils.StringUtils; +import org.jeecg.utils.constant.QuantityConstant; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import io.swagger.annotations.Api; + + /** + * @Description: 库存监控 + * @Author: lty + * @Date: 2023/1/29 + */ +@Api(tags="库存监控") +@RestController +@RequestMapping("/location/locationMonitor") +@Slf4j +public class LocationMonitorController{ + @Autowired + private IContainerService containerService; + @Resource + private ILocationService locationService; + @Resource + private IInventoryDetailService inventoryDetailService; + + + /** + * 库存概括 + */ + @GetMapping("/getStatus") + @ResponseBody + public Result getStatus(String zoneCode) { + HashMap<String, Integer> map = new HashMap<>(); + LambdaQueryWrapper<Location> queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.eq(Location::getZoneCode,zoneCode); + List<Location> locationList = locationService.list(queryWrapper); + map.put("location", locationList.size()); + queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.and(wrapper->wrapper.isNull(Location::getContainerCode).or().eq(Location::getContainerCode,"")) + .eq(Location::getZoneCode,zoneCode); + List<Location> emptyLocationList = locationService.list(queryWrapper); + map.put("emptyLocation", emptyLocationList.size()); + LambdaQueryWrapper<Container> containerLambdaQueryWrapper2 = Wrappers.lambdaQuery(); + containerLambdaQueryWrapper2.eq(Container::getStatus, QuantityConstant.STATUS_CONTAINER_EMPTY); + List<Container> containerList2 = containerService.list(containerLambdaQueryWrapper2); + List<String> containerCodeList2 = containerList2.stream().map(Container::getCode).collect(Collectors.toList()); + LambdaQueryWrapper<Location> locationLambdaQueryWrapper2 = Wrappers.lambdaQuery(); + locationLambdaQueryWrapper2.in(Location::getContainerCode, containerCodeList2); + locationLambdaQueryWrapper2.eq(Location::getZoneCode, zoneCode); + List<Location> haveEmptyContainLocation = locationService.list(locationLambdaQueryWrapper2); + map.put("haveContainLocation", haveEmptyContainLocation.size()); + LambdaQueryWrapper<Container> containerLambdaQueryWrapper = Wrappers.lambdaQuery(); + containerLambdaQueryWrapper.eq(Container::getStatus, QuantityConstant.STATUS_CONTAINER_SOME); + List<Container> containerList = containerService.list(containerLambdaQueryWrapper); + int containerListSize = containerList.size(); + List<String> containerCodeList = containerList.stream().map(Container::getCode).collect(Collectors.toList()); + LambdaQueryWrapper<Location> locationLambdaQueryWrapper = Wrappers.lambdaQuery(); + locationLambdaQueryWrapper.in(containerListSize !=0, Location::getContainerCode, containerCodeList); + locationLambdaQueryWrapper.eq(Location::getZoneCode, zoneCode); + List<Location> haveInventoryLocation = locationService.list(locationLambdaQueryWrapper); + map.put("haveInventoryLocation", haveInventoryLocation.size()); + return Result.ok(map); + } + + /** + * 查询库位列表 + */ + @PostMapping("/getLocationInfo") + @ResponseBody + public Result getLocationInfo (String type, String row, String line, String layer, String grid, HttpServletRequest req) { + if(StringUtils.isEmpty(type)) { + return Result.error("type不能为空"); + } + String warehouseCode = HuahengJwtUtil.getWarehouseCodeByToken(req); + /* 查询库位信息*/ + LambdaQueryWrapper<Location> locationLambdaQueryWrapper = Wrappers.lambdaQuery(); + locationLambdaQueryWrapper.eq(StringUtils.isNotEmpty(row), Location::getRow, row) + .eq(StringUtils.isNotEmpty(line), Location::getIcolumn, line) + .eq(StringUtils.isNotEmpty(layer), Location::getLayer, layer) + .eq(StringUtils.isNotEmpty(grid),Location::getGrid, grid) + .eq(Location::getWarehouseCode, warehouseCode) + .eq(StringUtils.isNotEmpty(type), Location::getZoneCode, type); + List<Location> locations = locationService.list(locationLambdaQueryWrapper); + List<Location> locationList = new ArrayList<>(); + + /* 查询库存明细*/ + LambdaQueryWrapper<InventoryDetail> inventoryDetailLambda = Wrappers.lambdaQuery(); + inventoryDetailLambda.eq(InventoryDetail::getWarehouseCode, warehouseCode); + List<InventoryDetail> inventoryDetailList = inventoryDetailService.list(inventoryDetailLambda); + + for (Location location1 : locations) { + InventoryDetail inventoryDetail = null; + String materialName = null; + for (InventoryDetail inventoryDetail2 : inventoryDetailList) { + if(location1.getCode().equals(inventoryDetail2.getLocationCode())) { + inventoryDetail = inventoryDetail2; + } + } + List<InventoryDetail> inventoryDetails = inventoryDetailList.stream().filter(inventoryDetail1 -> + inventoryDetail1.getLocationCode().equals(location1.getCode())).collect(Collectors.toList()); + + int locationAttribute = 0; + String status = location1.getStatus(); + String containerCode = location1.getContainerCode(); + List<String> materialNameList = inventoryDetails.stream().map(InventoryDetail::getMaterialName).collect(Collectors.toList()); + List<String> batchList = inventoryDetails.stream().map(InventoryDetail::getBatch).collect(Collectors.toList()); + List<String> materialCodeList = inventoryDetails.stream().map(InventoryDetail::getMaterialCode).collect(Collectors.toList()); + List<BigDecimal> qtyList = inventoryDetails.stream().map(InventoryDetail::getQty).collect(Collectors.toList()); + if(QuantityConstant.STATUS_LOCATION_EMPTY.equals(status)) { + if(StringUtils.isEmpty(containerCode)) { + locationAttribute = LocationStatus.IDLE_EMPTY_LOCATION; + } else { + if(inventoryDetail == null) { + locationAttribute = LocationStatus.IDLE_EMPTY_CONTAINER; + } else { + location1.setMaterialName(materialNameList); + location1.setMaterialCode(materialCodeList); + location1.setBatch(batchList); + location1.setQty(qtyList); + locationAttribute = LocationStatus.IDLE_FULL_CONTAINER; + } + } + } else if(QuantityConstant.STATUS_LOCATION_LOCK.equals(status)) { + if(StringUtils.isEmpty(containerCode)) { + locationAttribute = LocationStatus.LOCK_EMPTY_LOCATION; + } else { + if(inventoryDetail == null) { + locationAttribute = LocationStatus.LOCK_EMPTY_CONTAINER; + } else { + location1.setMaterialName(materialNameList); + location1.setMaterialCode(materialCodeList); + location1.setBatch(batchList); + location1.setQty(qtyList); + locationAttribute = LocationStatus.LOCK_FULL_CONTAINER; + } + } + } + +// if(location1.getDeleted()) { +// if(StringUtils.isEmpty(containerCode)) { +// locationAttribute = LocationStatus.DISABLE_EMPTY_LOCATION; +// } else { +// if(inventoryDetail == null) { +// locationAttribute = LocationStatus.DISABLE_EMPTY_CONTAINER; +// } else { +// location1.setMaterialName(materialNameList); +// location1.setMaterialCode(materialCodeList); +// location1.setBatch(batchList); +// location1.setQty(qtyList); +// locationAttribute = LocationStatus.DISABLE_FULL_CONTAINER; +// } +// } +// } + + location1.setLocationAttribute(String.valueOf(locationAttribute)); + locationList.add(location1); + } + return Result.ok(locations); + } + + + /** + * 查询库位列表 + */ + @PostMapping("/getAllLocation") + @ResponseBody + public Result getAllLocation (String type) { + if(StringUtils.isEmpty(type)) { + return Result.error("type不能为空"); + } + return Result.ok(locationService.getAllLocation(type)); + } + + } diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/locationMonitor/entity/LocationStatus.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/locationMonitor/entity/LocationStatus.java new file mode 100644 index 0000000..4ecbd58 --- /dev/null +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/locationMonitor/entity/LocationStatus.java @@ -0,0 +1,36 @@ +package org.jeecg.modules.wms.config.locationMonitor.entity; + +/** + * + * @author lty + * @date 2023/1/29 + */ +public class LocationStatus { + + /** 空柜丢失 */ + public static final int IDLE_EMPTY_LOST = 0; + /** 空柜空闲 */ + public static final int IDLE_EMPTY_LOCATION = 1; + /** 空盘空闲 */ + public static final int IDLE_EMPTY_CONTAINER = 2; + /** 半盘空闲 */ + public static final int IDLE_HALF_CONTAINER = 3; + /** 满盘空闲 */ + public static final int IDLE_FULL_CONTAINER = 4; + /** 空柜锁定 */ + public static final int LOCK_EMPTY_LOCATION = 5; + /** 空盘锁定 */ + public static final int LOCK_EMPTY_CONTAINER = 6; + /** 半盘锁定 */ + public static final int LOCK_HALF_CONTAINER = 7; + /** 满盘锁定 */ + public static final int LOCK_FULL_CONTAINER = 8; + /** 空柜禁用 */ + public static final int DISABLE_EMPTY_LOCATION = 9; + /** 空盘禁用 */ + public static final int DISABLE_EMPTY_CONTAINER = 10; + /** 半盘禁用 */ + public static final int DISABLE_HALF_CONTAINER = 11; + /** 满盘禁用 */ + public static final int DISABLE_FULL_CONTAINER = 12; +} diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/locationMonitor/service/LocationMonitorService.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/locationMonitor/service/LocationMonitorService.java new file mode 100644 index 0000000..aa08e79 --- /dev/null +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/locationMonitor/service/LocationMonitorService.java @@ -0,0 +1,12 @@ +package org.jeecg.modules.wms.config.locationMonitor.service; + + +/** + * @Description: 库存交易记录 + * @Author: jeecg-boot + * @Date: 2022-11-17 + * @Version: V1.0 + */ +public interface LocationMonitorService { + +} diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/locationMonitor/service/impl/LocationMonitorServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/locationMonitor/service/impl/LocationMonitorServiceImpl.java new file mode 100644 index 0000000..8041236 --- /dev/null +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/locationMonitor/service/impl/LocationMonitorServiceImpl.java @@ -0,0 +1,16 @@ +package org.jeecg.modules.wms.config.locationMonitor.service.impl; + + +import org.jeecg.modules.wms.config.locationMonitor.service.LocationMonitorService; +import org.springframework.stereotype.Service; + +/** + * @Description: 库存交易记录 + * @Author: jeecg-boot + * @Date: 2022-11-17 + * @Version: V1.0 + */ +@Service +public class LocationMonitorServiceImpl implements LocationMonitorService { + +} diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/aspectj/ApiLogAspect.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/aspectj/ApiLogAspect.java index 8a80c4d..144ed23 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/aspectj/ApiLogAspect.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/aspectj/ApiLogAspect.java @@ -66,9 +66,8 @@ public class ApiLogAspect { @Around("logPointCut() && @annotation(apiLogger)") public Object around(ProceedingJoinPoint point, ApiLogger apiLogger) throws Throwable { - if ("WMS".equalsIgnoreCase(apiLogger.from())) // 实际上静态方法上的Aop注解无法拦截到 - { + if ("WMS".equalsIgnoreCase(apiLogger.from())) { return aroundWms2XXX(point, apiLogger); } else { return aroundXXX2Wms(point, apiLogger); @@ -81,13 +80,16 @@ public class ApiLogAspect { ApiLog log = initApiLog(apiLogger, point); try { ret = point.proceed(); - } catch (Exception e) { - setApiLogException(log, e); + } catch (Throwable e) { + setApiLogThrowable(log, e); ret = Result.error(e.getMessage()); - } finally { - finishApiLog(log, ret); return ret; + } finally { + if (ret != null) { + finishApiLog(log, ret); + } } + return ret; } /** 处理WMS调用xxx接口的日志 **/ @@ -103,21 +105,16 @@ public class ApiLogAspect { connection = (HttpURLConnection)point.getArgs()[0]; body = (String)point.getArgs()[1]; initApiLog(connection, body); - } catch (Exception e) { - - } - - try { ret = point.proceed(); - } catch (Exception e) { - setApiLogException(log, e); - throw e; + } catch (Throwable e) { + setApiLogThrowable(log, e); + ret = Result.error(e.getMessage()); } finally { if (ret != null) { finishApiLog(log, connection, ret.toString()); } - return ret; } + return ret; } /** @@ -410,6 +407,16 @@ public class ApiLogAspect { ex.printStackTrace(); } } + + public static void setApiLogThrowable(ApiLog log, Throwable e) { + try { + String exception = ExceptionUtils.getFullStackTrace(e); + String shortExpInfo = e.getMessage() + "\n" + org.apache.commons.lang3.StringUtils.left(exception, 1000); + log.setException(shortExpInfo); + } catch (Exception ex) { + ex.printStackTrace(); + } + } private void rebuildRequestHeader(ApiLog log) { try { diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/service/IReceiptHeaderService.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/service/IReceiptHeaderService.java index 53c8964..887da8a 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/service/IReceiptHeaderService.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/service/IReceiptHeaderService.java @@ -29,7 +29,7 @@ public interface IReceiptHeaderService extends IService<ReceiptHeader> { /** * */ - public Result saveReceiptHeader(ReceiptHeader receiptHeader); + public Result<ReceiptHeader> saveReceiptHeader(ReceiptHeader receiptHeader); public String createCode(String receiptType); diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/service/impl/ReceiptHeaderServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/service/impl/ReceiptHeaderServiceImpl.java index e9527e9..2426bb3 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/service/impl/ReceiptHeaderServiceImpl.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/service/impl/ReceiptHeaderServiceImpl.java @@ -83,7 +83,7 @@ public class ReceiptHeaderServiceImpl extends ServiceImpl<ReceiptHeaderMapper, R @Override @Transactional - public Result saveReceiptHeader(ReceiptHeader receiptHeader) { + public Result<ReceiptHeader> saveReceiptHeader(ReceiptHeader receiptHeader) { LambdaQueryWrapper<ReceiptType> lambdaQueryWrapper = Wrappers.lambdaQuery(); lambdaQueryWrapper.eq(ReceiptType::getCode, receiptHeader.getType()).eq(ReceiptType::getWarehouseCode, receiptHeader.getWarehouseCode()); ReceiptType receiptType = receiptTypeService.getOne(lambdaQueryWrapper); @@ -101,7 +101,7 @@ public class ReceiptHeaderServiceImpl extends ServiceImpl<ReceiptHeaderMapper, R if (!success) { return Result.OK("添加失败!"); } - return Result.OK("添加成功!"); + return Result.OK("添加成功!", receiptHeader); } @Override diff --git a/huaheng-wms-core/src/main/java/org/jeecg/utils/constant/QuantityConstant.java b/huaheng-wms-core/src/main/java/org/jeecg/utils/constant/QuantityConstant.java index 6237a7a..446a582 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/utils/constant/QuantityConstant.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/utils/constant/QuantityConstant.java @@ -447,7 +447,6 @@ public class QuantityConstant { public static final String RULE_ALLOCATION = "allocationRule"; public static final String DOUBLE_FORK_RESERVE_LOCATION = "doubleForkReserveLocation"; public static final String DOUBLE_FORK_SEARCH_LOCATION = "doubleForkSearchLocation"; - public static final String EMPTY_CONTAINER_WEIGHT = "emptyWeight"; public static final String WAREHOUSING_WEIGHING = "warehousingWeighing"; public static final String EXCEPTION_TO_CACHE = "exceptionToCache"; public static final String CONTAINER_SPEC = "containerSpec";