From 399e7d565f19f59a8da82277da8f3eab527c2c56 Mon Sep 17 00:00:00 2001 From: zhangherong <571457620@qq.com> Date: 星期二, 09 九月 2025 19:40:20 +0800 Subject: [PATCH] art: 上料接口,上下料查询接口 --- db/双林新火炬MES数据库设计.pdma.json | 20 + src/main/java/org/jeecg/modules/mes/controller/MesMaterialLoadingController.java | 240 +++++++-------------- src/main/java/org/jeecg/modules/lsw/service/ILswMaterialInventoryService.java | 8 src/main/java/org/jeecg/modules/mes/entity/MesMaterialLoading.java | 62 +++-- src/main/java/org/jeecg/modules/lsw/mapper/xml/LswMaterialInventoryMapper.xml | 15 + src/main/java/org/jeecg/modules/lsw/vo/MaterialInventoryVO.java | 19 + src/main/java/org/jeecg/modules/lsw/controller/LswMaterialInventoryController.java | 12 src/main/java/org/jeecg/modules/lsw/service/impl/LswMaterialInventoryServiceImpl.java | 40 +++ src/main/java/org/jeecg/modules/mes/mapper/MesMaterialLoadingMapper.java | 11 src/main/java/org/jeecg/modules/mes/mapper/xml/MesMaterialLoadingMapper.xml | 50 +++- src/main/java/org/jeecg/modules/mes/service/impl/MesMaterialLoadingServiceImpl.java | 125 +++++++++-- src/main/java/org/jeecg/modules/mes/service/IMesMaterialLoadingService.java | 18 + src/main/java/org/jeecg/modules/lsw/mapper/LswMaterialInventoryMapper.java | 9 13 files changed, 394 insertions(+), 235 deletions(-) diff --git "a/db/\345\217\214\346\236\227\346\226\260\347\201\253\347\202\254MES\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.pdma.json" "b/db/\345\217\214\346\236\227\346\226\260\347\201\253\347\202\254MES\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.pdma.json" index 6eb28d0..23e4f7d 100644 --- "a/db/\345\217\214\346\236\227\346\226\260\347\201\253\347\202\254MES\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.pdma.json" +++ "b/db/\345\217\214\346\236\227\346\226\260\347\201\253\347\202\254MES\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.pdma.json" @@ -4,7 +4,7 @@ "avatar": "", "version": "4.9.2", "createdTime": "2025-3-10 16:38:19", - "updatedTime": "2025-9-8 15:48:21", + "updatedTime": "2025-9-9 17:51:22", "dbConns": [], "profile": { "default": { @@ -65634,6 +65634,24 @@ "extProps": {}, "domain": "FF4459C5-6B45-4DBF-8FC0-E06239BC05B4", "id": "8D7E6299-FC48-42A2-86FD-0AC3B881BB8B" + }, + { + "defKey": "unloading_flag", + "defName": "涓嬫枡鏍囪", + "comment": "", + "type": "", + "len": "", + "scale": "", + "primaryKey": false, + "notNull": false, + "autoIncrement": false, + "defaultValue": "", + "hideInGraph": false, + "refDict": "", + "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64", + "extProps": {}, + "domain": "6F7C1C5C-D159-41E6-BF9D-54DEEFA79AFF", + "id": "52642C9A-5EA8-4B30-91CB-5B154D75A139" } ], "correlations": [], diff --git a/src/main/java/org/jeecg/modules/lsw/controller/LswMaterialInventoryController.java b/src/main/java/org/jeecg/modules/lsw/controller/LswMaterialInventoryController.java index 289372e..9599a85 100644 --- a/src/main/java/org/jeecg/modules/lsw/controller/LswMaterialInventoryController.java +++ b/src/main/java/org/jeecg/modules/lsw/controller/LswMaterialInventoryController.java @@ -13,6 +13,7 @@ import org.jeecg.modules.lsw.enums.MaterialInventoryStatusEnum; import org.jeecg.modules.lsw.service.ILswMaterialInventoryService; import org.jeecg.modules.lsw.vo.MaterialInventoryStatisticsVO; +import org.jeecg.modules.lsw.vo.MaterialInventoryVO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -62,13 +63,20 @@ public Result<String> statisticsInventory(@RequestParam(name = "materialId") String materialId) { //搴撳瓨缁熻鏁伴噺 List<MaterialInventoryStatisticsVO> list = lswMaterialInventoryService.statisticsInventory(materialId); - if(CollectionUtil.isEmpty(list)){ + if (CollectionUtil.isEmpty(list)) { return Result.OK("0"); } StringBuilder sb = new StringBuilder(); - for(MaterialInventoryStatisticsVO vo : list){ + for (MaterialInventoryStatisticsVO vo : list) { sb.append(vo.getWarehouseName()).append(": ").append(vo.getMaterialQuantity().stripTrailingZeros().toPlainString()).append(" | "); } return Result.OK(sb.toString()); } + + @ApiOperation(value = "鐗╂枡搴撳瓨淇℃伅-鏍规嵁浜х嚎鏌ヨ搴撳瓨", notes = "鐗╂枡搴撳瓨淇℃伅-鏍规嵁浜х嚎鏌ヨ搴撳瓨") + @GetMapping(value = "/queryMaterialInventory") + public Result<List<MaterialInventoryVO>> queryMaterialInventory(@RequestParam(name = "factoryId") String factoryId) { + List<MaterialInventoryVO> list = lswMaterialInventoryService.queryMaterialInventory(factoryId); + return Result.OK(list); + } } diff --git a/src/main/java/org/jeecg/modules/lsw/mapper/LswMaterialInventoryMapper.java b/src/main/java/org/jeecg/modules/lsw/mapper/LswMaterialInventoryMapper.java index ff096c2..33b2e38 100644 --- a/src/main/java/org/jeecg/modules/lsw/mapper/LswMaterialInventoryMapper.java +++ b/src/main/java/org/jeecg/modules/lsw/mapper/LswMaterialInventoryMapper.java @@ -5,6 +5,7 @@ import org.jeecg.modules.lsw.entity.LswMaterialInventory; import org.jeecg.modules.lsw.vo.LswMaterialInventoryVo; import org.jeecg.modules.lsw.vo.MaterialInventoryStatisticsVO; +import org.jeecg.modules.lsw.vo.MaterialInventoryVO; import java.util.List; @@ -25,4 +26,12 @@ * @return */ List<MaterialInventoryStatisticsVO> statisticsInventory(@Param("materialId") String materialId); + + /** + * 鏌ヨ鐗╂枡搴撳瓨 + * @param warehouseId + * @param materialCategoryList + * @return + */ + List<MaterialInventoryVO> queryMaterialInventory(@Param("warehouseId") String warehouseId, @Param("materialCategoryList") List<String> materialCategoryList); } diff --git a/src/main/java/org/jeecg/modules/lsw/mapper/xml/LswMaterialInventoryMapper.xml b/src/main/java/org/jeecg/modules/lsw/mapper/xml/LswMaterialInventoryMapper.xml index e7ca719..e04fea9 100644 --- a/src/main/java/org/jeecg/modules/lsw/mapper/xml/LswMaterialInventoryMapper.xml +++ b/src/main/java/org/jeecg/modules/lsw/mapper/xml/LswMaterialInventoryMapper.xml @@ -29,4 +29,19 @@ left join base_line_side_warehouse m2 on m1.warehouse_id = m2.id </select> + <select id="queryMaterialInventory" resultType="org.jeecg.modules.lsw.vo.MaterialInventoryVO"> + select t2.material_number, + t2.material_name, + t2.material_category, + t1.batch_number, + t1.quantity + from lsw_material_inventory t1 + left join lsw_material t2 on t1.material_id = t2.id + where t1.inventory_status = 'NORMAL' + and t1.warehouse_id = #{warehouseId} + and t2.material_category in + <foreach collection="materialCategoryList" item="item" separator="," open="(" close=")"> + #{item} + </foreach> + </select> </mapper> diff --git a/src/main/java/org/jeecg/modules/lsw/service/ILswMaterialInventoryService.java b/src/main/java/org/jeecg/modules/lsw/service/ILswMaterialInventoryService.java index 26c436b..a4e9e61 100644 --- a/src/main/java/org/jeecg/modules/lsw/service/ILswMaterialInventoryService.java +++ b/src/main/java/org/jeecg/modules/lsw/service/ILswMaterialInventoryService.java @@ -4,6 +4,7 @@ import org.jeecg.modules.lsw.entity.LswMaterialInventory; import org.jeecg.modules.lsw.vo.LswMaterialInventoryVo; import org.jeecg.modules.lsw.vo.MaterialInventoryStatisticsVO; +import org.jeecg.modules.lsw.vo.MaterialInventoryVO; import java.util.List; @@ -32,4 +33,11 @@ * @return */ LswMaterialInventory queryByMaterialNumberAndBatchNumber(String materialNumber, String batchNumber, String warehouseId); + + /** + * 鏌ヨ鐗╂枡搴撳瓨 + * @param factoryId + * @return + */ + List<MaterialInventoryVO> queryMaterialInventory(String factoryId); } diff --git a/src/main/java/org/jeecg/modules/lsw/service/impl/LswMaterialInventoryServiceImpl.java b/src/main/java/org/jeecg/modules/lsw/service/impl/LswMaterialInventoryServiceImpl.java index 11de910..4517bf2 100644 --- a/src/main/java/org/jeecg/modules/lsw/service/impl/LswMaterialInventoryServiceImpl.java +++ b/src/main/java/org/jeecg/modules/lsw/service/impl/LswMaterialInventoryServiceImpl.java @@ -2,17 +2,26 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.jeecg.modules.base.entity.Factory; +import org.jeecg.modules.base.entity.LineSideWarehouse; +import org.jeecg.modules.base.enums.ProductionTypeEnum; +import org.jeecg.modules.base.service.IFactoryService; +import org.jeecg.modules.base.service.ILineSideWarehouseService; import org.jeecg.modules.lsw.entity.LswMaterial; import org.jeecg.modules.lsw.entity.LswMaterialInventory; +import org.jeecg.modules.lsw.enums.MaterialCategoryEnum; import org.jeecg.modules.lsw.enums.MaterialInventoryStatusEnum; import org.jeecg.modules.lsw.mapper.LswMaterialInventoryMapper; import org.jeecg.modules.lsw.service.ILswMaterialInventoryService; import org.jeecg.modules.lsw.service.ILswMaterialService; import org.jeecg.modules.lsw.vo.LswMaterialInventoryVo; import org.jeecg.modules.lsw.vo.MaterialInventoryStatisticsVO; +import org.jeecg.modules.lsw.vo.MaterialInventoryVO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.Collections; import java.util.List; /** @@ -28,6 +37,10 @@ private LswMaterialInventoryMapper lswMaterialInventoryMapper; @Autowired private ILswMaterialService materialService; + @Autowired + private ILineSideWarehouseService lineSideWarehouseService; + @Autowired + private IFactoryService factoryService; @Override public List<LswMaterialInventoryVo> selectLineSideMaterialInventoryByMaterialNumber(List<String> bomMaterialNumberList, String factoryId) { @@ -52,4 +65,31 @@ queryWrapper.eq(LswMaterialInventory::getInventoryStatus, MaterialInventoryStatusEnum.NORMAL.name()); return lswMaterialInventoryMapper.selectOne(queryWrapper); } + + @Override + public List<MaterialInventoryVO> queryMaterialInventory(String factoryId) { + Factory factory = factoryService.getById(factoryId); + if (factory == null) { + return Collections.emptyList(); + } + LineSideWarehouse warehouse = lineSideWarehouseService.queryByFactoryId(factoryId); + if (warehouse == null) { + return Collections.emptyList(); + } + List<String> materialCategory = new ArrayList<>(); + if (ProductionTypeEnum.ASSEMBLE.name().equals(factory.getProductionType())) { + materialCategory.add(MaterialCategoryEnum.OUTER_FLANGE.name()); + materialCategory.add(MaterialCategoryEnum.INNER_FLANGE.name()); + materialCategory.add(MaterialCategoryEnum.SMALL_INNER_RING.name()); + materialCategory.add(MaterialCategoryEnum.STEEL_BALL.name()); + materialCategory.add(MaterialCategoryEnum.COMPONENTS.name()); + } else if (ProductionTypeEnum.INNERFLANGE.name().equals(factory.getProductionType())) { + materialCategory.add(MaterialCategoryEnum.BLANK.name()); + } else if (ProductionTypeEnum.OUTERFLANGE.name().equals(factory.getProductionType())) { + materialCategory.add(MaterialCategoryEnum.BLANK.name()); + } else if (ProductionTypeEnum.HEATTREATMENT.name().equals(factory.getProductionType())) { + materialCategory.add(MaterialCategoryEnum.BLANK.name()); + } + return lswMaterialInventoryMapper.queryMaterialInventory(warehouse.getId(), materialCategory); + } } diff --git a/src/main/java/org/jeecg/modules/lsw/vo/MaterialInventoryVO.java b/src/main/java/org/jeecg/modules/lsw/vo/MaterialInventoryVO.java new file mode 100644 index 0000000..91ed45d --- /dev/null +++ b/src/main/java/org/jeecg/modules/lsw/vo/MaterialInventoryVO.java @@ -0,0 +1,19 @@ +package org.jeecg.modules.lsw.vo; + +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class MaterialInventoryVO { + //鐗╂枡缂栧彿 + private String materialNumber; + //鐗╂枡鍚嶇О + private String materialName; + //鐗╂枡绫诲瀷 + private String materialCategory; + //鎵规鍙� + private String batchNumber; + //搴撳瓨鏁伴噺 + private BigDecimal quantity; +} diff --git a/src/main/java/org/jeecg/modules/mes/controller/MesMaterialLoadingController.java b/src/main/java/org/jeecg/modules/mes/controller/MesMaterialLoadingController.java index 7740a65..277a813 100644 --- a/src/main/java/org/jeecg/modules/mes/controller/MesMaterialLoadingController.java +++ b/src/main/java/org/jeecg/modules/mes/controller/MesMaterialLoadingController.java @@ -1,6 +1,5 @@ package org.jeecg.modules.mes.controller; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.annotations.Api; @@ -9,175 +8,104 @@ import org.jeecg.common.api.vo.Result; import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.common.system.base.controller.JeecgController; -import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.modules.mes.entity.MesMaterialLoading; import org.jeecg.modules.mes.service.IMesMaterialLoadingService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import java.util.Arrays; -import java.util.Map; /** -* @Description: 涓婃枡 -* @Author: jeecg-boot -* @Date: 2025-07-07 -* @Version: V1.0 -*/ -@Api(tags="涓婃枡") + * @Description: 涓婃枡 + * @Author: jeecg-boot + * @Date: 2025-07-07 + * @Version: V1.0 + */ +@Api(tags = "涓婃枡") @RestController @RequestMapping("/mes/mesMaterialLoading") @Slf4j public class MesMaterialLoadingController extends JeecgController<MesMaterialLoading, IMesMaterialLoadingService> { - @Autowired - private IMesMaterialLoadingService mesMaterialLoadingService; + @Autowired + private IMesMaterialLoadingService mesMaterialLoadingService; - /** - * 鍒嗛〉鍒楄〃鏌ヨ - * - * @param mesMaterialLoading - * @param pageNo - * @param pageSize - * @param req - * @return - */ - //@AutoLog(value = "涓婃枡-鍒嗛〉鍒楄〃鏌ヨ") - @ApiOperation(value="涓婃枡-鍒嗛〉鍒楄〃鏌ヨ", notes="涓婃枡-鍒嗛〉鍒楄〃鏌ヨ") - @GetMapping(value = "/list") - public Result<IPage<MesMaterialLoading>> queryPageList(MesMaterialLoading mesMaterialLoading, - @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, - @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, - HttpServletRequest req) { - Map<String, String[]> parameterMap = req.getParameterMap(); - QueryWrapper<MesMaterialLoading> queryWrapper = QueryGenerator.initQueryWrapper(mesMaterialLoading, parameterMap); - Page<MesMaterialLoading> page = new Page<MesMaterialLoading>(pageNo, pageSize); - IPage<MesMaterialLoading> pageList = mesMaterialLoadingService.queryPageList(page, parameterMap); - return Result.OK(pageList); - } - - /** - * 娣诲姞 - * - * @param mesMaterialLoading - * @return - */ - @AutoLog(value = "涓婃枡-娣诲姞") - @ApiOperation(value="涓婃枡-娣诲姞", notes="涓婃枡-娣诲姞") - //@RequiresPermissions("org.jeecg.modules:mes_material_loading:add") - @PostMapping(value = "/add") - public Result<String> add(@RequestBody MesMaterialLoading mesMaterialLoading) { - mesMaterialLoadingService.save(mesMaterialLoading); - return Result.OK("娣诲姞鎴愬姛锛�"); - } - - /** - * 缂栬緫 - * - * @param mesMaterialLoading - * @return - */ - @AutoLog(value = "涓婃枡-缂栬緫") - @ApiOperation(value="涓婃枡-缂栬緫", notes="涓婃枡-缂栬緫") - //@RequiresPermissions("org.jeecg.modules:mes_material_loading:edit") - @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) - public Result<String> edit(@RequestBody MesMaterialLoading mesMaterialLoading) { - mesMaterialLoadingService.updateById(mesMaterialLoading); - return Result.OK("缂栬緫鎴愬姛!"); - } - - /** - * 閫氳繃id鍒犻櫎 - * - * @param id - * @return - */ - @AutoLog(value = "涓婃枡-閫氳繃id鍒犻櫎") - @ApiOperation(value="涓婃枡-閫氳繃id鍒犻櫎", notes="涓婃枡-閫氳繃id鍒犻櫎") - //@RequiresPermissions("org.jeecg.modules:mes_material_loading:delete") - @DeleteMapping(value = "/delete") - public Result<String> delete(@RequestParam(name="id",required=true) String id) { - mesMaterialLoadingService.removeById(id); - return Result.OK("鍒犻櫎鎴愬姛!"); - } - - /** - * 鎵归噺鍒犻櫎 - * - * @param ids - * @return - */ - @AutoLog(value = "涓婃枡-鎵归噺鍒犻櫎") - @ApiOperation(value="涓婃枡-鎵归噺鍒犻櫎", notes="涓婃枡-鎵归噺鍒犻櫎") - //@RequiresPermissions("org.jeecg.modules:mes_material_loading:deleteBatch") - @DeleteMapping(value = "/deleteBatch") - public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) { - this.mesMaterialLoadingService.removeByIds(Arrays.asList(ids.split(","))); - return Result.OK("鎵归噺鍒犻櫎鎴愬姛!"); - } - - /** - * 閫氳繃id鏌ヨ - * - * @param id - * @return - */ - //@AutoLog(value = "涓婃枡-閫氳繃id鏌ヨ") - @ApiOperation(value="涓婃枡-閫氳繃id鏌ヨ", notes="涓婃枡-閫氳繃id鏌ヨ") - @GetMapping(value = "/queryById") - public Result<MesMaterialLoading> queryById(@RequestParam(name="id",required=true) String id) { - MesMaterialLoading mesMaterialLoading = mesMaterialLoadingService.getById(id); - if(mesMaterialLoading==null) { - return Result.error("鏈壘鍒板搴旀暟鎹�"); - } - return Result.OK(mesMaterialLoading); - } - - /** - * 瀵煎嚭excel - * - * @param request - * @param mesMaterialLoading - */ - //@RequiresPermissions("org.jeecg.modules:mes_material_loading:exportXls") - @RequestMapping(value = "/exportXls") - public ModelAndView exportXls(HttpServletRequest request, MesMaterialLoading mesMaterialLoading) { - return super.exportXls(request, mesMaterialLoading, MesMaterialLoading.class, "涓婃枡"); - } - - /** - * 閫氳繃excel瀵煎叆鏁版嵁 - * - * @param request - * @param response - * @return - */ - //@RequiresPermissions("mes_material_loading:importExcel") - @RequestMapping(value = "/importExcel", method = RequestMethod.POST) - public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { - return super.importExcel(request, response, MesMaterialLoading.class); - } - /** - * 閫氳繃loadingId鏌ヨ涓嬫枡淇℃伅 - * - * @param request - * @param response - * @return - */ - @RequestMapping("/queryUnloadingByLoadingId") - public Result<?> queryUnloadingByLoadingId(HttpServletRequest request, HttpServletResponse response) { - String loadingId = request.getParameter("loadingId"); - return Result.OK(mesMaterialLoadingService.queryUnloadingByLoadingId(loadingId)); - } - /* - * 閫氳繃 workOrderId 鏌ヨ涓婃枡淇℃伅 - * @param workOrderId - * */ - @GetMapping("/queryLoadingByWorkOrderId") - public Result<?> queryLoadingByWorkOrderId(@RequestParam(name = "workOrderId", required = true) String workOrderId) { - return Result.OK(mesMaterialLoadingService.queryLoadingByWorkOrderId(workOrderId)); + /** + * 鍒嗛〉鍒楄〃鏌ヨ + * + * @param mesMaterialLoading + * @param pageNo + * @param pageSize + * @return + */ + @ApiOperation(value = "涓婃枡-鍒嗛〉鍒楄〃鏌ヨ", notes = "涓婃枡-鍒嗛〉鍒楄〃鏌ヨ") + @GetMapping(value = "/list") + public Result<IPage<MesMaterialLoading>> queryPageList(MesMaterialLoading mesMaterialLoading, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { + Page<MesMaterialLoading> page = new Page<>(pageNo, pageSize); + IPage<MesMaterialLoading> pageList = mesMaterialLoadingService.queryPageList(page, mesMaterialLoading); + return Result.OK(pageList); } + /** + * 娣诲姞 + * + * @param mesMaterialLoading + * @return + */ + @AutoLog(value = "涓婃枡-娣诲姞") + @ApiOperation(value = "涓婃枡-娣诲姞", notes = "涓婃枡-娣诲姞") + @PostMapping(value = "/add") + public Result<String> add(@RequestBody MesMaterialLoading mesMaterialLoading) { + boolean b = mesMaterialLoadingService.loading(mesMaterialLoading); + if (!b) { + Result.error("涓婃枡澶辫触锛�"); + } + return Result.OK("涓婃枡鎴愬姛锛�"); + } + + /** + * 缂栬緫 + * + * @param mesMaterialLoading + * @return + */ + @AutoLog(value = "涓婃枡-缂栬緫") + @ApiOperation(value = "涓婃枡-缂栬緫", notes = "涓婃枡-缂栬緫") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST}) + public Result<String> edit(@RequestBody MesMaterialLoading mesMaterialLoading) { + mesMaterialLoadingService.updateById(mesMaterialLoading); + return Result.OK("缂栬緫鎴愬姛!"); + } + + /** + * 閫氳繃id鏌ヨ + * + * @param id + * @return + */ + //@AutoLog(value = "涓婃枡-閫氳繃id鏌ヨ") + @ApiOperation(value = "涓婃枡-閫氳繃id鏌ヨ", notes = "涓婃枡-閫氳繃id鏌ヨ") + @GetMapping(value = "/queryById") + public Result<MesMaterialLoading> queryById(@RequestParam(name = "id", required = true) String id) { + MesMaterialLoading mesMaterialLoading = mesMaterialLoadingService.getById(id); + if (mesMaterialLoading == null) { + return Result.error("鏈壘鍒板搴旀暟鎹�"); + } + return Result.OK(mesMaterialLoading); + } + + /** + * 閫氳繃loadingId鏌ヨ涓嬫枡淇℃伅 + * + * @param request + * @param response + * @return + */ + @RequestMapping("/queryUnloadingByLoadingId") + public Result<?> queryUnloadingByLoadingId(HttpServletRequest request, HttpServletResponse response) { + String loadingId = request.getParameter("loadingId"); + return Result.OK(mesMaterialLoadingService.queryUnloadingByLoadingId(loadingId)); + } } diff --git a/src/main/java/org/jeecg/modules/mes/entity/MesMaterialLoading.java b/src/main/java/org/jeecg/modules/mes/entity/MesMaterialLoading.java index fdb6ba0..c062cc9 100644 --- a/src/main/java/org/jeecg/modules/mes/entity/MesMaterialLoading.java +++ b/src/main/java/org/jeecg/modules/mes/entity/MesMaterialLoading.java @@ -18,78 +18,82 @@ /** * @Description: 涓婃枡 * @Author: jeecg-boot - * @Date: 2025-07-07 + * @Date: 2025-07-07 * @Version: V1.0 */ @Data @TableName("mes_material_loading") @Accessors(chain = true) @EqualsAndHashCode(callSuper = false) -@ApiModel(value="mes_material_loading瀵硅薄", description="涓婃枡") +@ApiModel(value = "mes_material_loading瀵硅薄", description = "涓婃枡") public class MesMaterialLoading implements Serializable { private static final long serialVersionUID = 1L; - /**涓婚敭*/ - @TableId(type = IdType.ASSIGN_ID) + /**涓婚敭*/ + @TableId(type = IdType.ASSIGN_ID) @ApiModelProperty(value = "涓婚敭") private String id; - /**鍒涘缓浜�*/ + /**鍒涘缓浜�*/ @ApiModelProperty(value = "鍒涘缓浜�") private String createBy; - /**鍒涘缓鏃ユ湡*/ - @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") - @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + /**鍒涘缓鏃ユ湡*/ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "鍒涘缓鏃ユ湡") private Date createTime; - /**鏇存柊浜�*/ + /**鏇存柊浜�*/ @ApiModelProperty(value = "鏇存柊浜�") private String updateBy; - /**鏇存柊鏃ユ湡*/ - @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") - @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + /**鏇存柊鏃ユ湡*/ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "鏇存柊鏃ユ湡") private Date updateTime; - /**鍒犻櫎鏍囪*/ - @Excel(name = "鍒犻櫎鏍囪", width = 15) + /**鍒犻櫎鏍囪*/ + @Excel(name = "鍒犻櫎鏍囪", width = 15) @ApiModelProperty(value = "鍒犻櫎鏍囪") @TableLogic private Integer delFlag; /**浜х嚎ID*/ @Excel(name = "浜х嚎ID", width = 15) @ApiModelProperty(value = "浜х嚎ID") + @Dict(dictTable = "base_factory", dicCode = "id", dicText = "factory_name") private String factoryId; /**搴撳瓨鍦癐D*/ @Excel(name = "搴撳瓨鍦癐D", width = 15) @ApiModelProperty(value = "搴撳瓨鍦癐D") + @Dict(dictTable = "base_line_side_warehouse", dicCode = "id", dicText = "warehouse_name") private String warehouseId; - /**鐗╂枡缂栫爜*/ - @Excel(name = "鐗╂枡缂栫爜", width = 15) + /**鐗╂枡缂栫爜*/ + @Excel(name = "鐗╂枡缂栫爜", width = 15) @ApiModelProperty(value = "鐗╂枡缂栫爜") private String materialNumber; - /**鐗╂枡鍚嶇О*/ - @Excel(name = "鐗╂枡鍚嶇О", width = 15) + /**鐗╂枡鍚嶇О*/ + @Excel(name = "鐗╂枡鍚嶇О", width = 15) @ApiModelProperty(value = "鐗╂枡鍚嶇О") private String materialName; - /**鎵规鍙�*/ - @Excel(name = "鎵规鍙�", width = 15) + /**鎵规鍙�*/ + @Excel(name = "鎵规鍙�", width = 15) @ApiModelProperty(value = "鎵规鍙�") private String batchNumber; /**閽㈢悆灏哄*/ @Excel(name = "閽㈢悆灏哄", width = 15) @ApiModelProperty(value = "閽㈢悆灏哄") + @Dict(dicCode = "steel_ball_size") private String steelBallSize; - /**鏁伴噺*/ - @Excel(name = "鏁伴噺", width = 15) + /**鏁伴噺*/ + @Excel(name = "鏁伴噺", width = 15) @ApiModelProperty(value = "鏁伴噺") private BigDecimal quantity; - /**鍓╀綑鏁伴噺*/ - @Excel(name = "鍓╀綑鏁伴噺", width = 15) + /**鍓╀綑鏁伴噺*/ + @Excel(name = "鍓╀綑鏁伴噺", width = 15) @ApiModelProperty(value = "鍓╀綑鏁伴噺") private BigDecimal remainingQuantity; + /**涓嬫枡鏍囪*/ + @Excel(name = "涓嬫枡鏍囪", width = 15) + @ApiModelProperty(value = "涓嬫枡鏍囪") + private String unloadingFlag; + /** 鍒嗙被 */ @TableField(exist = false) - @ApiModelProperty(value = "宸ュ崟鍙�") - private String workOrderCode; - @TableField(exist = false) - @ApiModelProperty(value = "璁惧鍚嶇О") - private String equipmentName; + private String category; } diff --git a/src/main/java/org/jeecg/modules/mes/mapper/MesMaterialLoadingMapper.java b/src/main/java/org/jeecg/modules/mes/mapper/MesMaterialLoadingMapper.java index e172a3a..16a7b33 100644 --- a/src/main/java/org/jeecg/modules/mes/mapper/MesMaterialLoadingMapper.java +++ b/src/main/java/org/jeecg/modules/mes/mapper/MesMaterialLoadingMapper.java @@ -1,7 +1,6 @@ package org.jeecg.modules.mes.mapper; import com.baomidou.mybatisplus.core.conditions.Wrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Constants; @@ -20,8 +19,12 @@ */ public interface MesMaterialLoadingMapper extends BaseMapper<MesMaterialLoading> { List<MesMaterialUnloading> queryUnloadingByLoadingId(@Param("loadingId") String loadingId); - List<MesMaterialLoading> queryLoadingByWorkOrderId(@Param("workOrderId") String workOrderId); - IPage<MesMaterialLoading> queryPageList(Page<MesMaterialLoading> page, - @Param(Constants.WRAPPER) Wrapper<MesMaterialLoading> queryWrapper); + /** + * 鍒嗛〉鏌ヨ + * @param page + * @param queryWrapper + * @return + */ + IPage<MesMaterialLoading> queryPageList(Page<MesMaterialLoading> page, @Param(Constants.WRAPPER) Wrapper<MesMaterialLoading> queryWrapper); } diff --git a/src/main/java/org/jeecg/modules/mes/mapper/xml/MesMaterialLoadingMapper.xml b/src/main/java/org/jeecg/modules/mes/mapper/xml/MesMaterialLoadingMapper.xml index 1bf443e..fb86d6e 100644 --- a/src/main/java/org/jeecg/modules/mes/mapper/xml/MesMaterialLoadingMapper.xml +++ b/src/main/java/org/jeecg/modules/mes/mapper/xml/MesMaterialLoadingMapper.xml @@ -4,21 +4,41 @@ <select id="queryUnloadingByLoadingId" resultType="org.jeecg.modules.mes.entity.MesMaterialUnloading"> select * from mes_material_unloading where loading_id = #{loadingId} and del_flag = 0 order by create_time desc </select> - <select id="queryLoadingByWorkOrderId" resultType="org.jeecg.modules.mes.entity.MesMaterialLoading"> - select mml.* ,mpwo.work_order_code as workOrderCode - from mes_material_loading mml - left join mes_production_work_order mpwo on mml.work_order_id = mpwo.id - where mml.work_order_id = #{workOrderId} - and mml.del_flag = 0 - </select> + <select id="queryPageList" resultType="org.jeecg.modules.mes.entity.MesMaterialLoading"> - SELECT - t1.*, - t2.work_order_code workOrderCode, - t3.equipment_name equipmentName - FROM mes_material_loading t1 - LEFT JOIN mes_production_work_order t2 ON t1.work_order_id = t2.id - LEFT JOIN eam_equipment t3 ON t1.equipment_id = t3.id - ${ew.customSqlSegment} + select * + from (SELECT m.id, + m.create_by, + m.create_time, + m.material_number, + m.material_name, + m.factory_id, + m.warehouse_id, + m.batch_number, + m.steel_ball_size, + m.quantity, + m.remaining_quantity, + m.unloading_flag, + 'LOADING' AS category + FROM mes_material_loading m + WHERE m.del_flag = 0 + UNION ALL + SELECT t1.id, + t1.create_by, + t1.create_time, + t1.material_number, + t1.material_name, + t2.factory_id, + t2.warehouse_id, + t2.batch_number, + t2.steel_ball_size, + t2.quantity, + t2.remaining_quantity, + t2.unloading_flag, + 'UNLOADING' AS category + FROM mes_material_unloading t1 + INNER JOIN mes_material_loading t2 ON t1.loading_id = t2.id + WHERE t1.del_flag = 0) mml + ${ew.customSqlSegment} </select> </mapper> \ No newline at end of file diff --git a/src/main/java/org/jeecg/modules/mes/service/IMesMaterialLoadingService.java b/src/main/java/org/jeecg/modules/mes/service/IMesMaterialLoadingService.java index dfcfc48..53c56f3 100644 --- a/src/main/java/org/jeecg/modules/mes/service/IMesMaterialLoadingService.java +++ b/src/main/java/org/jeecg/modules/mes/service/IMesMaterialLoadingService.java @@ -12,12 +12,24 @@ /** * @Description: 涓婃枡 * @Author: jeecg-boot - * @Date: 2025-07-07 + * @Date: 2025-07-07 * @Version: V1.0 */ public interface IMesMaterialLoadingService extends IService<MesMaterialLoading> { List<MesMaterialUnloading> queryUnloadingByLoadingId(String loadingId); - List<MesMaterialLoading> queryLoadingByWorkOrderId(String workOrderId); - IPage<MesMaterialLoading> queryPageList(Page<MesMaterialLoading> page, Map<String, String[]> parameterMap); + /** + * 鍒嗛〉鏌ヨ + * @param page + * @param mesMaterialLoading + * @return + */ + IPage<MesMaterialLoading> queryPageList(Page<MesMaterialLoading> page, MesMaterialLoading mesMaterialLoading); + + /** + * 涓婃枡鎺ュ彛 + * @param mesMaterialLoading + * @return + */ + boolean loading(MesMaterialLoading mesMaterialLoading); } diff --git a/src/main/java/org/jeecg/modules/mes/service/impl/MesMaterialLoadingServiceImpl.java b/src/main/java/org/jeecg/modules/mes/service/impl/MesMaterialLoadingServiceImpl.java index 188ec6c..317f986 100644 --- a/src/main/java/org/jeecg/modules/mes/service/impl/MesMaterialLoadingServiceImpl.java +++ b/src/main/java/org/jeecg/modules/mes/service/impl/MesMaterialLoadingServiceImpl.java @@ -2,26 +2,53 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.shiro.SecurityUtils; +import org.jeecg.common.constant.CommonConstant; +import org.jeecg.common.exception.JeecgBootException; +import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.modules.base.entity.LineSideWarehouse; +import org.jeecg.modules.base.service.ILineSideWarehouseService; +import org.jeecg.modules.lsw.entity.LswMaterial; +import org.jeecg.modules.lsw.entity.LswMaterialInventory; +import org.jeecg.modules.lsw.entity.LswMaterialOutbound; +import org.jeecg.modules.lsw.enums.MaterialCategoryEnum; +import org.jeecg.modules.lsw.enums.MaterialOutboundCategory; +import org.jeecg.modules.lsw.service.ILswMaterialInventoryService; +import org.jeecg.modules.lsw.service.ILswMaterialOutboundService; +import org.jeecg.modules.lsw.service.ILswMaterialService; import org.jeecg.modules.mes.entity.MesMaterialLoading; import org.jeecg.modules.mes.entity.MesMaterialUnloading; import org.jeecg.modules.mes.mapper.MesMaterialLoadingMapper; import org.jeecg.modules.mes.service.IMesMaterialLoadingService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import java.math.BigDecimal; import java.util.List; import java.util.Map; /** * @Description: 涓婃枡 * @Author: jeecg-boot - * @Date: 2025-07-07 + * @Date: 2025-07-07 * @Version: V1.0 */ @Service public class MesMaterialLoadingServiceImpl extends ServiceImpl<MesMaterialLoadingMapper, MesMaterialLoading> implements IMesMaterialLoadingService { + + @Autowired + private ILineSideWarehouseService lineSideWarehouseService; + @Autowired + private ILswMaterialOutboundService lswMaterialOutboundService; + @Autowired + private ILswMaterialInventoryService materialInventoryService; + @Autowired + private ILswMaterialService materialService; @Override public List<MesMaterialUnloading> queryUnloadingByLoadingId(String loadingId) { @@ -29,38 +56,86 @@ } @Override - public List<MesMaterialLoading> queryLoadingByWorkOrderId(String workOrderId) { - return baseMapper.queryLoadingByWorkOrderId(workOrderId); + public IPage<MesMaterialLoading> queryPageList(Page<MesMaterialLoading> page, MesMaterialLoading mesMaterialLoading) { + QueryWrapper<MesMaterialLoading> queryWrapper = new QueryWrapper<>(); + if (StringUtils.isNotBlank(mesMaterialLoading.getFactoryId())) { + queryWrapper.eq("mml.factory_id", mesMaterialLoading.getFactoryId()); + } + if (StringUtils.isNotBlank(mesMaterialLoading.getCategory())) { + queryWrapper.eq("mml.category", mesMaterialLoading.getCategory()); + } + if (StringUtils.isNotBlank(mesMaterialLoading.getMaterialNumber())) { + queryWrapper.like("mml.material_number", mesMaterialLoading.getMaterialNumber()); + } + if (StringUtils.isNotBlank(mesMaterialLoading.getMaterialName())) { + queryWrapper.like("mml.material_name", mesMaterialLoading.getMaterialName()); + } + if (StringUtils.isNotBlank(mesMaterialLoading.getBatchNumber())) { + queryWrapper.like("mml.batch_number", mesMaterialLoading.getBatchNumber()); + } + queryWrapper.orderByDesc("mml.create_time"); + return this.baseMapper.queryPageList(page, queryWrapper); } @Override - public IPage<MesMaterialLoading> queryPageList(Page<MesMaterialLoading> page, Map<String, String[]> parameterMap) { - QueryWrapper<MesMaterialLoading> queryWrapper = Wrappers.query(); - String[] factoryIds = parameterMap.get("factoryId"); - if (factoryIds != null && factoryIds.length > 0) { - queryWrapper.eq("t2.factory_id", factoryIds[0]); + @Transactional(rollbackFor = Exception.class) + public boolean loading(MesMaterialLoading mesMaterialLoading) { + if (mesMaterialLoading == null) { + throw new JeecgBootException("鍙傛暟閿欒锛�"); } - String[] workOrderIds = parameterMap.get("workOrderId"); - if (workOrderIds != null && workOrderIds.length > 0) { - queryWrapper.eq("t1.work_order_id", workOrderIds[0]); + if (StringUtils.isBlank(mesMaterialLoading.getFactoryId()) + || StringUtils.isBlank(mesMaterialLoading.getMaterialNumber()) + || mesMaterialLoading.getQuantity() == null + || mesMaterialLoading.getQuantity().intValue() < 1 + || StringUtils.isBlank(mesMaterialLoading.getBatchNumber())) { + throw new JeecgBootException("鍙傛暟閿欒锛�"); } - String[] materialNumbers = parameterMap.get("materialNumber"); - if (materialNumbers != null && materialNumbers.length > 0) { - queryWrapper.like("t1.material_number", materialNumbers[0]); + LineSideWarehouse warehouse = lineSideWarehouseService.queryByFactoryId(mesMaterialLoading.getFactoryId()); + if (warehouse == null) { + throw new JeecgBootException("绾胯竟搴撲笉瀛樺湪锛岃妫�鏌ワ紒"); } - String[] materialNames = parameterMap.get("materialName"); - if (materialNames != null && materialNames.length > 0) { - queryWrapper.like("t1.material_name", materialNames[0]); + + LswMaterial material = materialService.queryByMaterialNumber(mesMaterialLoading.getMaterialNumber()); + if (material == null) { + throw new JeecgBootException("鐗╂枡淇℃伅涓嶅瓨鍦紝璇锋鏌ワ紒"); } - String[] batchNumbers = parameterMap.get("batchNumber"); - if (batchNumbers != null && batchNumbers.length > 0) { - queryWrapper.like("t1.batch_number", batchNumbers[0]); + + if (MaterialCategoryEnum.STEEL_BALL.name().equals(material.getMaterialCategory()) && StringUtils.isBlank(mesMaterialLoading.getSteelBallSize())) { + throw new JeecgBootException("閽㈢悆灏哄涓嶈兘涓虹┖锛岃妫�鏌ワ紒"); } - String[] equipmentIds = parameterMap.get("equipmentId"); - if (equipmentIds != null && equipmentIds.length > 0) { - queryWrapper.eq("t1.equipment_id", equipmentIds[0]); + + LswMaterialInventory inventory = materialInventoryService.queryByMaterialNumberAndBatchNumber(mesMaterialLoading.getMaterialNumber(), mesMaterialLoading.getBatchNumber(), warehouse.getId()); + if (inventory == null) { + throw new JeecgBootException("搴撳瓨涓嶅瓨鍦紝璇锋鏌ワ紒"); } - queryWrapper.orderByDesc("t1.create_time"); - return this.baseMapper.queryPageList(page, queryWrapper); + if (inventory.getQuantity().compareTo(mesMaterialLoading.getQuantity()) != 0) { + throw new JeecgBootException("涓婃枡鍜屽簱瀛樻暟閲忎笉鍖归厤锛岃妫�鏌ワ紒"); + } + + //浜哄憳淇℃伅 + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + if (sysUser == null) { + throw new JeecgBootException("鐢ㄦ埛淇℃伅鑾峰彇澶辫触锛�"); + } + LswMaterialOutbound outbound = new LswMaterialOutbound(); + outbound.setMaterialNumber(mesMaterialLoading.getMaterialNumber()); + outbound.setMaterialName(mesMaterialLoading.getMaterialName()); + outbound.setQuantity(mesMaterialLoading.getQuantity()); + outbound.setFactoryId(mesMaterialLoading.getFactoryId()); + outbound.setWarehouseId(warehouse.getId()); + outbound.setBatchNumber(mesMaterialLoading.getBatchNumber()); + outbound.setOutboundCategory(MaterialOutboundCategory.MATERIAL_LOADING.name()); + outbound.setInventoryId(inventory.getId()); + outbound.setOutboundStaff(sysUser.getUsername()); + boolean b = lswMaterialOutboundService.outboundMaterial(outbound); + if (!b) { + throw new JeecgBootException("搴撳瓨鍑哄簱澶辫触锛�"); + } + mesMaterialLoading.setWarehouseId(warehouse.getId()); + mesMaterialLoading.setRemainingQuantity(mesMaterialLoading.getQuantity()); + mesMaterialLoading.setDelFlag(CommonConstant.DEL_FLAG_0); + mesMaterialLoading.setUnloadingFlag(CommonConstant.STATUS_0); + this.save(mesMaterialLoading); + return true; } } -- Gitblit v1.9.3