diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml deleted file mode 100644 index fbcab775..00000000 --- a/.github/FUNDING.yml +++ /dev/null @@ -1 +0,0 @@ -custom: http://doc.ruoyi.vip/ruoyi-vue/other/donate.html diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/app/AppGoodsController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/app/AppGoodsController.java index 89ed0677..2e545529 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/app/AppGoodsController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/app/AppGoodsController.java @@ -50,6 +50,7 @@ public class AppGoodsController extends BaseController { return getDataTable(list); } + /** * 导出【请填写功能名称】列表 */ diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/app/AppGoodsTypeController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/app/AppGoodsTypeController.java index 0e509595..9027782e 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/app/AppGoodsTypeController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/app/AppGoodsTypeController.java @@ -7,7 +7,6 @@ import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.poi.ExcelUtil; -import org.apache.commons.lang3.ObjectUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; @@ -94,4 +93,14 @@ public class AppGoodsTypeController extends BaseController { return toAjax(appGoodsTypeService.deleteAppGoodsTypeByTypeIds(typeIds)); } + + + /** + * 获取部门树列表 + */ + @PreAuthorize("@ss.hasPermi('system:user:list')") + @GetMapping("/goodsTypeTree") + public AjaxResult goodsTypeTree(AppGoodsType appGoodsType) { + return success(appGoodsTypeService.selectGoodsTypeTreeList(appGoodsType)); + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/app/AppPmsController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/app/AppPmsController.java index d181c759..9a27c444 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/app/AppPmsController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/app/AppPmsController.java @@ -111,8 +111,13 @@ public class AppPmsController extends BaseController { //生成wms统一订单号 String orderId= OrderCodeFactory.getOrderCode("WMS", ""); for(PmsOrderOutRequest orderOutRequest : orderOutRequests) { - if (StringUtils.isEmpty(orderOutRequest.getListId()) - || orderOutRequest.getOrderType() == null + //如果是内部inner=true,不需要判断listId + if(!orderOutRequest.isInner()){ + if(StringUtils.isEmpty(orderOutRequest.getListId())){ + return error("请求数据不完整。"); + } + } + if (orderOutRequest.getOrderType() == null || StringUtils.isEmpty(orderOutRequest.getGoodsId()) || orderOutRequest.getGoodsNum() == null || StringUtils.isEmpty(orderOutRequest.getGoodsDesc())) { @@ -143,7 +148,11 @@ public class AppPmsController extends BaseController { AppPmsOrderOut appPmsOrderOut = new AppPmsOrderOut(); appPmsOrderOut.setRecordId(UUID.randomUUID().toString()); appPmsOrderOut.setOrderId(orderId); - appPmsOrderOut.setListId(orderOutRequest.getListId()); + if(orderOutRequest.isInner()){ + appPmsOrderOut.setListId(orderId); + }else { + appPmsOrderOut.setListId(orderOutRequest.getListId()); + } appPmsOrderOut.setOrderType(Long.valueOf(orderOutRequest.getOrderType())); appPmsOrderOut.setCustomerId(orderOutRequest.getCustomerId()); appPmsOrderOut.setGoodsId(orderOutRequest.getGoodsId()); @@ -152,10 +161,15 @@ public class AppPmsController extends BaseController { appPmsOrderOut.setOrderStatus(0); appPmsOrderOut.setCreateTime(new Date()); appPmsOrderOut.setUpdateTime(new Date()); - appPmsOrderOut.setShelvesNum(BigDecimal.valueOf(orderOutRequest.getGoodsNum())); appPmsOrderOut.setPickNum(BigDecimal.ZERO); appPmsOrderOut.setTrNum(BigDecimal.ZERO); - appPmsOrderOut.setCreateBy("PMS出库接口"); + appPmsOrderOut.setCreateTime(new Date()); + appPmsOrderOut.setUpdateTime(new Date()); + if(orderOutRequest.isInner()){ + appPmsOrderOut.setCreateBy(getUsername()); + }else{ + appPmsOrderOut.setCreateBy("PMS出库接口"); + } try { appPmsOrderOutService.insertAppPmsOrderOut(appPmsOrderOut); }catch (Exception e){ diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/app/AppStockController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/app/AppStockController.java index cf7bd1e3..ddaa7eb9 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/app/AppStockController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/app/AppStockController.java @@ -6,6 +6,7 @@ import javax.servlet.http.HttpServletResponse; import com.ruoyi.app.domain.AppStock; import com.ruoyi.app.domain.AppTaskBak; import com.ruoyi.app.service.IAppStockService; +import com.ruoyi.common.utils.StringUtils; import com.ruoyi.web.controller.section.EnhanceDataList; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; @@ -73,6 +74,19 @@ public class AppStockController extends BaseController return success(appStockService.selectAppStockByStockId(stockId)); } + /** + * 获取【请填写功能名称】详细信息 + */ + @GetMapping(value = "/queryListByGoodsId") + public AjaxResult queryListByGoodsId(AppStock appStock) + { + if(StringUtils.isBlank(appStock.getGoodsId())){ + return error("查询物料编号不能为空"); + } + List appStocks = appStockService.queryListByGoodsId(appStock.getGoodsId()); + return success("查询成功",appStocks); + } + /** * 新增【请填写功能名称】 */ diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/app/AppTaskController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/app/AppTaskController.java index b13ee568..8355ede9 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/app/AppTaskController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/app/AppTaskController.java @@ -547,6 +547,20 @@ public class AppTaskController extends BaseController return success(); } + /** + * 出库单出库请求 + * appPmsOrderOutList 出库单列表 + * @return 结果 + */ + @ApiOperation("请求出库") + @PostMapping("/manualCk") + @Transactional(rollbackFor = Exception.class) + @Anonymous + public AjaxResult manualCk(@RequestBody List appStocks) + { + return success(); + } + /** * 出库单出库请求 * appPmsOrderOutList 出库单列表 @@ -1188,7 +1202,6 @@ public class AppTaskController extends BaseController return error("该任务状态不是待捡货,请检查!"); } } - logger.info("1111111111111111111111111"); for(PickCompleteReq request : requests) { // 更新捡货任务数量 //根据taskId,查询该条任务 @@ -1209,7 +1222,6 @@ public class AppTaskController extends BaseController if(CollectionUtils.isEmpty(appPmsOrderOuts)){ return error("数据服务异常,请重试"); } - logger.info("2222222222222222222222222222222222"); AppPmsOrderOut appPmsOrderOut1 = appPmsOrderOuts.get(0); if(appPmsOrderOut1.getTrNum() == null) appPmsOrderOut1.setTrNum(BigDecimal.ZERO); appPmsOrderOut1.setTrNum(appPmsOrderOut1.getTrNum().add(request.getPickNum())); @@ -1221,9 +1233,7 @@ public class AppTaskController extends BaseController } appPmsOrderOut1.setIsLock("0"); - logger.info("3333333333333333333"); appPmsOrderOutService.updateAppPmsOrderOut(appPmsOrderOut1); - logger.info("444444444444444444444444"); } logger.info("拣货成功===》》》》》》》》》》》》》》》》》》"); return success("捡货成功"); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/domain/PmsOrderOutRequest.java b/ruoyi-admin/src/main/java/com/ruoyi/web/domain/PmsOrderOutRequest.java index 91d8a9f4..b87c48aa 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/domain/PmsOrderOutRequest.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/domain/PmsOrderOutRequest.java @@ -36,6 +36,15 @@ public class PmsOrderOutRequest { * 备用2 */ private String spare2; + private boolean inner; + + public boolean isInner() { + return inner; + } + + public void setInner(boolean inner) { + this.inner = inner; + } public String getListId() { return listId; diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/TaskExecutor.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/TaskExecutor.java index 27d4edc6..9606b87f 100644 --- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/TaskExecutor.java +++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/TaskExecutor.java @@ -171,7 +171,7 @@ public class TaskExecutor { public void completeWmsTask() { //completeNormalTask(); completeNormalInTask(); // 通常入库任务 -// completeNormalOutTask(); // 通常出库任务 + completeNormalOutTask(); // 空托盘出库 completeNormalMoveTask(); // 通常移库任务 completePickOutTask();// 拣货任务 } @@ -337,71 +337,26 @@ public class TaskExecutor { if (appTasks == null || appTasks.isEmpty()) { return; } - PmsOutFeedBack pmsOutFeedBack = new PmsOutFeedBack(); - List recordList = new ArrayList<>(); - for (AppTask task : appTasks) { - - //调用接口,组装数据 - AppPmsOrderOut appPmsOrderOut = new AppPmsOrderOut(); - appPmsOrderOut.setOrderId(task.getOrderId()); - appPmsOrderOut.setGoodsId(task.getGoodsId()); - List appPmsOrderOuts = appPmsOrderOutMapper.selectAppPmsOrderOutList(appPmsOrderOut); - if (CollectionUtils.isEmpty(appPmsOrderOuts)) { - continue; - } - AppPmsOrderOut appPmsOrderOut1 = appPmsOrderOuts.get(0); - PmsOutFeedBackRecord recordListItem = new PmsOutFeedBackRecord(); - recordListItem.setAmount(task.getOpNum().intValue()); - recordListItem.setBusinessOrder(appPmsOrderOut1.getListId()); - recordListItem.setMaterialsNo(task.getGoodsId()); - recordList.add(recordListItem); - } - - pmsOutFeedBack.setRecordList(recordList); - String url = sysConfigService.selectConfigByKey("pms.outComplete"); - if (StringUtils.isEmpty(url)) { - throw new RuntimeException("pms.outComplete配置为空"); - } - PmsCommonRes pmsCommonRes = JSON.parseObject(HttpUtils.sendHttpPostWithoutToken(url, JSON.toJSONString(pmsOutFeedBack)), PmsCommonRes.class); - logger.info("pms出库反馈请求信息:{},结果:{}", JSON.toJSONString(pmsOutFeedBack), JSON.toJSONString(pmsCommonRes)); // 归档旧数据 for (AppTask task : appTasks) { - BigDecimal opNum = task.getOpNum(); - AppTaskBak appTaskBak = new AppTaskBak(); - BeanUtils.copyProperties(task, appTaskBak); - appTaskBakService.insertAppTaskBak(appTaskBak); // 将任务数据归档 - appTaskService.deleteAppTaskByTaskId(task.getTaskId()); // 删除旧数据 - - if (opNum.compareTo(task.getStockNum()) >= 0) { // 需求数量大于库存数量 - int deleteAppStockByStockId = appStockService.deleteAppStockByStockId(task.getStockId()); - logger.info("出库捡选删除库存:{},删除结果:{}", task.getStockId(), deleteAppStockByStockId); - - } else { - // 更新库存剩余数量 - AppStock update = new AppStock(); - update.setStockId(task.getStockId()); - update.setRemainNum(task.getStockNum().subtract(opNum)); - update.setPackingNum(BigDecimal.ZERO); - appStockService.updateAppStock(update); - logger.info("出库捡选更新库存剩余数量:{},更新结果:{}", JSON.toJSONString(update), appStockService.updateAppStock(update)); + if(task.getGoodsId().equals("0")) { + AppStock appStock = new AppStock(); + appStock.setVehicleId(task.getVehicleId()); + List appStocks = appStockService.selectAppStockList(appStock); + //如果数量为0,则删除 + for (AppStock appStock1 : appStocks) { + appStockService.deleteAppStockByStockId(appStock1.getStockId()); + updateLocation(appStock1.getLocationId(),0); + } + AppTaskBak appTaskBak = new AppTaskBak(); + BeanUtils.copyProperties(task, appTaskBak); + appTaskBakService.insertAppTaskBak(appTaskBak); // 将任务数据归档 + appTaskService.deleteAppTaskByTaskId(task.getTaskId()); // 删除旧数据 } + } - //java8 stream流过滤出appTasks数组中的stockId对应的vehicleId 去重 - List locations = appTasks.stream().map(AppTask::getLocationId).distinct().collect(Collectors.toList()); - List vehicles = appTasks.stream().map(AppTask::getVehicleId).distinct().collect(Collectors.toList()); - //更新库存中中这些vehicleId对应的stock_status为0,并且把locationId置空 - for (String vehicleId : vehicles) { - AppStock appStock = new AppStock(); - appStock.setVehicleId(vehicleId); - appStock.setStockStatus(0); - appStockService.updateSts(appStock); - } - for (String locationId : locations){ - appStockService.updateNewLocation(locationId,""); - //更新库位表状态 - updateLocation(locationId,0); - } + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/app/domain/AppGoodsType.java b/ruoyi-system/src/main/java/com/ruoyi/app/domain/AppGoodsType.java index a2d92a9d..34326654 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/app/domain/AppGoodsType.java +++ b/ruoyi-system/src/main/java/com/ruoyi/app/domain/AppGoodsType.java @@ -1,17 +1,22 @@ package com.ruoyi.app.domain; import com.ruoyi.common.annotation.Excel; +import com.ruoyi.common.core.domain.BaseEntity; import com.ruoyi.common.core.domain.TreeEntity; +import com.ruoyi.common.core.domain.entity.SysDept; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; +import java.util.ArrayList; +import java.util.List; + /** * 物料类别管理对象 app_goods_type * * @author ruoyi * @date 2025-03-04 */ -public class AppGoodsType extends TreeEntity +public class AppGoodsType extends BaseEntity { private static final long serialVersionUID = 1L; @@ -22,7 +27,22 @@ public class AppGoodsType extends TreeEntity @Excel(name = "物料类别名称") private String typeName; - public void setTypeId(Long typeId) + /** 父菜单名称 */ + private String parentName; + + /** 父菜单ID */ + private Long parentId; + + /** 显示顺序 */ + private Integer orderNum; + + /** 祖级列表 */ + private String ancestors; + + /** 子部门 */ + private List children = new ArrayList<>(); + + public void setTypeId(Long typeId) { this.typeId = typeId; } @@ -41,6 +61,46 @@ public class AppGoodsType extends TreeEntity return typeName; } + public String getParentName() { + return parentName; + } + + public void setParentName(String parentName) { + this.parentName = parentName; + } + + public Long getParentId() { + return parentId; + } + + public void setParentId(Long parentId) { + this.parentId = parentId; + } + + public Integer getOrderNum() { + return orderNum; + } + + public void setOrderNum(Integer orderNum) { + this.orderNum = orderNum; + } + + public String getAncestors() { + return ancestors; + } + + public void setAncestors(String ancestors) { + this.ancestors = ancestors; + } + + public List getChildren() { + return children; + } + + public void setChildren(List children) { + this.children = children; + } + @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) diff --git a/ruoyi-system/src/main/java/com/ruoyi/app/domain/AppStock.java b/ruoyi-system/src/main/java/com/ruoyi/app/domain/AppStock.java index 2d0cf90a..f37c7191 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/app/domain/AppStock.java +++ b/ruoyi-system/src/main/java/com/ruoyi/app/domain/AppStock.java @@ -60,7 +60,7 @@ public class AppStock extends BaseEntity private String providerName; /** 剩余数量 */ - @Excel(name = "剩余数量") + @Excel(name = "库存数量") private BigDecimal remainNum; /** 入库数量 */ @@ -121,7 +121,11 @@ public class AppStock extends BaseEntity private BigDecimal packingNum; @Excel(name = "生产日期") private String productionDate; - + /** + * 物料描述 + */ + @Excel(name = "物料描述") + private String goodsDesc; public String getWareDate() { return wareDate; } @@ -130,7 +134,13 @@ public class AppStock extends BaseEntity this.wareDate = wareDate; } + public String getGoodsDesc() { + return goodsDesc; + } + public void setGoodsDesc(String goodsDesc) { + this.goodsDesc = goodsDesc; + } public Integer getGoodsAge() { return goodsAge; diff --git a/ruoyi-system/src/main/java/com/ruoyi/app/domain/AppTreeSelect.java b/ruoyi-system/src/main/java/com/ruoyi/app/domain/AppTreeSelect.java new file mode 100644 index 00000000..aefe6805 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/app/domain/AppTreeSelect.java @@ -0,0 +1,82 @@ +package com.ruoyi.app.domain; + +import com.fasterxml.jackson.annotation.JsonInclude; + +import java.io.Serializable; +import java.util.List; +import java.util.stream.Collectors; + +/** + * Treeselect树结构实体类 + * + * @author ruoyi + */ +public class AppTreeSelect implements Serializable +{ + private static final long serialVersionUID = 1L; + + /** 节点ID */ + private Long id; + + /** 节点名称 */ + private String label; + + /** 节点禁用 */ + private boolean disabled = false; + + /** 子节点 */ + @JsonInclude(JsonInclude.Include.NON_EMPTY) + private List children; + + public AppTreeSelect() + { + + } + + public AppTreeSelect(AppGoodsType goodsType) + { + this.id = goodsType.getTypeId(); + this.label = goodsType.getTypeName(); + this.children = goodsType.getChildren().stream().map(AppTreeSelect::new).collect(Collectors.toList()); + } + + public Long getId() + { + return id; + } + + public void setId(Long id) + { + this.id = id; + } + + public String getLabel() + { + return label; + } + + public void setLabel(String label) + { + this.label = label; + } + + public boolean isDisabled() + { + return disabled; + } + + public void setDisabled(boolean disabled) + { + this.disabled = disabled; + } + + public List getChildren() + { + return children; + } + + public void setChildren(List children) + { + this.children = children; + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/app/mapper/AppStockMapper.java b/ruoyi-system/src/main/java/com/ruoyi/app/mapper/AppStockMapper.java index 6682f44d..5786bc5c 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/app/mapper/AppStockMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/app/mapper/AppStockMapper.java @@ -67,4 +67,6 @@ public interface AppStockMapper int updateSts(AppStock appStock); int updateLocationWithVehicleId(@Param("vehicleId") String vehicleId,@Param("location") String location); + + List queryListByGoodsId(String goodsId); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/app/service/IAppGoodsTypeService.java b/ruoyi-system/src/main/java/com/ruoyi/app/service/IAppGoodsTypeService.java index de1d7411..86b550f4 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/app/service/IAppGoodsTypeService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/app/service/IAppGoodsTypeService.java @@ -1,6 +1,9 @@ package com.ruoyi.app.service; import com.ruoyi.app.domain.AppGoodsType; +import com.ruoyi.app.domain.AppTreeSelect; +import com.ruoyi.common.core.domain.TreeSelect; +import com.ruoyi.common.core.domain.entity.SysDept; import java.util.List; @@ -59,4 +62,27 @@ public interface IAppGoodsTypeService * @return 结果 */ public int deleteAppGoodsTypeByTypeId(Long typeId); + + /** + * 获取物料类别下拉树 + * @param appGoodsType + * @return + */ + List selectGoodsTypeTreeList(AppGoodsType appGoodsType); + + /** + * 构建前端所需要树结构 + * + * @param goodsTypes 物料类别 + * @return 树结构列表 + */ + public List buildGoodsTypeTree(List goodsTypes); + + /** + * 构建前端所需要下拉树结构 + * + * @param goodsTypes 物料类别 + * @return 下拉树结构列表 + */ + public List buildGoodsTypeTreeSelect(List goodsTypes); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/app/service/IAppStockService.java b/ruoyi-system/src/main/java/com/ruoyi/app/service/IAppStockService.java index ed2d3ce3..8bbea607 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/app/service/IAppStockService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/app/service/IAppStockService.java @@ -68,4 +68,6 @@ public interface IAppStockService List selectStockByGoodsId(AppStock tMiStock); int updateSts(AppStock tMiStock3); + + List queryListByGoodsId(String goodsId); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/app/service/impl/AppGoodsTypeServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/app/service/impl/AppGoodsTypeServiceImpl.java index 93b286ed..21e9a2cb 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/app/service/impl/AppGoodsTypeServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/app/service/impl/AppGoodsTypeServiceImpl.java @@ -1,12 +1,21 @@ package com.ruoyi.app.service.impl; import com.ruoyi.app.domain.AppGoodsType; +import com.ruoyi.app.domain.AppTreeSelect; import com.ruoyi.app.mapper.AppGoodsTypeMapper; import com.ruoyi.app.service.IAppGoodsTypeService; +import com.ruoyi.common.core.domain.TreeSelect; +import com.ruoyi.common.core.domain.entity.SysDept; +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.common.utils.spring.SpringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; import java.util.List; +import java.util.stream.Collectors; /** * 物料类别管理Service业务层处理 @@ -84,4 +93,94 @@ public class AppGoodsTypeServiceImpl implements IAppGoodsTypeService { public int deleteAppGoodsTypeByTypeId(Long typeId) { return appGoodsTypeMapper.deleteAppGoodsTypeByTypeId(typeId); } + + @Override + public List selectGoodsTypeTreeList(AppGoodsType appGoodsType) { + List goodsTypes = appGoodsTypeMapper.selectAppGoodsTypeList(new AppGoodsType()); + return buildGoodsTypeTreeSelect(goodsTypes); + } + + /** + * 构建前端所需要下拉树结构 + * + * @param depts 部门列表 + * @return 下拉树结构列表 + */ + @Override + public List buildGoodsTypeTreeSelect(List depts) + { + List deptTrees = buildGoodsTypeTree(depts); + return deptTrees.stream().map(AppTreeSelect::new).collect(Collectors.toList()); + } + + /** + * 构建前端所需要树结构 + * + * @param depts 部门列表 + * @return 树结构列表 + */ + @Override + public List buildGoodsTypeTree(List depts) + { + List returnList = new ArrayList(); + List tempList = depts.stream().map(AppGoodsType::getTypeId).collect(Collectors.toList()); + for (AppGoodsType dept : depts) + { + // 如果是顶级节点, 遍历该父节点的所有子节点 + if (!tempList.contains(dept.getParentId())) + { + recursionFn(depts, dept); + returnList.add(dept); + } + } + if (returnList.isEmpty()) + { + returnList = depts; + } + return returnList; + } + + /** + * 递归列表 + */ + private void recursionFn(List list, AppGoodsType t) + { + // 得到子节点列表 + List childList = getChildList(list, t); + t.setChildren(childList); + for (AppGoodsType tChild : childList) + { + if (hasChild(list, tChild)) + { + recursionFn(list, tChild); + } + } + } + + /** + * 得到子节点列表 + */ + private List getChildList(List list, AppGoodsType t) + { + List tlist = new ArrayList(); + Iterator it = list.iterator(); + while (it.hasNext()) + { + AppGoodsType n = (AppGoodsType) it.next(); + if (StringUtils.isNotNull(n.getParentId()) && n.getParentId().longValue() == t.getTypeId().longValue()) + { + tlist.add(n); + } + } + return tlist; + } + + /** + * 判断是否有子节点 + */ + private boolean hasChild(List list, AppGoodsType t) + { + return getChildList(list, t).size() > 0; + } + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/app/service/impl/AppStockServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/app/service/impl/AppStockServiceImpl.java index 755204ad..5774d602 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/app/service/impl/AppStockServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/app/service/impl/AppStockServiceImpl.java @@ -1,5 +1,6 @@ package com.ruoyi.app.service.impl; +import java.util.Collections; import java.util.List; import com.ruoyi.app.domain.AppStock; @@ -113,4 +114,9 @@ public class AppStockServiceImpl implements IAppStockService public int updateSts(AppStock appStock) { return appStockMapper.updateSts(appStock); } + + @Override + public List queryListByGoodsId(String goodsId) { + return appStockMapper.queryListByGoodsId(goodsId); + } } diff --git a/ruoyi-system/src/main/resources/mapper/app/AppPmsOrderOutMapper.xml b/ruoyi-system/src/main/resources/mapper/app/AppPmsOrderOutMapper.xml index 3dd30738..5e0752af 100644 --- a/ruoyi-system/src/main/resources/mapper/app/AppPmsOrderOutMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/app/AppPmsOrderOutMapper.xml @@ -21,11 +21,14 @@ + + + - select record_id, list_id, order_type, customer_id, goods_id, goods_num, goods_desc, spare1, spare2,pick_num,tr_num,shelves_num,stock_num,order_status,is_lock,order_id from app_pms_order_out + select record_id, list_id, order_type, customer_id, goods_id, goods_num, goods_desc, spare1, spare2,pick_num,tr_num,shelves_num,stock_num,order_status,is_lock,order_id,create_time,create_by,update_time from app_pms_order_out @@ -54,6 +55,7 @@ and goods_status = #{goodsStatus} and stock_status = #{stockStatus} and storage_id = #{storageId} + and goods_desc = #{goodsDesc} + select goods_id as "goodsId" + ,goods_name as "goodsName" + ,goods_desc as "goodsDesc" + ,sum(remain_num) as "remainNum" + from app_stock + where + (goods_id like concat('%', #{goodsId}, '%') or goods_name like concat('%', #{goodsId}, '%') + or goods_desc like concat('%', #{goodsId}, '%')) + and stock_status = 0 and location_id is not null + GROUP BY goods_id,goods_name,goods_desc + order by goods_id +