From 1ae9b57657199f46affc9083c39681f1ec934e3f Mon Sep 17 00:00:00 2001 From: Houjie <714924425@qq.com> Date: 星期一, 26 五月 2025 17:35:29 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/InStoreDetailController.java | 11 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/OutStoreDetailController.java | 179 +++++++++++ lxzn-module-tms/src/main/java/org/jeecg/modules/tms/enums/OutBillStatus.java | 21 - lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/InStoreDetailMapper.xml | 37 ++ lxzn-module-tms/src/main/java/org/jeecg/modules/tms/enums/ToolCirculationStatus.java | 38 ++ lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/OutboundOrderServiceImpl.java | 175 ++++++++++ lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/InStoreDetailServiceImpl.java | 31 + lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsClassifyServiceImpl.java | 5 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/InStoreDetailMapper.java | 6 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/OutboundOrderController.java | 9 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/dto/OutBoundRequestDto.java | 19 + lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/OutStoreDetailMapper.xml | 79 ++++ lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IOutboundOrderService.java | 3 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/OutStoreDetailServiceImpl.java | 36 ++ lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/OutboundDetail.java | 6 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/InStoreDetail.java | 8 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/OutStoreDetail.java | 87 +++++ lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IInStoreDetailService.java | 6 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IOutStoreDetailService.java | 20 + lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/OutStoreDetailVo.java | 78 ++++ lxzn-module-tms/src/main/java/org/jeecg/modules/tms/enums/OutStorehouseType.java | 29 + lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/OutStoreDetailMapper.java | 25 + lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/InboundDetailMapper.xml | 5 23 files changed, 874 insertions(+), 39 deletions(-) diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/InStoreDetailController.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/InStoreDetailController.java index 7a7f587..1a80548 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/InStoreDetailController.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/InStoreDetailController.java @@ -13,6 +13,7 @@ import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.common.util.oConvertUtils; import org.jeecg.modules.tms.entity.InStoreDetail; +import org.jeecg.modules.tms.entity.ToolsClassify; import org.jeecg.modules.tms.service.IInStoreDetailService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -56,19 +57,17 @@ * @param inStoreDetail * @param pageNo * @param pageSize - * @param req + * @param query * @return */ //@AutoLog(value = "鍏ュ簱鏄庣粏-鍒嗛〉鍒楄〃鏌ヨ") @ApiOperation(value="鍏ュ簱鏄庣粏-鍒嗛〉鍒楄〃鏌ヨ", notes="鍏ュ簱鏄庣粏-鍒嗛〉鍒楄〃鏌ヨ") @GetMapping(value = "/list") - public Result<IPage<InStoreDetail>> queryPageList(InStoreDetail inStoreDetail, + public Result<?> findPageList(InStoreDetail inStoreDetail, @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, - HttpServletRequest req) { - QueryWrapper<InStoreDetail> queryWrapper = QueryGenerator.initQueryWrapper(inStoreDetail, req.getParameterMap()); - Page<InStoreDetail> page = new Page<InStoreDetail>(pageNo, pageSize); - IPage<InStoreDetail> pageList = inStoreDetailService.page(page, queryWrapper); + @RequestParam Map<String, String> query) { + IPage<Map<String, Object>> pageList = inStoreDetailService.findPageList(pageNo, pageSize, query); return Result.OK(pageList); } diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/OutStoreDetailController.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/OutStoreDetailController.java new file mode 100644 index 0000000..11f95c5 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/OutStoreDetailController.java @@ -0,0 +1,179 @@ +package org.jeecg.modules.tms.controller; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.tms.entity.OutStoreDetail; +import org.jeecg.modules.tms.entity.vo.OutStoreDetailVo; +import org.jeecg.modules.tms.service.IOutStoreDetailService; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; + +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.jeecg.common.aspect.annotation.AutoLog; + + /** + * @Description: 宸ュ叿鍑哄簱娴佹按 + * @Author: jeecg-boot + * @Date: 2025-05-23 + * @Version: V1.0 + */ +@Api(tags="宸ュ叿鍑哄簱娴佹按") +@RestController +@RequestMapping("/tms/outStoreDetail") +@Slf4j +public class OutStoreDetailController extends JeecgController<OutStoreDetail, IOutStoreDetailService> { + @Autowired + private IOutStoreDetailService outStoreDetailService; + + /** + * 鍒嗛〉鍒楄〃鏌ヨ + * + * @param outStoreDetail + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "宸ュ叿鍑哄簱娴佹按-鍒嗛〉鍒楄〃鏌ヨ") + @ApiOperation(value="宸ュ叿鍑哄簱娴佹按-鍒嗛〉鍒楄〃鏌ヨ", notes="宸ュ叿鍑哄簱娴佹按-鍒嗛〉鍒楄〃鏌ヨ") + @GetMapping(value = "/list") + public Result<IPage<OutStoreDetailVo>> queryPageList(OutStoreDetail outStoreDetail, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + Map<String, String[]> parameterMap = req.getParameterMap(); + QueryWrapper<OutStoreDetail> queryWrapper = QueryGenerator.initQueryWrapper(outStoreDetail, parameterMap); + Page<OutStoreDetailVo> page = new Page<>(pageNo, pageSize); + IPage<OutStoreDetailVo> pageList = outStoreDetailService.queryPageList(page, parameterMap); + return Result.OK(pageList); + } + + /** + * 娣诲姞 + * + * @param outStoreDetail + * @return + */ + @AutoLog(value = "宸ュ叿鍑哄簱娴佹按-娣诲姞") + @ApiOperation(value="宸ュ叿鍑哄簱娴佹按-娣诲姞", notes="宸ュ叿鍑哄簱娴佹按-娣诲姞") + //@RequiresPermissions("org.jeecg.modules:tms_out_store_detail:add") + @PostMapping(value = "/add") + public Result<String> add(@RequestBody OutStoreDetail outStoreDetail) { + outStoreDetailService.save(outStoreDetail); + return Result.OK("娣诲姞鎴愬姛锛�"); + } + + /** + * 缂栬緫 + * + * @param outStoreDetail + * @return + */ + @AutoLog(value = "宸ュ叿鍑哄簱娴佹按-缂栬緫") + @ApiOperation(value="宸ュ叿鍑哄簱娴佹按-缂栬緫", notes="宸ュ叿鍑哄簱娴佹按-缂栬緫") + //@RequiresPermissions("org.jeecg.modules:tms_out_store_detail:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result<String> edit(@RequestBody OutStoreDetail outStoreDetail) { + outStoreDetailService.updateById(outStoreDetail); + return Result.OK("缂栬緫鎴愬姛!"); + } + + /** + * 閫氳繃id鍒犻櫎 + * + * @param id + * @return + */ + @AutoLog(value = "宸ュ叿鍑哄簱娴佹按-閫氳繃id鍒犻櫎") + @ApiOperation(value="宸ュ叿鍑哄簱娴佹按-閫氳繃id鍒犻櫎", notes="宸ュ叿鍑哄簱娴佹按-閫氳繃id鍒犻櫎") + //@RequiresPermissions("org.jeecg.modules:tms_out_store_detail:delete") + @DeleteMapping(value = "/delete") + public Result<String> delete(@RequestParam(name="id",required=true) String id) { + outStoreDetailService.removeById(id); + return Result.OK("鍒犻櫎鎴愬姛!"); + } + + /** + * 鎵归噺鍒犻櫎 + * + * @param ids + * @return + */ + @AutoLog(value = "宸ュ叿鍑哄簱娴佹按-鎵归噺鍒犻櫎") + @ApiOperation(value="宸ュ叿鍑哄簱娴佹按-鎵归噺鍒犻櫎", notes="宸ュ叿鍑哄簱娴佹按-鎵归噺鍒犻櫎") + //@RequiresPermissions("org.jeecg.modules:tms_out_store_detail:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.outStoreDetailService.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<OutStoreDetail> queryById(@RequestParam(name="id",required=true) String id) { + OutStoreDetail outStoreDetail = outStoreDetailService.getById(id); + if(outStoreDetail==null) { + return Result.error("鏈壘鍒板搴旀暟鎹�"); + } + return Result.OK(outStoreDetail); + } + + /** + * 瀵煎嚭excel + * + * @param request + * @param outStoreDetail + */ + //@RequiresPermissions("org.jeecg.modules:tms_out_store_detail:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, OutStoreDetail outStoreDetail) { + return super.exportXls(request, outStoreDetail, OutStoreDetail.class, "宸ュ叿鍑哄簱娴佹按"); + } + + /** + * 閫氳繃excel瀵煎叆鏁版嵁 + * + * @param request + * @param response + * @return + */ + //@RequiresPermissions("tms_out_store_detail:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, OutStoreDetail.class); + } + +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/OutboundOrderController.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/OutboundOrderController.java index bed72c4..cb806cf 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/OutboundOrderController.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/OutboundOrderController.java @@ -13,6 +13,7 @@ import org.jeecg.common.api.vo.Result; import org.jeecg.common.util.TranslateDictTextUtils; import org.jeecg.modules.tms.entity.dto.OutBoundOrderFlowDto; +import org.jeecg.modules.tms.entity.dto.OutBoundRequestDto; import org.jeecg.modules.tms.entity.dto.OutboundOrderAndDetailDto; import org.jeecg.modules.tms.entity.vo.OutboundDetailVo; import org.jeecg.modules.tms.enums.OutBillStatus; @@ -177,6 +178,14 @@ return Result.OK("鎿嶄綔鎴愬姛"); } + @AutoLog(value = "鐢宠鍗曟柟寮忓嚭搴�") + @ApiOperation(value = "鐢宠鍗曟柟寮忓嚭搴�", notes = "鐢宠鍗曟柟寮忓嚭搴�") + @PostMapping(value = "/outBound") + public Result<?> outBound(@RequestBody List<OutBoundRequestDto> outBoundRequestList) { + outboundOrderService.outBound(outBoundRequestList); + return Result.OK("鍑哄簱鎴愬姛"); + } + /** * 閫氳繃id鍒犻櫎 * @param id diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/InStoreDetail.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/InStoreDetail.java index 1164ab7..1239559 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/InStoreDetail.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/InStoreDetail.java @@ -44,9 +44,10 @@ @Excel(name = "宸ュ叿缂栧彿", width = 15) @ApiModelProperty(value = "宸ュ叿缂栧彿") private String toolId; - /**宸ュ叿鍏ュ簱鏂瑰紡*/ - @Excel(name = "宸ュ叿鍏ュ簱鏂瑰紡", width = 15) - @ApiModelProperty(value = "宸ュ叿鍏ュ簱鏂瑰紡") + /**宸ュ叿鍏ュ簱绫诲瀷*/ + @Excel(name = "宸ュ叿鍏ュ簱绫诲瀷", width = 15) + @ApiModelProperty(value = "宸ュ叿鍏ュ簱绫诲瀷") + @Dict(dicCode = "in_storehouse_type") private String inStorehouseType; /**搴撲綅鍙�*/ @Excel(name = "搴撲綅鍙�", width = 15) @@ -64,6 +65,7 @@ 2.鎵嬪伐鎿嶄綔*/ @Excel(name = "鍏ュ簱鎿嶄綔鏂瑰紡;1.鎸夌敵璇峰崟 2.鎵嬪伐鎿嶄綔", width = 15) @ApiModelProperty(value = "鍏ュ簱鎿嶄綔鏂瑰紡;1.鎸夌敵璇峰崟 2.鎵嬪伐鎿嶄綔") + @Dict(dicCode = "inbound_operate_type") private java.lang.String operateType; /**鍏ュ簱鏃堕棿*/ @Excel(name = "鍏ュ簱鏃堕棿", width = 15, format = "yyyy-MM-dd") diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/OutStoreDetail.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/OutStoreDetail.java new file mode 100644 index 0000000..02d5c01 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/OutStoreDetail.java @@ -0,0 +1,87 @@ +package org.jeecg.modules.tms.entity; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.util.Date; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.TableLogic; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecg.common.aspect.annotation.Dict; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Description: 宸ュ叿鍑哄簱娴佹按 + * @Author: jeecg-boot + * @Date: 2025-05-23 + * @Version: V1.0 + */ +@Data +@TableName("tms_out_store_detail") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="tms_out_store_detail瀵硅薄", description="宸ュ叿鍑哄簱娴佹按") +public class OutStoreDetail implements Serializable { + private static final long serialVersionUID = 1L; + + /**涓婚敭*/ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "涓婚敭") + private String id; + /**宸ュ叿缂栫爜*/ + @Excel(name = "宸ュ叿缂栫爜", width = 15) + @ApiModelProperty(value = "宸ュ叿缂栫爜") + private String toolCode; + /**宸ュ叿缂栧彿*/ + @Excel(name = "宸ュ叿缂栧彿", width = 15) + @ApiModelProperty(value = "宸ュ叿缂栧彿") + private String toolId; + /**鍑哄簱绫诲瀷*/ + @Excel(name = "鍑哄簱绫诲瀷", width = 15) + @ApiModelProperty(value = "鍑哄簱绫诲瀷") + private String outStorehouseType; + /**搴撲綅鍙�*/ + @Excel(name = "搴撲綅鍙�", width = 15) + @ApiModelProperty(value = "搴撲綅鍙�") + private String goodsShelvesCode; + /**鍑哄簱鏁伴噺*/ + @Excel(name = "鍑哄簱鏁伴噺", width = 15) + @ApiModelProperty(value = "鍑哄簱鏁伴噺") + private BigDecimal outNumber; + /**鍑哄簱鐢宠鍗曞彿*/ + @Excel(name = "鍑哄簱鐢宠鍗曞彿", width = 15) + @ApiModelProperty(value = "鍑哄簱鐢宠鍗曞彿") + private String outStorehouseId; + /**鍑哄簱鎿嶄綔鏂瑰紡;1.鎸夌敵璇峰崟 2.鎵嬪伐鎿嶄綔*/ + @Excel(name = "鍑哄簱鎿嶄綔鏂瑰紡;1.鎸夌敵璇峰崟 2.鎵嬪伐鎿嶄綔", width = 15) + @ApiModelProperty(value = "鍑哄簱鎿嶄綔鏂瑰紡;1.鎸夌敵璇峰崟 2.鎵嬪伐鎿嶄綔") + private String operateType; + /**绉熸埛鍙�*/ + @Excel(name = "绉熸埛鍙�", width = 15) + @ApiModelProperty(value = "绉熸埛鍙�") + private String tenantId; + /**鍒涘缓浜�*/ + @ApiModelProperty(value = "鍒涘缓浜�") + private String createBy; + /**鍒涘缓鏃堕棿*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm") + @ApiModelProperty(value = "鍒涘缓鏃堕棿") + private Date createTime; + /**鏇存柊浜�*/ + @ApiModelProperty(value = "鏇存柊浜�") + private String updateBy; + /**鏇存柊鏃堕棿*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm") + @ApiModelProperty(value = "鏇存柊鏃堕棿") + private Date updateTime; +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/OutboundDetail.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/OutboundDetail.java index 21ca411..23b6d36 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/OutboundDetail.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/OutboundDetail.java @@ -36,11 +36,11 @@ private String outStorehouseId; /**鍒�鍏风紪鐮�*/ @Excel(name = "鍒�鍏风紪鐮�", width = 15) - @ApiModelProperty(value = "鍒�鍏风紪鐮�") + @ApiModelProperty(value = "鍒�鍏风紪鐮�(tms_base_tool琛ㄤ富閿甶d)") private String toolCode; /**鍒�鍏风紪鍙�*/ @Excel(name = "鍒�鍏风紪鍙�", width = 15) - @ApiModelProperty(value = "鍒�鍏风紪鍙�") + @ApiModelProperty(value = "鍒�鍏风紪鍙�(鍒�鍏峰敮涓�缂栫爜锛岀鍒版妸鐨勫睘鎬�)") private String toolId; /**鐢宠鍑哄簱鏁伴噺*/ @Excel(name = "鐢宠鍑哄簱鏁伴噺", width = 15) @@ -69,7 +69,7 @@ @Excel(name = "鍑哄簱鐘舵��;1.鏈嚭搴擄紱2.閮ㄥ垎鍑哄簱锛�3.鍑哄簱瀹屾垚", width = 15) @ApiModelProperty(value = "鍑哄簱鐘舵��;1.鏈嚭搴擄紱2.閮ㄥ垎鍑哄簱锛�3.鍑哄簱瀹屾垚") @Dict(dicCode = "out_storehouse_status") - private Integer status; + private String status; /**绉熸埛鍙�*/ @Excel(name = "绉熸埛鍙�", width = 15) @ApiModelProperty(value = "绉熸埛鍙�") diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/dto/OutBoundRequestDto.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/dto/OutBoundRequestDto.java new file mode 100644 index 0000000..9d5f862 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/dto/OutBoundRequestDto.java @@ -0,0 +1,19 @@ +package org.jeecg.modules.tms.entity.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class OutBoundRequestDto { + //鍑哄簱鐢宠鍗昳d + @ApiModelProperty(value = "鍑哄簱鐢宠鍗昳d") + private String outBoundOrderId; + //鍑哄簱鐢宠鏄庣粏id + @ApiModelProperty(value = "鍑哄簱鐢宠鏄庣粏id") + private String outboundDetailId; + //鍑哄簱鏁伴噺 + @ApiModelProperty(value = "鍑哄簱鏁伴噺") + private BigDecimal outboundQuantity; +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/OutStoreDetailVo.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/OutStoreDetailVo.java new file mode 100644 index 0000000..0b201b2 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/OutStoreDetailVo.java @@ -0,0 +1,78 @@ +package org.jeecg.modules.tms.entity.vo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecg.common.aspect.annotation.Dict; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * @Description: 宸ュ叿鍑哄簱娴佹按 + * @Author: jeecg-boot + * @Date: 2025-05-23 + * @Version: V1.0 + */ +@Data +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="宸ュ叿鍑哄簱娴佹按椤甸潰灞曠ず瀵硅薄灏佽", description="宸ュ叿鍑哄簱娴佹按椤甸潰灞曠ず瀵硅薄灏佽") +public class OutStoreDetailVo implements Serializable { + private static final long serialVersionUID = 1L; + + /**涓婚敭*/ + @ApiModelProperty(value = "涓婚敭") + private String id; + /**宸ュ叿缂栫爜*/ + @ApiModelProperty(value = "宸ュ叿缂栫爜") + private String toolCode; + /**宸ュ叿缂栧彿*/ + @ApiModelProperty(value = "宸ュ叿缂栧彿") + private String toolId; + /**鍑哄簱绫诲瀷*/ + @Dict(dicCode = "out_storehouse_type") + @ApiModelProperty(value = "鍑哄簱绫诲瀷") + private String outStorehouseType; + /**搴撲綅鍙�*/ + @ApiModelProperty(value = "搴撲綅鍙�") + private String goodsShelvesCode; + /**鍑哄簱鏁伴噺*/ + @ApiModelProperty(value = "鍑哄簱鏁伴噺") + private BigDecimal outNumber; + /**鍑哄簱鐢宠鍗曞彿*/ + @ApiModelProperty(value = "鍑哄簱鐢宠鍗曞彿") + private String outStorehouseId; + /**鍑哄簱鎿嶄綔鏂瑰紡;1.鎸夌敵璇峰崟 2.鎵嬪伐鎿嶄綔*/ + @ApiModelProperty(value = "鍑哄簱鎿嶄綔鏂瑰紡;1.鎸夌敵璇峰崟 2.鎵嬪伐鎿嶄綔") + private String operateType; + /**鍒涘缓浜�*/ + @ApiModelProperty(value = "鍒涘缓浜�") + private String createBy; + /**鍒涘缓鏃堕棿*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm") + @ApiModelProperty(value = "鍒涘缓鏃堕棿") + private Date createTime; + /**涓枃鍚嶇О*/ + @ApiModelProperty(value = "涓枃鍚嶇О") + private String chineseName; + /**鍨嬪彿/鍥惧彿*/ + @ApiModelProperty(value = "鍨嬪彿/鍥惧彿") + private String toolModel; + /**鍒�鍏锋潗鏂�*/ + @ApiModelProperty(value = "鍒�鍏锋潗鏂�") + private String toolMaterial; + /**闆朵欢鏉愭枡*/ + @ApiModelProperty(value = "闆朵欢鏉愭枡") + private String partMaterial; +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/enums/OutBillStatus.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/enums/OutBillStatus.java index 7ead9ae..e7be0d2 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/enums/OutBillStatus.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/enums/OutBillStatus.java @@ -1,11 +1,14 @@ package org.jeecg.modules.tms.enums; +import lombok.Getter; + import java.util.Objects; /** * 鍑哄簱鍗曠姸鎬佹灇涓剧被 */ +@Getter public enum OutBillStatus { /** * 鑽夌鐘舵�侊紝鍊间负1 @@ -39,24 +42,6 @@ OutBillStatus(String value, String description) { this.value = value; this.description = description; - } - - /** - * 鑾峰彇鐘舵�佸�� - * - * @return 鐘舵�佸�� - */ - public String getValue() { - return value; - } - - /** - * 鑾峰彇鐘舵�佹弿杩� - * - * @return 鐘舵�佹弿杩� - */ - public String getDescription() { - return description; } /** diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/enums/OutStorehouseType.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/enums/OutStorehouseType.java new file mode 100644 index 0000000..e8e8165 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/enums/OutStorehouseType.java @@ -0,0 +1,29 @@ +package org.jeecg.modules.tms.enums; + +import lombok.Getter; + +@Getter +public enum OutStorehouseType { + + TOOL_BORROW("1", "宸ュ叿鍊熺敤"), + MAINTENANCE_OUTBOUND("2", "缁翠慨鍑哄簱"), + CALIBRATION_OUTBOUND("3", "妫�瀹氬嚭搴�"), + GRINDING_OUTBOUND("4", "鍒冪(鍑哄簱"); + + private final String value; + private final String description; + + OutStorehouseType(String value, String description) { + this.value = value; + this.description = description; + } + + public static OutStorehouseType getByValue(String value) { + for (OutStorehouseType type : OutStorehouseType.values()) { + if (type.getValue().equals(value)) { + return type; + } + } + throw new IllegalArgumentException("Invalid enum value: " + value); + } +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/enums/ToolCirculationStatus.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/enums/ToolCirculationStatus.java new file mode 100644 index 0000000..0370465 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/enums/ToolCirculationStatus.java @@ -0,0 +1,38 @@ +package org.jeecg.modules.tms.enums; + +import lombok.Getter; + +/** + * 宸ュ叿娴侀�氱姸鎬佹灇涓� + */ +@Getter +public enum ToolCirculationStatus { + IN_STOCK("1", "鍦ㄥ簱"), + BORROWED("2", "鍦ㄥ��"), + REPAIRING("3", "鍦ㄤ慨"), + INSPECTING("4", "鍦ㄦ"), + GRINDING("5", "鍦ㄧ("), + SCRAPPED("6", "鎶ュ簾"); + + private final String value; + private final String description; + + ToolCirculationStatus(String value, String description) { + this.value = value; + this.description = description; + } + + /** + * 鏍规嵁鐘舵�佸�艰幏鍙栨灇涓惧疄渚� + * @param status 鐘舵�佸�� + * @return 鏋氫妇瀹炰緥鎴杗ull + */ + public static ToolCirculationStatus fromStatus(String status) { + for (ToolCirculationStatus value : values()) { + if (value.getValue().equals(status)) { + return value; + } + } + return null; + } +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/InStoreDetailMapper.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/InStoreDetailMapper.java index 97177f1..84926f4 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/InStoreDetailMapper.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/InStoreDetailMapper.java @@ -1,7 +1,12 @@ package org.jeecg.modules.tms.mapper; import java.util.List; +import java.util.Map; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Param; import org.jeecg.modules.tms.entity.InStoreDetail; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -14,4 +19,5 @@ */ public interface InStoreDetailMapper extends BaseMapper<InStoreDetail> { + public IPage<Map<String, Object>> findPageList(IPage<Map> pageData, @Param(Constants.WRAPPER) Wrapper<Map> wrapper); } diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/OutStoreDetailMapper.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/OutStoreDetailMapper.java new file mode 100644 index 0000000..08a2c06 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/OutStoreDetailMapper.java @@ -0,0 +1,25 @@ +package org.jeecg.modules.tms.mapper; + +import java.util.List; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.tms.entity.OutStoreDetail; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.jeecg.modules.tms.entity.vo.OutStoreDetailVo; + +/** + * @Description: 宸ュ叿鍑哄簱娴佹按 + * @Author: jeecg-boot + * @Date: 2025-05-23 + * @Version: V1.0 + */ +public interface OutStoreDetailMapper extends BaseMapper<OutStoreDetail> { + + IPage<OutStoreDetailVo> queryPageList(Page<OutStoreDetailVo> page, + @Param(Constants.WRAPPER) Wrapper<OutStoreDetailVo> queryWrapper); +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/InStoreDetailMapper.xml b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/InStoreDetailMapper.xml index d062ac9..79cf799 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/InStoreDetailMapper.xml +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/InStoreDetailMapper.xml @@ -2,4 +2,41 @@ <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="org.jeecg.modules.tms.mapper.InStoreDetailMapper"> + <select id="queryPageList" resultType="map" parameterType="String"> + SELECT + t.id, + t.tool_id onlyCode, + t.in_storehouse_type inStorehouseType, + t.goods_shelves_id goodsShelvesId, + t.in_number inNumber, + t.in_storehouse_id inStorehouseId, + t.inbound_time inboundTime, + t.create_by createBy, + t.create_time createTime, + t.update_by updateBy, + t.update_time updateTime, + t1.tool_code toolCode, + t1.chinese_name chineseName, + t1.tool_model toolModel, + t2.classify_id classifyNum, + t3.inbound_num inboundNum, + t3.application_reason applicationReason, + t3.approval_date approvalDate, + t3.approval_opinion approvalOpinion, + t4.item_text operateType, + t5.realname handler, + t6.realname reviewer, + t7.item_value inStatus, + t8.item_value orderStatus + FROM tms_in_store_detail t + LEFT JOIN tms_base_tools t1 on t.tool_code = t1.id + LEFT JOIN tms_tools_classify t2 on t2.id = t1.classify_id + LEFT JOIN tms_inbound_order t3 on t3.id = t.in_storehouse_id + LEFT JOIN (select * from v_sys_dict where dict_code='inbound_operate_type') t4 on t4.item_value = t.operate_type + LEFT JOIN sys_user t5 on t5.username = t3.handler + LEFT JOIN sys_user t6 on t6.username = t3.reviewer + LEFT JOIN (select * from v_sys_dict where dict_code='in_status') t7 on t7.item_value = t3.in_status + LEFT JOIN (select * from v_sys_dict where dict_code='in_bill_status') t8 on t8.item_value = t3.order_status + ${ew.customSqlSegment} + </select> </mapper> \ No newline at end of file diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/InboundDetailMapper.xml b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/InboundDetailMapper.xml index 4ef950a..49ef0c6 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/InboundDetailMapper.xml +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/InboundDetailMapper.xml @@ -7,15 +7,18 @@ t1.id, t3.id toolCodeId, t1.in_storage_quantity inStorageQuantity, + t1.in_actual_count inActualCount, t3.tool_code toolCode, t3.chinese_name chineseName, t3.tool_model toolModel, - t5.item_text applicationType + t5.item_text applicationType, + t6.classify_id classifyNum from tms_inbound_detail t1 left join tms_inbound_order t2 on t1.in_storehouse_id = t2.id left join tms_base_tools t3 on t3.id = t1.tool_code left join tms_tools_config_property t4 on t4.tool_code = t1.tool_code left join (select * from v_sys_dict where dict_code = 'application_type') t5 on t5.item_value = t4.application_type + left join tms_tools_classify t6 on t6.id = t3.classify_id ${ew.customSqlSegment} </select> </mapper> \ No newline at end of file diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/OutStoreDetailMapper.xml b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/OutStoreDetailMapper.xml new file mode 100644 index 0000000..4956f45 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/OutStoreDetailMapper.xml @@ -0,0 +1,79 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="org.jeecg.modules.tms.mapper.OutStoreDetailMapper"> + + <select id="queryPageList" resultType="org.jeecg.modules.tms.entity.vo.OutStoreDetailVo"> + SELECT + t1.id, + t1.tool_code toolCode, + t1.tool_id toolId, + t1.out_storehouse_type outStorehouseType, + t1.goods_shelves_code goodsShelvesCode, + t1.out_number outNumber, + t1.out_storehouse_id outStorehouseId, + t1.operate_type operateType, + t1.create_by createBy, + t1.create_time createTime, + t2.chinese_name chineseName, + t2.tool_model toolModel, + t2.parama_table_name paramaTableName, + <choose> + <when test="ew.paramNameValuePairs.paramaTableName == '1'"> + t4.tool_material toolMaterial, + t4.part_material partMaterial + </when> + <when test="ew.paramNameValuePairs.paramaTableName == '2'"> + t5.tool_material toolMaterial, + t5.part_material partMaterial + </when> + <when test="ew.paramNameValuePairs.paramaTableName == '3'"> + t6.tool_material toolMaterial, + t6.part_material partMaterial + </when> + <when test="ew.paramNameValuePairs.paramaTableName == '4'"> + t7.tool_material toolMaterial, + t7.part_material partMaterial + </when> + <when test="ew.paramNameValuePairs.paramaTableName == '5'"> + t8.tool_material toolMaterial, + t8.part_material partMaterial + </when> + <when test="ew.paramNameValuePairs.paramaTableName == '6'"> + t9.tool_material toolMaterial, + t9.part_material partMaterial + </when> + <otherwise> + t10.tool_material toolMaterial, + t10.part_material partMaterial + </otherwise> + </choose> + FROM tms_out_store_detail t1 + LEFT JOIN tms_base_tools t2 on t1.tool_code = t2.id + LEFT JOIN tms_tools_config_property t3 on t3.tool_code = t2.id + LEFT JOIN tms_tools_classify t11 on t11.id = t2.classify_id + <choose> + <when test="ew.paramNameValuePairs.paramaTableName == '1'"> + LEFT JOIN tms_para_common_tool t4 on t4.tool_code = t2.id + </when> + <when test="ew.paramNameValuePairs.paramaTableName == '2'"> + LEFT JOIN tms_para_hole_tools t5 on t5.tool_code = t2.id + </when> + <when test="ew.paramNameValuePairs.paramaTableName == '3'"> + LEFT JOIN tms_para_threading_tool t6 on t6.tool_code = t2.id + </when> + <when test="ew.paramNameValuePairs.paramaTableName == '4'"> + LEFT JOIN tms_para_mill_tool t7 on t7.tool_code = t2.id + </when> + <when test="ew.paramNameValuePairs.paramaTableName == '5'"> + LEFT JOIN tms_para_turning_tools t8 on t8.tool_code = t2.id + </when> + <when test="ew.paramNameValuePairs.paramaTableName == '6'"> + LEFT JOIN tms_para_blade t9 on t9.tool_code = t2.id + </when> + <otherwise> + LEFT JOIN tms_para_common_tool t10 on t10.tool_code = t2.id + </otherwise> + </choose> + ${ew.customSqlSegment} + </select> +</mapper> \ No newline at end of file diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IInStoreDetailService.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IInStoreDetailService.java index 625733c..fbf6b9d 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IInStoreDetailService.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IInStoreDetailService.java @@ -1,7 +1,11 @@ package org.jeecg.modules.tms.service; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.jeecg.modules.tms.entity.InStoreDetail; import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.Map; /** * @Description: 鍏ュ簱鏄庣粏 @@ -11,4 +15,6 @@ */ public interface IInStoreDetailService extends IService<InStoreDetail> { + IPage<Map<String, Object>> findPageList(Integer pageNo, Integer pageSize, Map<String, String> query); + } diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IOutStoreDetailService.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IOutStoreDetailService.java new file mode 100644 index 0000000..ef66d57 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IOutStoreDetailService.java @@ -0,0 +1,20 @@ +package org.jeecg.modules.tms.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.jeecg.modules.tms.entity.OutStoreDetail; +import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.modules.tms.entity.vo.OutStoreDetailVo; + +import java.util.Map; + +/** + * @Description: 宸ュ叿鍑哄簱娴佹按 + * @Author: jeecg-boot + * @Date: 2025-05-23 + * @Version: V1.0 + */ +public interface IOutStoreDetailService extends IService<OutStoreDetail> { + + IPage<OutStoreDetailVo> queryPageList(Page<OutStoreDetailVo> page, Map<String, String[]> parameterMap); +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IOutboundOrderService.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IOutboundOrderService.java index b1171e7..f055c95 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IOutboundOrderService.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IOutboundOrderService.java @@ -6,6 +6,7 @@ import org.jeecg.modules.tms.entity.OutboundOrder; import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.modules.tms.entity.dto.OutBoundOrderFlowDto; +import org.jeecg.modules.tms.entity.dto.OutBoundRequestDto; import org.jeecg.modules.tms.entity.dto.OutboundOrderAndDetailDto; import org.springframework.beans.factory.annotation.Autowired; import java.io.Serializable; @@ -45,4 +46,6 @@ void submit(String id); void approvalProcess(OutBoundOrderFlowDto outBoundOrderFlowDto); + + void outBound(List<OutBoundRequestDto> outBoundRequestList); } diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/InStoreDetailServiceImpl.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/InStoreDetailServiceImpl.java index ebbce68..49fe595 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/InStoreDetailServiceImpl.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/InStoreDetailServiceImpl.java @@ -1,11 +1,23 @@ package org.jeecg.modules.tms.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.metadata.OrderItem; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.commons.lang.StringUtils; +import org.jeecg.common.exception.ExceptionCast; import org.jeecg.modules.tms.entity.InStoreDetail; +import org.jeecg.modules.tms.entity.ToolsClassify; import org.jeecg.modules.tms.mapper.InStoreDetailMapper; import org.jeecg.modules.tms.service.IInStoreDetailService; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; /** * @Description: 鍏ュ簱鏄庣粏 @@ -16,4 +28,23 @@ @Service public class InStoreDetailServiceImpl extends ServiceImpl<InStoreDetailMapper, InStoreDetail> implements IInStoreDetailService { + @Override + public IPage<Map<String, Object>> findPageList(Integer pageNo, Integer pageSize, Map<String, String> query) { + if (pageNo == null || pageNo < 1 || pageSize == null || pageSize < 1) { + ExceptionCast.cast("鍙傛暟閿欒"); + } + IPage<Map> pageData = new Page<Map>(pageNo, pageSize); + QueryWrapper<Map> queryWrapper = Wrappers.query(); + if (null != query) { + String classifyId = query.get("classifyId"); + if (StringUtils.isNotBlank(classifyId)) { + queryWrapper.eq("t2.id", classifyId); + } + // 鎺掑簭鍐欐硶 + List<OrderItem> orderItems = new ArrayList<>(); + orderItems.add(OrderItem.desc("t1.create_time")); + ((Page<Map>) pageData).setOrders(orderItems); + } + return super.getBaseMapper().findPageList(pageData,queryWrapper); + } } diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/OutStoreDetailServiceImpl.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/OutStoreDetailServiceImpl.java new file mode 100644 index 0000000..8087404 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/OutStoreDetailServiceImpl.java @@ -0,0 +1,36 @@ +package org.jeecg.modules.tms.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.jeecg.modules.tms.entity.OutStoreDetail; +import org.jeecg.modules.tms.entity.vo.OutStoreDetailVo; +import org.jeecg.modules.tms.mapper.OutStoreDetailMapper; +import org.jeecg.modules.tms.service.IOutStoreDetailService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import java.util.Map; + +/** + * @Description: 宸ュ叿鍑哄簱娴佹按 + * @Author: jeecg-boot + * @Date: 2025-05-23 + * @Version: V1.0 + */ +@Service +public class OutStoreDetailServiceImpl extends ServiceImpl<OutStoreDetailMapper, OutStoreDetail> implements IOutStoreDetailService { + + @Override + public IPage<OutStoreDetailVo> queryPageList(Page<OutStoreDetailVo> page, Map<String, String[]> parameterMap) { + QueryWrapper<OutStoreDetailVo> queryWrapper = Wrappers.query(); + String[] classifyIds = parameterMap.get("classifyId"); + if (classifyIds != null && classifyIds.length > 0) { + queryWrapper.eq("t11.classify_id", classifyIds[0]); + } + queryWrapper.orderByDesc("create_time"); + return this.baseMapper.queryPageList(page, queryWrapper); + } +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/OutboundOrderServiceImpl.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/OutboundOrderServiceImpl.java index d0f5668..f5cdf56 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/OutboundOrderServiceImpl.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/OutboundOrderServiceImpl.java @@ -26,22 +26,25 @@ import org.jeecg.modules.flowable.service.IFlowDefinitionService; import org.jeecg.modules.flowable.service.IFlowTaskService; import org.jeecg.modules.system.service.ISysBusinessCodeRuleService; -import org.jeecg.modules.tms.entity.OutboundOrder; -import org.jeecg.modules.tms.entity.OutboundDetail; +import org.jeecg.modules.tms.entity.*; import org.jeecg.modules.tms.entity.dto.OutBoundOrderFlowDto; +import org.jeecg.modules.tms.entity.dto.OutBoundRequestDto; import org.jeecg.modules.tms.entity.dto.OutboundOrderAndDetailDto; import org.jeecg.modules.tms.enums.OutBillStatus; import org.jeecg.modules.tms.enums.OutBoundStatusEnum; +import org.jeecg.modules.tms.enums.OutStorehouseType; +import org.jeecg.modules.tms.enums.ToolCirculationStatus; import org.jeecg.modules.tms.mapper.OutboundDetailMapper; import org.jeecg.modules.tms.mapper.OutboundOrderMapper; -import org.jeecg.modules.tms.service.IOutboundDetailService; -import org.jeecg.modules.tms.service.IOutboundOrderService; +import org.jeecg.modules.tms.service.*; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import java.io.Serializable; +import java.math.BigDecimal; import java.util.*; +import java.util.stream.Collectors; /** * @Description: tms_outbound_order @@ -55,6 +58,12 @@ @Autowired private IOutboundDetailService outboundDetailService; + @Autowired + private IToolLedgerService toolLedgerService; + @Autowired + private IToolLedgerDetailService toolLedgerDetailService; + @Autowired + private IOutStoreDetailService outStoreDetailService; @Autowired private ISysBusinessCodeRuleService businessCodeRuleService; @Autowired @@ -207,9 +216,13 @@ //鏍规嵁浠诲姟瀹屾垚缁撴灉鏇存柊鐢宠鍗曠姸鎬� if (result.isSuccess()) { - outboundOrder.setOrderStatus(outBoundOrderFlowDto.getStatus()); if (OutBillStatus.APPROVED.getValue().equals(outBoundOrderFlowDto.getStatus())) { outboundOrder.setOutStatus(OutBoundStatusEnum.NOT_OUTBOUND.getValue()); + outboundOrder.setOrderStatus(OutBillStatus.APPROVED.getValue()); + } + if (OutBillStatus.REJECTED.getValue().equals(outBoundOrderFlowDto.getStatus())) { + //濡傛灉椹冲洖锛屽鎵瑰崟鐘舵�佸洖鍒拌崏绋� + outboundOrder.setOrderStatus(OutBillStatus.DRAFT.getValue()); } outboundOrder.setAuditDate(new Date()); outboundOrder.setApprovalOpinion(outBoundOrderFlowDto.getApprovalOpinion()); @@ -217,6 +230,158 @@ } } + @Override + @Transactional(rollbackFor = Exception.class) + public void outBound(List<OutBoundRequestDto> outBoundRequestList) { + //鏍¢獙鏄惁鏉ヨ嚜涓�涓敵璇峰崟 + if (!fromOneApply(outBoundRequestList)) { + throw new JeecgBootException("鍑哄簱鏄庣粏蹇呴』鏉ヨ嚜鍚屼竴鍑哄簱鐢宠鍗曪紒"); + } + //鏄惁鍙嚭搴撴牎楠� + if (!readyToOutbound(outBoundRequestList)) { + throw new JeecgBootException("鏈粡瀹℃壒閫氳繃鐨勭敵璇峰崟涓嶈兘鍑哄簱锛�"); + } + //寮�濮嬪嚭搴� + OutboundOrder outboundOrder = getById(outBoundRequestList.get(0).getOutBoundOrderId()); + List<String> detailIds = outBoundRequestList.stream().map(OutBoundRequestDto::getOutboundDetailId).collect(Collectors.toList()); + List<OutboundDetail> outboundDetailList = outboundDetailService.listByIds(detailIds); + List<String> toolIdList = outboundDetailList.stream().map(OutboundDetail::getToolCode).collect(Collectors.toList()); + + Map<String, BigDecimal> outBoundRequestMap = outBoundRequestList.stream() + .collect(Collectors.toMap(OutBoundRequestDto::getOutboundDetailId, OutBoundRequestDto::getOutboundQuantity)); + //澶勭悊搴撳瓨鍙拌处鍙婂彴璐︽槑缁� + Map<String, ToolLedger> toolLedgerMap = toolLedgerService.list(new LambdaQueryWrapper<ToolLedger>().in(ToolLedger::getToolId, toolIdList)).stream() + .collect(Collectors.toMap(ToolLedger::getToolId, item -> item, (k1, k2) -> k1)); + + LambdaQueryWrapper<ToolLedgerDetail> queryWrapper = new LambdaQueryWrapper<>(); + for (int i = 0; i < outboundDetailList.size(); i++) { + if (i > 0) { + queryWrapper.or(); + } + OutboundDetail detail = outboundDetailList.get(i); + queryWrapper.and(wrapper -> + wrapper.eq(ToolLedgerDetail::getToolCode, detail.getToolCode()) + .eq(ToolLedgerDetail::getToolId, detail.getToolId()) //濡傛灉涓嶇鍒版妸锛岃瀛楁涓虹┖ + ); + } + List<ToolLedgerDetail> toolLedgerDetailList = toolLedgerDetailService.list(queryWrapper); + List<ToolLedger> toolLedgerUpdateList = CollectionUtil.newArrayList(); + List<ToolLedgerDetail> toolLedgerDetailUpdateList = CollectionUtil.newArrayList(); + List<OutStoreDetail> outStoreAddList = CollectionUtil.newArrayList(); + List<OutboundDetail> outboundDetailUpdateList = CollectionUtil.newArrayList(); + + for (OutboundDetail detail : outboundDetailList) { + //鏇存柊搴撳瓨鍙拌处 + ToolLedger toolLedger = toolLedgerMap.get(detail.getToolCode()); + BigDecimal outboundQuantity = outBoundRequestMap.get(detail.getId()); + OutStorehouseType outStorehouseType = OutStorehouseType.getByValue(outboundOrder.getOutStorehouseType()); + switch (outStorehouseType) { + case TOOL_BORROW: + toolLedger.setLendCount(toolLedger.getLendCount().add(outboundQuantity)); + break; + case MAINTENANCE_OUTBOUND: + toolLedger.setRepairCount(toolLedger.getRepairCount().add(outboundQuantity)); + break; + case CALIBRATION_OUTBOUND: + toolLedger.setDetectionCount(toolLedger.getDetectionCount().add(outboundQuantity)); + break; + case GRINDING_OUTBOUND: + toolLedger.setSharpeningCount(toolLedger.getSharpeningCount().add(outboundQuantity)); + break; + default: + throw new JeecgBootException("鏈煡鐨勫嚭搴撶被鍨嬶紒"); + } + toolLedgerUpdateList.add(toolLedger); + + //鏇存柊鍙拌处鏄庣粏 + toolLedgerDetailList.stream().filter(item -> item.getToolCode().equals(detail.getToolCode()) && item.getToolId().equals(detail.getToolId())) + .findFirst().ifPresent(item -> { + if (StrUtil.isNotBlank(item.getToolId())) { + item.setQuantity(BigDecimal.ZERO); + switch (outStorehouseType) { + case TOOL_BORROW: + item.setStatus(ToolCirculationStatus.BORROWED.getValue()); + break; + case MAINTENANCE_OUTBOUND: + item.setStatus(ToolCirculationStatus.REPAIRING.getValue()); + break; + case CALIBRATION_OUTBOUND: + item.setStatus(ToolCirculationStatus.INSPECTING.getValue()); + break; + case GRINDING_OUTBOUND: + item.setStatus(ToolCirculationStatus.GRINDING.getValue()); + break; + default: + throw new JeecgBootException("鏈煡鐨勫嚭搴撶被鍨嬶紒"); + } + } else { + item.setQuantity(item.getQuantity().subtract(outboundQuantity)); + } + toolLedgerDetailUpdateList.add(item); + }); + + //璁板綍鍑哄簱娴佹按 + OutStoreDetail outStoreDetail = new OutStoreDetail() + .setToolCode(detail.getToolCode()) + .setToolId(detail.getToolId()) + .setOutStorehouseType(outboundOrder.getOutStorehouseType()) + .setGoodsShelvesCode(detail.getOutboundLocation()) + .setOutNumber(outboundQuantity) + .setOutStorehouseId(outboundOrder.getId()) + .setOperateType("1");//1锛氭寜鐢宠鍗� + outStoreAddList.add(outStoreDetail); + + //鏇存柊鐢宠鍗曟槑缁� + detail.setOutActualCount(detail.getOutActualCount().add(outboundQuantity)); + detail.setOutboundTime(new Date()); + if (detail.getOutActualCount().compareTo(detail.getOutboundQuantity()) == 0) { + detail.setStatus(OutBoundStatusEnum.COMPLETED.getValue()); + } else { + detail.setStatus(OutBoundStatusEnum.PARTIAL_OUTBOUND.getValue()); + } + outboundDetailUpdateList.add(detail); + } + toolLedgerService.updateBatchById(toolLedgerUpdateList); + toolLedgerDetailService.updateBatchById(toolLedgerDetailUpdateList); + outStoreDetailService.saveBatch(outStoreAddList); + outboundDetailService.updateBatchById(outboundDetailUpdateList); + + //鏇存柊鐢宠鍗� + boolean allMatch = outboundDetailService.list(new LambdaQueryWrapper<OutboundDetail>() + .eq(OutboundDetail::getOutStorehouseId, outboundOrder.getId())) + .stream().filter(i -> !detailIds.contains(i.getId())) + .allMatch(i -> i.getStatus().equals(OutBoundStatusEnum.COMPLETED.getValue())); + List<OutboundDetail> partialOutboundList = outboundDetailUpdateList.stream() + .filter(i -> !i.getStatus().equals(OutBoundStatusEnum.COMPLETED.getValue())).collect(Collectors.toList()); + if (allMatch && partialOutboundList.isEmpty()) { + outboundOrder.setOutStatus(OutBoundStatusEnum.COMPLETED.getValue()); + } else { + outboundOrder.setOutStatus(OutBoundStatusEnum.PARTIAL_OUTBOUND.getValue()); + } + outboundOrder.setOutboundTime(new Date()); + updateById(outboundOrder); + } + + private boolean fromOneApply(List<OutBoundRequestDto> outBoundRequestList) { + long count = outBoundRequestList.stream().map(OutBoundRequestDto::getOutBoundOrderId).distinct().count(); + if (count > 1) { + return false; + } + List<String> outDetailIds = outBoundRequestList.stream().map(OutBoundRequestDto::getOutboundDetailId).collect(Collectors.toList()); + String outboundDetailId = outBoundRequestList.get(0).getOutboundDetailId(); + OutboundDetail outboundDetail = outboundDetailService.getById(outboundDetailId); + List<String> detailIds = outboundDetailService.list(new LambdaQueryWrapper<OutboundDetail>() + .eq(OutboundDetail::getOutStorehouseId, outboundDetail.getOutStorehouseId())).stream() + .map(OutboundDetail::getId).collect(Collectors.toList()); + return new HashSet<>(detailIds).containsAll(outDetailIds); + } + + private boolean readyToOutbound(List<OutBoundRequestDto> outBoundRequestList) { + String outBoundOrderId = outBoundRequestList.get(0).getOutBoundOrderId(); + OutboundOrder outboundOrder = getById(outBoundOrderId); + return OutBillStatus.APPROVED.getValue().equals(outboundOrder.getOrderStatus()); + } + public boolean triggerProcess(OutboundOrder outboundOrder) { flowCommonService.initActBusiness("鍗曞彿涓猴細" + outboundOrder.getOutNum() + " 鐨勫嚭搴撶敵璇凤紝寮�濮嬭繘琛屽鎵�", outboundOrder.getId(), "outboundOrderServiceImpl", "tool_out_storage", null); diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsClassifyServiceImpl.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsClassifyServiceImpl.java index d19e690..cee90e8 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsClassifyServiceImpl.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsClassifyServiceImpl.java @@ -87,7 +87,6 @@ @SuppressWarnings("unused") ToolsClassify toolsClassify = new ToolsClassify(); List<CommonGenericTree> list = new ArrayList<>(); Map<String, CommonGenericTree> map = new HashMap<>(); - CommonGenericTree<ToolsClassify> node = new CommonGenericTree<>(); if (CollectionUtils.isNotEmpty(toolsClassifyList)) { CommonGenericTree<ToolsClassify> tcNode; CommonGenericTree<ToolsClassify> childNode; @@ -102,7 +101,7 @@ tcNode.setValue(tc.getId()); tcNode.setDisabled(CommonConstant.STATUS_0.equals(tc.getStatus()) ? true : false); tcNode.setRField1(tc.getClassifyId()); - tcNode.setRField2(getBaseParent(tc.getId(), 0).getClassifyId()); + //tcNode.setRField2(getBaseParent(tc.getId(), 0).getClassifyId()); tcNode.setEntity(tc); list.add(tcNode); map.put(tc.getId(), tcNode); @@ -117,7 +116,7 @@ childNode.setValue(tc.getId()); childNode.setDisabled(CommonConstant.STATUS_0.equals(tc.getStatus()) ? true : false); childNode.setRField1(tc.getClassifyId()); - childNode.setRField2(getBaseParent(tc.getId(), 0).getClassifyId()); + //childNode.setRField2(getBaseParent(tc.getId(), 0).getClassifyId()); childNode.setEntity(tc); tcNode.addChildren(childNode); map.put(child.getId(), childNode); -- Gitblit v1.9.3