From cbd027b507507630224d1cdb8ae4542a95760a8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?yinjinlu-pc=5C=E5=B0=B9=E9=87=91=E8=B7=AF?= <411641505@qq.com> Date: Sun, 12 Nov 2023 20:09:09 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=BB=E5=8A=A8=E7=AB=AF=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mobile/MdClientMobController.java | 37 ++++ .../mobile/WmPackageLineMobController.java | 87 ++++++++ .../mobile/WmPackageMobController.java | 156 ++++++++++++++ .../mobile/WmProductRecptMobController.java | 183 +++++++++++++++++ .../WmProductRectpLineMobController.java | 134 ++++++++++++ .../WmProductSalseLineMobController.java | 132 ++++++++++++ .../mobile/WmProductSalseMobController.java | 181 ++++++++++++++++ .../mobile/WmRtSalseLineMobController.java | 157 ++++++++++++++ .../mobile/WmRtSalseMobController.java | 175 ++++++++++++++++ .../controller/mobile/WmSnMobController.java | 124 +++++++++++ .../WmStockTakingLineMobController.java | 101 +++++++++ .../mobile/WmStockTakingMobController.java | 173 ++++++++++++++++ .../WmStockTakingResultMobController.java | 89 ++++++++ .../mobile/WmTransferLineMobController.java | 194 ++++++++++++++++++ .../mobile/WmTransferMobController.java | 185 +++++++++++++++++ 15 files changed, 2108 insertions(+) create mode 100644 ktg-mes/src/main/java/com/ktg/mes/md/controller/mobile/MdClientMobController.java create mode 100644 ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmPackageLineMobController.java create mode 100644 ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmPackageMobController.java create mode 100644 ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmProductRecptMobController.java create mode 100644 ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmProductRectpLineMobController.java create mode 100644 ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmProductSalseLineMobController.java create mode 100644 ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmProductSalseMobController.java create mode 100644 ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmRtSalseLineMobController.java create mode 100644 ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmRtSalseMobController.java create mode 100644 ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmSnMobController.java create mode 100644 ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmStockTakingLineMobController.java create mode 100644 ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmStockTakingMobController.java create mode 100644 ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmStockTakingResultMobController.java create mode 100644 ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmTransferLineMobController.java create mode 100644 ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmTransferMobController.java diff --git a/ktg-mes/src/main/java/com/ktg/mes/md/controller/mobile/MdClientMobController.java b/ktg-mes/src/main/java/com/ktg/mes/md/controller/mobile/MdClientMobController.java new file mode 100644 index 0000000..5084999 --- /dev/null +++ b/ktg-mes/src/main/java/com/ktg/mes/md/controller/mobile/MdClientMobController.java @@ -0,0 +1,37 @@ +package com.ktg.mes.md.controller.mobile; + +import com.ktg.common.core.controller.BaseController; +import com.ktg.common.core.page.TableDataInfo; +import com.ktg.mes.md.domain.MdClient; +import com.ktg.mes.md.service.IMdClientService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@Api("客户信息") +@RestController +@RequestMapping("/mobile/md/client") +public class MdClientMobController extends BaseController { + @Autowired + private IMdClientService mdClientService; + + /** + * 查询客户列表 + */ + @ApiOperation("查询客户清单(分页)") + @PreAuthorize("@ss.hasPermi('mes:md:client:list')") + @GetMapping("/list") + public TableDataInfo list(MdClient mdClient) + { + startPage(); + List list = mdClientService.selectMdClientList(mdClient); + return getDataTable(list); + } + +} diff --git a/ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmPackageLineMobController.java b/ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmPackageLineMobController.java new file mode 100644 index 0000000..c30c459 --- /dev/null +++ b/ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmPackageLineMobController.java @@ -0,0 +1,87 @@ +package com.ktg.mes.wm.controller.mobile; + +import com.ktg.common.annotation.Log; +import com.ktg.common.core.controller.BaseController; +import com.ktg.common.core.domain.AjaxResult; +import com.ktg.common.core.page.TableDataInfo; +import com.ktg.common.enums.BusinessType; +import com.ktg.common.utils.poi.ExcelUtil; +import com.ktg.mes.wm.domain.WmPackageLine; +import com.ktg.mes.wm.service.IWmPackageLineService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +@Api("装箱单明细") +@RestController +@RequestMapping("/mobile/wm/packageline") +public class WmPackageLineMobController extends BaseController { + @Autowired + private IWmPackageLineService wmPackageLineService; + + /** + * 查询装箱明细列表 + */ + @ApiOperation("查询装箱单明细信息列表接口") + @PreAuthorize("@ss.hasPermi('mes:wm:packageline:list')") + @GetMapping("/list") + public TableDataInfo list(WmPackageLine wmPackageLine) + { + startPage(); + List list = wmPackageLineService.selectWmPackageLineList(wmPackageLine); + return getDataTable(list); + } + + + /** + * 获取装箱明细详细信息 + */ + @ApiOperation("获取装箱单明细信息接口") + @PreAuthorize("@ss.hasPermi('mes:wm:packageline:query')") + @GetMapping(value = "/{lineId}") + public AjaxResult getInfo(@PathVariable("lineId") Long lineId) + { + return AjaxResult.success(wmPackageLineService.selectWmPackageLineByLineId(lineId)); + } + + /** + * 新增装箱明细 + */ + @ApiOperation("新增装箱单明细信息接口") + @PreAuthorize("@ss.hasPermi('mes:wm:packageline:add')") + @Log(title = "装箱明细", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody WmPackageLine wmPackageLine) + { + return toAjax(wmPackageLineService.insertWmPackageLine(wmPackageLine)); + } + + /** + * 修改装箱明细 + */ + @ApiOperation("修改装箱单明细信息接口") + @PreAuthorize("@ss.hasPermi('mes:wm:packageline:edit')") + @Log(title = "装箱明细", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody WmPackageLine wmPackageLine) + { + return toAjax(wmPackageLineService.updateWmPackageLine(wmPackageLine)); + } + + /** + * 删除装箱明细 + */ + @ApiOperation("删除装箱单明细") + @PreAuthorize("@ss.hasPermi('mes:wm:packageline:remove')") + @Log(title = "装箱明细", businessType = BusinessType.DELETE) + @DeleteMapping("/{lineIds}") + public AjaxResult remove(@PathVariable Long[] lineIds) + { + return toAjax(wmPackageLineService.deleteWmPackageLineByLineIds(lineIds)); + } +} diff --git a/ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmPackageMobController.java b/ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmPackageMobController.java new file mode 100644 index 0000000..4fd88e2 --- /dev/null +++ b/ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmPackageMobController.java @@ -0,0 +1,156 @@ +package com.ktg.mes.wm.controller.mobile; + +import com.ktg.common.annotation.Log; +import com.ktg.common.constant.UserConstants; +import com.ktg.common.core.controller.BaseController; +import com.ktg.common.core.domain.AjaxResult; +import com.ktg.common.core.page.TableDataInfo; +import com.ktg.common.enums.BusinessType; +import com.ktg.common.utils.StringUtils; +import com.ktg.common.utils.poi.ExcelUtil; +import com.ktg.mes.wm.domain.WmBarcode; +import com.ktg.mes.wm.domain.WmPackage; +import com.ktg.mes.wm.service.IWmBarcodeService; +import com.ktg.mes.wm.service.IWmPackageService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +@Api("装箱单") +@RestController +@RequestMapping("/mobile/wm/package") +public class WmPackageMobController extends BaseController { + @Autowired + private IWmPackageService wmPackageService; + + @Autowired + private IWmBarcodeService wmBarcodeService; + + /** + * 查询装箱单列表 + */ + @ApiOperation("装箱单清单查询接口") + @PreAuthorize("@ss.hasPermi('mes:wm:package:list')") + @GetMapping("/list") + public TableDataInfo list(WmPackage wmPackage) + { + startPage(); + List list = wmPackageService.selectWmPackageList(wmPackage); + return getDataTable(list); + } + + + /** + * 获取装箱单详细信息 + */ + @ApiOperation("获取装箱单详细信息接口") + @PreAuthorize("@ss.hasPermi('mes:wm:package:query')") + @GetMapping(value = "/{packageId}") + public AjaxResult getInfo(@PathVariable("packageId") Long packageId) + { + return AjaxResult.success(wmPackageService.selectWmPackageByPackageId(packageId)); + } + + /** + * 新增装箱单 + */ + @ApiOperation("新增装箱单基本信息接口") + @PreAuthorize("@ss.hasPermi('mes:wm:package:add')") + @Log(title = "装箱单", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody WmPackage wmPackage) + { + if(UserConstants.NOT_UNIQUE.equals(wmPackageService.checkPackgeCodeUnique(wmPackage))){ + return AjaxResult.error("装箱单编号已存在!"); + } + if(wmPackage.getParentId() !=null){ + WmPackage parentPackage = wmPackageService.selectWmPackageByPackageId(wmPackage.getParentId()); + if(StringUtils.isNotNull(parentPackage)){ + wmPackage.setAncestors(parentPackage.getAncestors()+","+parentPackage.getPackageId()); + } + } + + int ret =wmPackageService.insertWmPackage(wmPackage); + + //装箱单保存成功就自动生成对应的箱条码 + WmBarcode wmBarcode = new WmBarcode(); + wmBarcode.setBussinessId(wmPackage.getPackageId()); + wmBarcode.setBussinessCode(wmPackage.getPackageCode()); + wmBarcode.setBussinessName(wmPackage.getClientName()); + wmBarcode.setBarcodeType(UserConstants.BARCODE_TYPE_PACKAGE);//类型设置为箱条码 + wmBarcode.setBarcodeFormart(UserConstants.QR_CODE);//设置为二维码 + wmBarcode.setBarcodeContent(""+UserConstants.BARCODE_TYPE_PACKAGE+"-"+wmPackage.getPackageCode()); + String path =wmBarcodeService.generateBarcode(wmBarcode); + wmBarcode.setBarcodeUrl(path); + wmBarcode.setCreateBy(getUsername()); + wmBarcodeService.insertWmBarcode(wmBarcode); + + //将条码的URL更新上去 + wmPackage.setBarcodeId(wmBarcode.getBarcodeId()); + wmPackage.setBarcodeContent(wmBarcode.getBarcodeContent()); + wmPackage.setBarcodeUrl(path); + wmPackageService.updateWmPackage(wmPackage); + return AjaxResult.success(wmPackage); + } + + /** + * 修改装箱单 + */ + @ApiOperation("修改装箱单基本信息接口") + @PreAuthorize("@ss.hasPermi('mes:wm:package:edit')") + @Log(title = "装箱单", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody WmPackage wmPackage) + { + if(UserConstants.NOT_UNIQUE.equals(wmPackageService.checkPackgeCodeUnique(wmPackage))){ + return AjaxResult.error("装箱单编号已存在!"); + } + return toAjax(wmPackageService.updateWmPackage(wmPackage)); + } + + /** + * 添加子箱 + */ + @ApiOperation("装箱单添加子箱接口") + @PreAuthorize("@ss.hasPermi('mes:wm:package:edit')") + @Log(title = "装箱单", businessType = BusinessType.UPDATE) + @PutMapping("/addsub") + public AjaxResult addSubPackage(@RequestBody WmPackage wmPackage){ + //不能添加自己 + if(wmPackage.getPackageId().longValue() == wmPackage.getParentId().longValue()){ + return AjaxResult.error("不能添加自己为子箱!"); + } + + //已经有父箱的不能再次添加 + WmPackage subPackage = wmPackageService.selectWmPackageByPackageId(wmPackage.getPackageId()); + if(!"0".equals(subPackage.getAncestors())){ + return AjaxResult.error("当前子箱已经有外箱包装!"); + } + + //更新当前子箱的父箱列表 + WmPackage parentPackage = wmPackageService.selectWmPackageByPackageId(wmPackage.getParentId()); + if(StringUtils.isNotNull(parentPackage)){ + wmPackage.setAncestors(parentPackage.getAncestors()+","+parentPackage.getPackageId()); + } + + return toAjax(wmPackageService.updateWmPackage(wmPackage)); + } + + + /** + * 删除装箱单 + */ + @ApiOperation("删除装箱单接口") + @PreAuthorize("@ss.hasPermi('mes:wm:package:remove')") + @Log(title = "装箱单", businessType = BusinessType.DELETE) + @DeleteMapping("/{packageIds}") + public AjaxResult remove(@PathVariable Long[] packageIds) + { + return toAjax(wmPackageService.deleteWmPackageByPackageIds(packageIds)); + } +} diff --git a/ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmProductRecptMobController.java b/ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmProductRecptMobController.java new file mode 100644 index 0000000..a146b7a --- /dev/null +++ b/ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmProductRecptMobController.java @@ -0,0 +1,183 @@ +package com.ktg.mes.wm.controller.mobile; + +import cn.hutool.core.collection.CollUtil; +import com.ktg.common.annotation.Log; +import com.ktg.common.constant.UserConstants; +import com.ktg.common.core.controller.BaseController; +import com.ktg.common.core.domain.AjaxResult; +import com.ktg.common.core.page.TableDataInfo; +import com.ktg.common.enums.BusinessType; +import com.ktg.common.utils.StringUtils; +import com.ktg.mes.pro.domain.ProWorkorder; +import com.ktg.mes.pro.service.IProWorkorderService; +import com.ktg.mes.wm.domain.*; +import com.ktg.mes.wm.domain.tx.ProductRecptTxBean; +import com.ktg.mes.wm.service.*; +import com.ktg.system.strategy.AutoCodeUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + + +@Api("产品入库") +@RestController +@RequestMapping("/mobile/wm/productrecpt") +public class WmProductRecptMobController extends BaseController { + + @Autowired + private IWmProductRecptService wmProductRecptService; + + @Autowired + private IWmProductRecptLineService wmProductRecptLineService; + + @Autowired + private IStorageCoreService storageCoreService; + + @Autowired + private IProWorkorderService proWorkorderService; + + @Autowired + private AutoCodeUtil autoCodeUtil; + + /** + * 查询产品入库录列表 + */ + @ApiOperation("查询产品入库单清单接口") + @PreAuthorize("@ss.hasPermi('mes:wm:productrecpt:list')") + @GetMapping("/list") + public TableDataInfo list(WmProductRecpt wmProductRecpt) + { + startPage(); + List list = wmProductRecptService.selectWmProductRecptList(wmProductRecpt); + return getDataTable(list); + } + + + /** + * 获取产品入库录详细信息 + */ + @ApiOperation("获取产品入库单明细信息接口") + @PreAuthorize("@ss.hasPermi('mes:wm:productrecpt:query')") + @GetMapping(value = "/{recptId}") + public AjaxResult getInfo(@PathVariable("recptId") Long recptId) + { + return AjaxResult.success(wmProductRecptService.selectWmProductRecptByRecptId(recptId)); + } + + /** + * 新增产品入库记录 + */ + @ApiOperation("新增产品入库单基本信息接口") + @PreAuthorize("@ss.hasPermi('mes:wm:productrecpt:add')") + @Log(title = "产品入库记录", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody WmProductRecpt wmProductRecpt) + { + if(StringUtils.isNotNull(wmProductRecpt.getRecptCode())){ + if(UserConstants.NOT_UNIQUE.equals(wmProductRecptService.checkUnique(wmProductRecpt))){ + return AjaxResult.error("入库单编号已存在!"); + } + }else { + wmProductRecpt.setRecptCode(autoCodeUtil.genSerialCode(UserConstants.PRODUCTRECPT_CODE,"")); + } + + + if(StringUtils.isNotNull(wmProductRecpt.getWorkorderId())){ + ProWorkorder workorder = proWorkorderService.selectProWorkorderByWorkorderId(wmProductRecpt.getWorkorderId()); + wmProductRecpt.setWorkorderCode(workorder.getWorkorderCode()); + wmProductRecpt.setWorkorderName(workorder.getWorkorderName()); + } + + wmProductRecpt.setCreateBy(getUsername()); + wmProductRecptService.insertWmProductRecpt(wmProductRecpt); + return AjaxResult.success(wmProductRecpt); + } + + /** + * 修改产品入库录 + */ + @ApiOperation("编辑产品入库单基本信息接口") + @PreAuthorize("@ss.hasPermi('mes:wm:productrecpt:edit')") + @Log(title = "产品入库记录", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody WmProductRecpt wmProductRecpt) + { + if(UserConstants.NOT_UNIQUE.equals(wmProductRecptService.checkUnique(wmProductRecpt))){ + return AjaxResult.error("入库单编号已存在!"); + } + + if(StringUtils.isNotNull(wmProductRecpt.getWorkorderId())){ + ProWorkorder workorder = proWorkorderService.selectProWorkorderByWorkorderId(wmProductRecpt.getWorkorderId()); + wmProductRecpt.setWorkorderCode(workorder.getWorkorderCode()); + wmProductRecpt.setWorkorderName(workorder.getWorkorderName()); + } + + return toAjax(wmProductRecptService.updateWmProductRecpt(wmProductRecpt)); + } + + /** + * 删除产品入库录 + */ + @ApiOperation("删除产品入库单接口") + @PreAuthorize("@ss.hasPermi('mes:wm:productrecpt:remove')") + @Log(title = "产品入库记录", businessType = BusinessType.DELETE) + @Transactional + @DeleteMapping("/{recptIds}") + public AjaxResult remove(@PathVariable Long[] recptIds) + { + for (Long recptId: recptIds + ) { + WmProductRecpt recpt = wmProductRecptService.selectWmProductRecptByRecptId(recptId); + if(!UserConstants.ORDER_STATUS_PREPARE.equals(recpt.getStatus())){ + return AjaxResult.error("只能删除草稿状态的单据!"); + } + wmProductRecptLineService.deleteByRecptId(recptId); + } + return toAjax(wmProductRecptService.deleteWmProductRecptByRecptIds(recptIds)); + } + + /** + * 执行入库 + * @return + */ + @ApiOperation("产品入库单执行入库接口") + @PreAuthorize("@ss.hasPermi('mes:wm:productrecpt:edit')") + @Log(title = "产品入库记录", businessType = BusinessType.UPDATE) + @Transactional + @PutMapping("/{recptId}") + public AjaxResult execute(@PathVariable Long recptId){ + WmProductRecpt recpt = wmProductRecptService.selectWmProductRecptByRecptId(recptId); + + //单据有效性 + if(!StringUtils.isNotNull(recpt)){ + return AjaxResult.error("无效单据"); + } + + //先检查单据状态 + if(UserConstants.ORDER_STATUS_FINISHED.equals(recpt.getStatus())){ + return AjaxResult.error("当前单据已提交!"); + } + + + WmProductRecptLine param = new WmProductRecptLine(); + param.setRecptId(recptId); + List lines = wmProductRecptLineService.selectWmProductRecptLineList(param); + if(CollUtil.isEmpty(lines)){ + return AjaxResult.error("请添加要入库的产品"); + } + + List beans = wmProductRecptService.getTxBean(recptId); + storageCoreService.processProductRecpt(beans); + + recpt.setStatus(UserConstants.ORDER_STATUS_FINISHED); + wmProductRecptService.updateWmProductRecpt(recpt); + + return AjaxResult.success(); + } + +} diff --git a/ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmProductRectpLineMobController.java b/ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmProductRectpLineMobController.java new file mode 100644 index 0000000..6d1a0b2 --- /dev/null +++ b/ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmProductRectpLineMobController.java @@ -0,0 +1,134 @@ +package com.ktg.mes.wm.controller.mobile; + +import com.ktg.common.annotation.Log; +import com.ktg.common.core.controller.BaseController; +import com.ktg.common.core.domain.AjaxResult; +import com.ktg.common.core.page.TableDataInfo; +import com.ktg.common.enums.BusinessType; +import com.ktg.common.utils.StringUtils; +import com.ktg.mes.wm.domain.WmProductRecptLine; +import com.ktg.mes.wm.domain.WmStorageArea; +import com.ktg.mes.wm.domain.WmStorageLocation; +import com.ktg.mes.wm.domain.WmWarehouse; +import com.ktg.mes.wm.service.IWmProductRecptLineService; +import com.ktg.mes.wm.service.IWmStorageAreaService; +import com.ktg.mes.wm.service.IWmStorageLocationService; +import com.ktg.mes.wm.service.IWmWarehouseService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Api("产品入库明细") +@RestController +@RequestMapping("/mobile/wm/productrecptline") +public class WmProductRectpLineMobController extends BaseController { + + @Autowired + private IWmProductRecptLineService wmProductRecptLineService; + + @Autowired + private IWmWarehouseService wmWarehouseService; + + @Autowired + private IWmStorageLocationService wmStorageLocationService; + + @Autowired + private IWmStorageAreaService wmStorageAreaService; + + /** + * 查询产品入库记录行列表 + */ + @ApiOperation("查询产品入库单明细清单接口") + @PreAuthorize("@ss.hasPermi('mes:wm:productrecptline:list')") + @GetMapping("/list") + public TableDataInfo list(WmProductRecptLine wmProductRecptLine) + { + startPage(); + List list = wmProductRecptLineService.selectWmProductRecptLineList(wmProductRecptLine); + return getDataTable(list); + } + + + /** + * 获取产品入库记录行详细信息 + */ + @ApiOperation("获取产品入库明细详情") + @PreAuthorize("@ss.hasPermi('mes:wm:productrecptline:query')") + @GetMapping(value = "/{lineId}") + public AjaxResult getInfo(@PathVariable("lineId") Long lineId) + { + return AjaxResult.success(wmProductRecptLineService.selectWmProductRecptLineByLineId(lineId)); + } + + /** + * 新增产品入库记录行 + */ + @ApiOperation("新增产品入库明细记录") + @PreAuthorize("@ss.hasPermi('mes:wm:productrecptline:add')") + @Log(title = "产品入库记录行", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody WmProductRecptLine wmProductRecptLine) + { + if(StringUtils.isNotNull(wmProductRecptLine.getWarehouseId())){ + WmWarehouse warehouse = wmWarehouseService.selectWmWarehouseByWarehouseId(wmProductRecptLine.getWarehouseId()); + wmProductRecptLine.setWarehouseCode(warehouse.getWarehouseCode()); + wmProductRecptLine.setWarehouseName(warehouse.getWarehouseName()); + } + if(StringUtils.isNotNull(wmProductRecptLine.getLocationId())){ + WmStorageLocation location = wmStorageLocationService.selectWmStorageLocationByLocationId(wmProductRecptLine.getLocationId()); + wmProductRecptLine.setLocationCode(location.getLocationCode()); + wmProductRecptLine.setLocationName(location.getLocationName()); + } + if(StringUtils.isNotNull(wmProductRecptLine.getAreaId())){ + WmStorageArea area = wmStorageAreaService.selectWmStorageAreaByAreaId(wmProductRecptLine.getAreaId()); + wmProductRecptLine.setAreaCode(area.getAreaCode()); + wmProductRecptLine.setAreaName(area.getAreaName()); + } + wmProductRecptLine.setCreateBy(getUsername()); + wmProductRecptLineService.insertWmProductRecptLine(wmProductRecptLine); + return AjaxResult.success(wmProductRecptLine); + } + + /** + * 修改产品入库记录行 + */ + @ApiOperation("编辑产品入库明细记录") + @PreAuthorize("@ss.hasPermi('mes:wm:productrecptline:edit')") + @Log(title = "产品入库记录行", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody WmProductRecptLine wmProductRecptLine) + { + if(StringUtils.isNotNull(wmProductRecptLine.getWarehouseId())){ + WmWarehouse warehouse = wmWarehouseService.selectWmWarehouseByWarehouseId(wmProductRecptLine.getWarehouseId()); + wmProductRecptLine.setWarehouseCode(warehouse.getWarehouseCode()); + wmProductRecptLine.setWarehouseName(warehouse.getWarehouseName()); + } + if(StringUtils.isNotNull(wmProductRecptLine.getLocationId())){ + WmStorageLocation location = wmStorageLocationService.selectWmStorageLocationByLocationId(wmProductRecptLine.getLocationId()); + wmProductRecptLine.setLocationCode(location.getLocationCode()); + wmProductRecptLine.setLocationName(location.getLocationName()); + } + if(StringUtils.isNotNull(wmProductRecptLine.getAreaId())){ + WmStorageArea area = wmStorageAreaService.selectWmStorageAreaByAreaId(wmProductRecptLine.getAreaId()); + wmProductRecptLine.setAreaCode(area.getAreaCode()); + wmProductRecptLine.setAreaName(area.getAreaName()); + } + return toAjax(wmProductRecptLineService.updateWmProductRecptLine(wmProductRecptLine)); + } + + /** + * 删除产品入库记录行 + */ + @ApiOperation("删除产品入库明细记录") + @PreAuthorize("@ss.hasPermi('mes:wm:productrecptline:remove')") + @Log(title = "产品入库记录行", businessType = BusinessType.DELETE) + @DeleteMapping("/{lineIds}") + public AjaxResult remove(@PathVariable Long[] lineIds) + { + return toAjax(wmProductRecptLineService.deleteWmProductRecptLineByLineIds(lineIds)); + } +} diff --git a/ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmProductSalseLineMobController.java b/ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmProductSalseLineMobController.java new file mode 100644 index 0000000..d87fee1 --- /dev/null +++ b/ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmProductSalseLineMobController.java @@ -0,0 +1,132 @@ +package com.ktg.mes.wm.controller.mobile; + +import com.ktg.common.annotation.Log; +import com.ktg.common.core.controller.BaseController; +import com.ktg.common.core.domain.AjaxResult; +import com.ktg.common.core.page.TableDataInfo; +import com.ktg.common.enums.BusinessType; +import com.ktg.common.utils.StringUtils; +import com.ktg.mes.wm.domain.WmMaterialStock; +import com.ktg.mes.wm.domain.WmProductSalseLine; +import com.ktg.mes.wm.service.IWmMaterialStockService; +import com.ktg.mes.wm.service.IWmProductSalseLineService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Api("产品销售出库明细") +@RestController +@RequestMapping("/mobile/wm/productsalseline") +public class WmProductSalseLineMobController extends BaseController { + @Autowired + private IWmProductSalseLineService wmProductSalseLineService; + + @Autowired + private IWmMaterialStockService wmMaterialStockService; + + /** + * + * 查询产品销售出库行列表 + */ + @ApiOperation("查询销售出库行列表接口") + @PreAuthorize("@ss.hasPermi('mes:wm:productsalseline:list')") + @GetMapping("/list") + public TableDataInfo list(WmProductSalseLine wmProductSalseLine) + { + startPage(); + List list = wmProductSalseLineService.selectWmProductSalseLineList(wmProductSalseLine); + return getDataTable(list); + } + + + /** + * 获取产品销售出库行详细信息 + */ + @ApiOperation("获取销售出库行信息明细接口") + @PreAuthorize("@ss.hasPermi('mes:wm:productsalseline:query')") + @GetMapping(value = "/{lineId}") + public AjaxResult getInfo(@PathVariable("lineId") Long lineId) + { + return AjaxResult.success(wmProductSalseLineService.selectWmProductSalseLineByLineId(lineId)); + } + + /** + * 新增产品销售出库行 + */ + @ApiOperation("新增销售出库信息明细信息接口") + @PreAuthorize("@ss.hasPermi('mes:wm:productsalseline:add')") + @Log(title = "产品销售出库行", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody WmProductSalseLine wmProductSalseLine) + { + if(StringUtils.isNotNull(wmProductSalseLine.getMaterialStockId())){ + WmMaterialStock stock = wmMaterialStockService.selectWmMaterialStockByMaterialStockId(wmProductSalseLine.getMaterialStockId()); + wmProductSalseLine.setItemId(stock.getItemId()); + wmProductSalseLine.setItemCode(stock.getItemCode()); + wmProductSalseLine.setItemName(stock.getItemName()); + wmProductSalseLine.setSpecification(stock.getSpecification()); + wmProductSalseLine.setUnitOfMeasure(stock.getUnitOfMeasure()); + wmProductSalseLine.setBatchCode(stock.getBatchCode()); + wmProductSalseLine.setWarehouseId(stock.getWarehouseId()); + wmProductSalseLine.setWarehouseCode(stock.getWarehouseCode()); + wmProductSalseLine.setWarehouseName(stock.getWarehouseName()); + wmProductSalseLine.setLocationId(stock.getLocationId()); + wmProductSalseLine.setLocationCode(stock.getLocationCode()); + wmProductSalseLine.setLocationName(stock.getLocationName()); + wmProductSalseLine.setAreaId(stock.getAreaId()); + wmProductSalseLine.setAreaCode(stock.getAreaCode()); + wmProductSalseLine.setAreaName(stock.getAreaName()); + } + + wmProductSalseLine.setCreateBy(getUsername()); + wmProductSalseLineService.insertWmProductSalseLine(wmProductSalseLine); + return AjaxResult.success(wmProductSalseLine); + } + + /** + * 修改产品销售出库行 + */ + @ApiOperation("编辑销售出库明细信息接口") + @PreAuthorize("@ss.hasPermi('mes:wm:productsalseline:edit')") + @Log(title = "产品销售出库行", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody WmProductSalseLine wmProductSalseLine) + { + if(StringUtils.isNotNull(wmProductSalseLine.getMaterialStockId())){ + WmMaterialStock stock = wmMaterialStockService.selectWmMaterialStockByMaterialStockId(wmProductSalseLine.getMaterialStockId()); + wmProductSalseLine.setItemId(stock.getItemId()); + wmProductSalseLine.setItemCode(stock.getItemCode()); + wmProductSalseLine.setItemName(stock.getItemName()); + wmProductSalseLine.setSpecification(stock.getSpecification()); + wmProductSalseLine.setUnitOfMeasure(stock.getUnitOfMeasure()); + wmProductSalseLine.setBatchCode(stock.getBatchCode()); + wmProductSalseLine.setWarehouseId(stock.getWarehouseId()); + wmProductSalseLine.setWarehouseCode(stock.getWarehouseCode()); + wmProductSalseLine.setWarehouseName(stock.getWarehouseName()); + wmProductSalseLine.setLocationId(stock.getLocationId()); + wmProductSalseLine.setLocationCode(stock.getLocationCode()); + wmProductSalseLine.setLocationName(stock.getLocationName()); + wmProductSalseLine.setAreaId(stock.getAreaId()); + wmProductSalseLine.setAreaCode(stock.getAreaCode()); + wmProductSalseLine.setAreaName(stock.getAreaName()); + } + + return toAjax(wmProductSalseLineService.updateWmProductSalseLine(wmProductSalseLine)); + } + + /** + * 删除产品销售出库行 + */ + @ApiOperation("删除销售出库明细信息接口") + @PreAuthorize("@ss.hasPermi('mes:wm:productsalseline:remove')") + @Log(title = "产品销售出库行", businessType = BusinessType.DELETE) + @DeleteMapping("/{lineIds}") + public AjaxResult remove(@PathVariable Long[] lineIds) + { + return toAjax(wmProductSalseLineService.deleteWmProductSalseLineByLineIds(lineIds)); + } +} diff --git a/ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmProductSalseMobController.java b/ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmProductSalseMobController.java new file mode 100644 index 0000000..544a941 --- /dev/null +++ b/ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmProductSalseMobController.java @@ -0,0 +1,181 @@ +package com.ktg.mes.wm.controller.mobile; + +import cn.hutool.core.collection.CollectionUtil; +import com.ktg.common.annotation.Log; +import com.ktg.common.constant.UserConstants; +import com.ktg.common.core.controller.BaseController; +import com.ktg.common.core.domain.AjaxResult; +import com.ktg.common.core.page.TableDataInfo; +import com.ktg.common.enums.BusinessType; +import com.ktg.common.utils.StringUtils; +import com.ktg.common.utils.poi.ExcelUtil; +import com.ktg.mes.md.domain.MdClient; +import com.ktg.mes.md.service.IMdClientService; +import com.ktg.mes.wm.domain.*; +import com.ktg.mes.wm.domain.tx.ProductSalseTxBean; +import com.ktg.mes.wm.service.*; +import com.ktg.system.strategy.AutoCodeUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +@Api("产品销售出库") +@RestController +@RequestMapping("/mobile/wm/productsalse") +public class WmProductSalseMobController extends BaseController { + @Autowired + private IWmProductSalseService wmProductSalseService; + + @Autowired + private IWmProductSalseLineService wmProductSalseLineService; + + @Autowired + private IWmWarehouseService wmWarehouseService; + + @Autowired + private IWmStorageLocationService wmStorageLocationService; + + @Autowired + private IWmStorageAreaService wmStorageAreaService; + + @Autowired + private IStorageCoreService storageCoreService; + + @Autowired + private IMdClientService mdClientService; + + @Autowired + private AutoCodeUtil autoCodeUtil; + + /** + * 查询销售出库单列表 + */ + @ApiOperation("查询销售出库单清单接口") + @PreAuthorize("@ss.hasPermi('mes:wm:productsalse:list')") + @GetMapping("/list") + public TableDataInfo list(WmProductSalse wmProductSalse) + { + startPage(); + List list = wmProductSalseService.selectWmProductSalseList(wmProductSalse); + return getDataTable(list); + } + + + /** + * 获取销售出库单详细信息 + */ + @ApiOperation("获取销售出库单明细信息接口") + @PreAuthorize("@ss.hasPermi('mes:wm:productsalse:query')") + @GetMapping(value = "/{salseId}") + public AjaxResult getInfo(@PathVariable("salseId") Long salseId) + { + return AjaxResult.success(wmProductSalseService.selectWmProductSalseBySalseId(salseId)); + } + + /** + * 新增销售出库单 + */ + @ApiOperation("新增销售出库单基本信息接口") + @PreAuthorize("@ss.hasPermi('mes:wm:productsalse:add')") + @Log(title = "销售出库单", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody WmProductSalse wmProductSalse) + { + if(StringUtils.isNotNull(wmProductSalse.getSalseCode())){ + if(UserConstants.NOT_UNIQUE.equals(wmProductSalseService.checkUnique(wmProductSalse))){ + return AjaxResult.error("出库单编号已存在!"); + } + }else { + wmProductSalse.setSalseCode(autoCodeUtil.genSerialCode(UserConstants.PRODUCTSALSE_CODE,"")); + } + + if(StringUtils.isNotNull(wmProductSalse.getClientId())){ + MdClient client = mdClientService.selectMdClientByClientId(wmProductSalse.getClientId()); + wmProductSalse.setClientCode(client.getClientCode()); + wmProductSalse.setClientName(client.getClientName()); + wmProductSalse.setClientNick(client.getClientNick()); + } + + wmProductSalse.setCreateBy(getUsername()); + wmProductSalseService.insertWmProductSalse(wmProductSalse); + return AjaxResult.success(wmProductSalse); + } + + /** + * 修改销售出库单 + */ + @ApiOperation("编辑销售出库单基本信息接口") + @PreAuthorize("@ss.hasPermi('mes:wm:productsalse:edit')") + @Log(title = "销售出库单", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody WmProductSalse wmProductSalse) + { + if(UserConstants.NOT_UNIQUE.equals(wmProductSalseService.checkUnique(wmProductSalse))){ + return AjaxResult.error("出库单编号已存在!"); + } + + if(StringUtils.isNotNull(wmProductSalse.getClientId())){ + MdClient client = mdClientService.selectMdClientByClientId(wmProductSalse.getClientId()); + wmProductSalse.setClientCode(client.getClientCode()); + wmProductSalse.setClientName(client.getClientName()); + wmProductSalse.setClientNick(client.getClientNick()); + } + + return toAjax(wmProductSalseService.updateWmProductSalse(wmProductSalse)); + } + + /** + * 删除销售出库单 + */ + @ApiOperation("删除销售出库单信息接口") + @PreAuthorize("@ss.hasPermi('mes:wm:productsalse:remove')") + @Log(title = "销售出库单", businessType = BusinessType.DELETE) + @Transactional + @DeleteMapping("/{salseIds}") + public AjaxResult remove(@PathVariable Long[] salseIds) + { + for (Long salseId: salseIds + ) { + WmProductSalse salse = wmProductSalseService.selectWmProductSalseBySalseId(salseId); + if(!UserConstants.ORDER_STATUS_PREPARE.equals(salse.getStatus())){ + return AjaxResult.error("只能删除草稿状态的单据!"); + } + + wmProductSalseLineService.deleteBySalseId(salseId); + } + return toAjax(wmProductSalseService.deleteWmProductSalseBySalseIds(salseIds)); + } + + /** + * 执行出库 + * @return + */ + @ApiOperation("执行销售出库接口") + @PreAuthorize("@ss.hasPermi('mes:wm:productsalse:edit')") + @Log(title = "销售出库单", businessType = BusinessType.UPDATE) + @Transactional + @PutMapping("/{salseId}") + public AjaxResult execute(@PathVariable Long salseId){ + WmProductSalse salse = wmProductSalseService.selectWmProductSalseBySalseId(salseId); + + WmProductSalseLine param = new WmProductSalseLine(); + param.setSalseId(salseId); + List lines = wmProductSalseLineService.selectWmProductSalseLineList(param); + if(CollectionUtil.isEmpty(lines)){ + return AjaxResult.error("出库物资不能为空"); + } + + List beans = wmProductSalseService.getTxBeans(salseId); + storageCoreService.processProductSalse(beans); + + salse.setStatus(UserConstants.ORDER_STATUS_FINISHED); + wmProductSalseService.updateWmProductSalse(salse); + return AjaxResult.success(); + } +} diff --git a/ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmRtSalseLineMobController.java b/ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmRtSalseLineMobController.java new file mode 100644 index 0000000..92a0927 --- /dev/null +++ b/ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmRtSalseLineMobController.java @@ -0,0 +1,157 @@ +package com.ktg.mes.wm.controller.mobile; + +import com.ktg.common.annotation.Log; +import com.ktg.common.core.controller.BaseController; +import com.ktg.common.core.domain.AjaxResult; +import com.ktg.common.core.page.TableDataInfo; +import com.ktg.common.enums.BusinessType; +import com.ktg.common.utils.StringUtils; +import com.ktg.common.utils.poi.ExcelUtil; +import com.ktg.mes.md.domain.MdItem; +import com.ktg.mes.md.service.IMdItemService; +import com.ktg.mes.wm.domain.WmRtSalseLine; +import com.ktg.mes.wm.domain.WmStorageArea; +import com.ktg.mes.wm.domain.WmStorageLocation; +import com.ktg.mes.wm.domain.WmWarehouse; +import com.ktg.mes.wm.service.IWmRtSalseLineService; +import com.ktg.mes.wm.service.IWmStorageAreaService; +import com.ktg.mes.wm.service.IWmStorageLocationService; +import com.ktg.mes.wm.service.IWmWarehouseService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.poi.hssf.record.pivottable.PageItemRecord; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +@Api("销售退货明细") +@RestController +@RequestMapping("/mobile/wm/rtsalseline") +public class WmRtSalseLineMobController extends BaseController { + + @Autowired + private IWmRtSalseLineService wmRtSalseLineService; + + @Autowired + private IWmWarehouseService wmWarehouseService; + + @Autowired + private IWmStorageLocationService wmStorageLocationService; + + @Autowired + private IWmStorageAreaService wmStorageAreaService; + + @Autowired + private IMdItemService mdItemService; + + /** + * 查询产品销售退货行列表 + */ + @ApiOperation("查询销售退货单明细列表接口") + @PreAuthorize("@ss.hasPermi('mes:wm:rtsalse:list')") + @GetMapping("/list") + public TableDataInfo list(WmRtSalseLine wmRtSalseLine) + { + startPage(); + List list = wmRtSalseLineService.selectWmRtSalseLineList(wmRtSalseLine); + return getDataTable(list); + } + + + /** + * 获取产品销售退货行详细信息 + */ + @PreAuthorize("@ss.hasPermi('mes:wm:rtsalse:query')") + @GetMapping(value = "/{lineId}") + public AjaxResult getInfo(@PathVariable("lineId") Long lineId) + { + return AjaxResult.success(wmRtSalseLineService.selectWmRtSalseLineByLineId(lineId)); + } + + /** + * 新增产品销售退货行 + */ + @ApiOperation("新增销售退货单明细接口") + @PreAuthorize("@ss.hasPermi('mes:wm:rtsalse:add')") + @Log(title = "产品销售退货行", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody WmRtSalseLine wmRtSalseLine) + { + if(StringUtils.isNotNull(wmRtSalseLine.getItemId())){ + MdItem item = mdItemService.selectMdItemById(wmRtSalseLine.getItemId()); + wmRtSalseLine.setItemCode(item.getItemCode()); + wmRtSalseLine.setItemName(item.getItemName()); + wmRtSalseLine.setSpecification(item.getSpecification()); + wmRtSalseLine.setUnitOfMeasure(item.getUnitOfMeasure()); + } + + if(StringUtils.isNotNull(wmRtSalseLine.getWarehouseId())){ + WmWarehouse warehouse = wmWarehouseService.selectWmWarehouseByWarehouseId(wmRtSalseLine.getWarehouseId()); + wmRtSalseLine.setWarehouseCode(warehouse.getWarehouseCode()); + wmRtSalseLine.setWarehouseName(warehouse.getWarehouseName()); + } + if(StringUtils.isNotNull(wmRtSalseLine.getLocationId())){ + WmStorageLocation location = wmStorageLocationService.selectWmStorageLocationByLocationId(wmRtSalseLine.getLocationId()); + wmRtSalseLine.setLocationCode(location.getLocationCode()); + wmRtSalseLine.setLocationName(location.getLocationName()); + } + if(StringUtils.isNotNull(wmRtSalseLine.getAreaId())){ + WmStorageArea area = wmStorageAreaService.selectWmStorageAreaByAreaId(wmRtSalseLine.getAreaId()); + wmRtSalseLine.setAreaCode(area.getAreaCode()); + wmRtSalseLine.setAreaName(area.getAreaName()); + } + wmRtSalseLine.setCreateBy(getUsername()); + return toAjax(wmRtSalseLineService.insertWmRtSalseLine(wmRtSalseLine)); + } + + /** + * 修改产品销售退货行 + */ + @ApiOperation("编辑销售退货单明细接口") + @PreAuthorize("@ss.hasPermi('mes:wm:rtsalse:edit')") + @Log(title = "产品销售退货行", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody WmRtSalseLine wmRtSalseLine) + { + if(StringUtils.isNotNull(wmRtSalseLine.getItemId())){ + MdItem item = mdItemService.selectMdItemById(wmRtSalseLine.getItemId()); + wmRtSalseLine.setItemCode(item.getItemCode()); + wmRtSalseLine.setItemName(item.getItemName()); + wmRtSalseLine.setSpecification(item.getSpecification()); + wmRtSalseLine.setUnitOfMeasure(item.getUnitOfMeasure()); + } + + if(StringUtils.isNotNull(wmRtSalseLine.getWarehouseId())){ + WmWarehouse warehouse = wmWarehouseService.selectWmWarehouseByWarehouseId(wmRtSalseLine.getWarehouseId()); + wmRtSalseLine.setWarehouseCode(warehouse.getWarehouseCode()); + wmRtSalseLine.setWarehouseName(warehouse.getWarehouseName()); + } + if(StringUtils.isNotNull(wmRtSalseLine.getLocationId())){ + WmStorageLocation location = wmStorageLocationService.selectWmStorageLocationByLocationId(wmRtSalseLine.getLocationId()); + wmRtSalseLine.setLocationCode(location.getLocationCode()); + wmRtSalseLine.setLocationName(location.getLocationName()); + } + if(StringUtils.isNotNull(wmRtSalseLine.getAreaId())){ + WmStorageArea area = wmStorageAreaService.selectWmStorageAreaByAreaId(wmRtSalseLine.getAreaId()); + wmRtSalseLine.setAreaCode(area.getAreaCode()); + wmRtSalseLine.setAreaName(area.getAreaName()); + } + return toAjax(wmRtSalseLineService.updateWmRtSalseLine(wmRtSalseLine)); + } + + /** + * 删除产品销售退货行 + */ + @ApiOperation("删除销售退货单明细接口") + @PreAuthorize("@ss.hasPermi('mes:wm:rtsalse:remove')") + @Log(title = "产品销售退货行", businessType = BusinessType.DELETE) + @DeleteMapping("/{lineIds}") + public AjaxResult remove(@PathVariable Long[] lineIds) + { + return toAjax(wmRtSalseLineService.deleteWmRtSalseLineByLineIds(lineIds)); + } + +} diff --git a/ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmRtSalseMobController.java b/ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmRtSalseMobController.java new file mode 100644 index 0000000..60cacc7 --- /dev/null +++ b/ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmRtSalseMobController.java @@ -0,0 +1,175 @@ +package com.ktg.mes.wm.controller.mobile; + +import com.ktg.common.annotation.Log; +import com.ktg.common.constant.UserConstants; +import com.ktg.common.core.controller.BaseController; +import com.ktg.common.core.domain.AjaxResult; +import com.ktg.common.core.page.TableDataInfo; +import com.ktg.common.enums.BusinessType; +import com.ktg.common.utils.StringUtils; +import com.ktg.common.utils.poi.ExcelUtil; +import com.ktg.mes.md.domain.MdClient; +import com.ktg.mes.md.service.IMdClientService; +import com.ktg.mes.wm.domain.*; +import com.ktg.mes.wm.domain.tx.RtSalseTxBean; +import com.ktg.mes.wm.service.*; +import com.ktg.system.strategy.AutoCodeUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +@Api("销售退货") +@RestController +@RequestMapping("/mobile/wm/rtsalse") +public class WmRtSalseMobController extends BaseController { + + @Autowired + private IWmRtSalseService wmRtSalseService; + + @Autowired + private IWmRtSalseLineService wmRtSalseLineService; + + @Autowired + private IStorageCoreService storageCoreService; + + @Autowired + private IMdClientService mdClientService; + + @Autowired + private AutoCodeUtil autoCodeUtil; + + /** + * 查询产品销售退货单列表 + */ + @ApiOperation("查询销售退货单列表接口") + @PreAuthorize("@ss.hasPermi('mes:wm:rtsalse:list')") + @GetMapping("/list") + public TableDataInfo list(WmRtSalse wmRtSalse) + { + startPage(); + List list = wmRtSalseService.selectWmRtSalseList(wmRtSalse); + return getDataTable(list); + } + + + /** + * 获取产品销售退货单详细信息 + */ + @ApiOperation("获取销售退货单详细信息接口") + @PreAuthorize("@ss.hasPermi('mes:wm:rtsalse:query')") + @GetMapping(value = "/{rtId}") + public AjaxResult getInfo(@PathVariable("rtId") Long rtId) + { + return AjaxResult.success(wmRtSalseService.selectWmRtSalseByRtId(rtId)); + } + + /** + * 新增产品销售退货单 + */ + @ApiOperation("新增销售退货单基本信息接口") + @PreAuthorize("@ss.hasPermi('mes:wm:rtsalse:add')") + @Log(title = "产品销售退货单", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody WmRtSalse wmRtSalse) + { + if(StringUtils.isNotNull(wmRtSalse.getRtCode())){ + if(UserConstants.NOT_UNIQUE.equals(wmRtSalseService.checkUnique(wmRtSalse))){ + return AjaxResult.error("退货单号已存在!"); + } + }else { + wmRtSalse.setRtCode(autoCodeUtil.genSerialCode(UserConstants.RTSALSE_CODE,"")); + } + + if(StringUtils.isNotNull(wmRtSalse.getClientId())){ + MdClient client = mdClientService.selectMdClientByClientId(wmRtSalse.getClientId()); + wmRtSalse.setClientCode(client.getClientCode()); + wmRtSalse.setClientName(client.getClientName()); + wmRtSalse.setClientNick(client.getClientNick()); + } + + wmRtSalse.setCreateBy(getUsername()); + wmRtSalseService.insertWmRtSalse(wmRtSalse); + return AjaxResult.success(wmRtSalse); + } + + /** + * 修改产品销售退货单 + */ + @ApiOperation("编辑销售退货单基本信息接口") + @PreAuthorize("@ss.hasPermi('mes:wm:rtsalse:edit')") + @Log(title = "产品销售退货单", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody WmRtSalse wmRtSalse) + { + if(UserConstants.NOT_UNIQUE.equals(wmRtSalseService.checkUnique(wmRtSalse))){ + return AjaxResult.error("退货单号已存在!"); + } + + if(StringUtils.isNotNull(wmRtSalse.getClientId())){ + MdClient client = mdClientService.selectMdClientByClientId(wmRtSalse.getClientId()); + wmRtSalse.setClientCode(client.getClientCode()); + wmRtSalse.setClientName(client.getClientName()); + wmRtSalse.setClientNick(client.getClientNick()); + } + + return toAjax(wmRtSalseService.updateWmRtSalse(wmRtSalse)); + } + + /** + * 删除产品销售退货单 + */ + @ApiOperation("删除销售退货单基本信息接口") + @PreAuthorize("@ss.hasPermi('mes:wm:rtsalse:remove')") + @Log(title = "产品销售退货单", businessType = BusinessType.DELETE) + @Transactional + @DeleteMapping("/{rtIds}") + public AjaxResult remove(@PathVariable Long[] rtIds) + { + for (Long rtId: rtIds + ) { + WmRtSalse rtSalse = wmRtSalseService.selectWmRtSalseByRtId(rtId); + if(!UserConstants.ORDER_STATUS_PREPARE.equals(rtSalse.getStatus())){ + return AjaxResult.error("只能删除草稿状态单据"); + } + + wmRtSalseLineService.deleteByRtId(rtId); + } + + return toAjax(wmRtSalseService.deleteWmRtSalseByRtIds(rtIds)); + } + + /** + * 执行退货 + * @param rtId + * @return + */ + @ApiOperation("执行销售退货接口") + @PreAuthorize("@ss.hasPermi('mes:wm:rtsalse:edit')") + @Log(title = "产品销售退货单", businessType = BusinessType.UPDATE) + @Transactional + @PutMapping("/{rtId}") + public AjaxResult execute(@PathVariable Long rtId){ + WmRtSalse rtSalse = wmRtSalseService.selectWmRtSalseByRtId(rtId); + WmRtSalseLine param = new WmRtSalseLine(); + param.setRtId(rtId); + List lines = wmRtSalseLineService.selectWmRtSalseLineList(param); + if(CollectionUtils.isEmpty(lines)){ + return AjaxResult.error("请添加退货单行信息!"); + } + + List beans = wmRtSalseService.getTxBeans(rtId); + + storageCoreService.processRtSalse(beans); + + rtSalse.setStatus(UserConstants.ORDER_STATUS_FINISHED); + wmRtSalseService.updateWmRtSalse(rtSalse); + return AjaxResult.success(); + } +} diff --git a/ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmSnMobController.java b/ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmSnMobController.java new file mode 100644 index 0000000..0e478db --- /dev/null +++ b/ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmSnMobController.java @@ -0,0 +1,124 @@ +package com.ktg.mes.wm.controller.mobile; + +import cn.hutool.core.date.DateUtil; +import com.ktg.common.annotation.Log; +import com.ktg.common.constant.UserConstants; +import com.ktg.common.core.controller.BaseController; +import com.ktg.common.core.domain.AjaxResult; +import com.ktg.common.core.page.TableDataInfo; +import com.ktg.common.enums.BusinessType; +import com.ktg.common.utils.poi.ExcelUtil; +import com.ktg.mes.wm.domain.WmSn; +import com.ktg.mes.wm.service.IWmSnService; +import com.ktg.system.strategy.AutoCodeUtil; +import io.swagger.annotations.Api; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.Date; +import java.util.List; + +@Api("SN码") +@RestController +@RequestMapping("/mobile/wm/sn") +public class WmSnMobController extends BaseController { + @Autowired + private IWmSnService wmSnService; + + @Autowired + private AutoCodeUtil autoCodeUtil; + + /** + * 查询SN码列表 + */ + @PreAuthorize("@ss.hasPermi('mes:wm:sn:list')") + @GetMapping("/list") + public TableDataInfo list(WmSn wmSn) + { + startPage(); + List list = wmSnService.selectWmSnList(wmSn); + return getDataTable(list); + } + + /** + * 查询SN码列表 + */ + @PreAuthorize("@ss.hasPermi('mes:wm:sn:list')") + @GetMapping("/listSn") + public TableDataInfo listSn(WmSn wmSn) + { + startPage(); + List list = wmSnService.selectSnList(wmSn); + return getDataTable(list); + } + + /** + * 导出SN码列表 + */ + @PreAuthorize("@ss.hasPermi('mes:wm:sn:export')") + @Log(title = "SN码", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, WmSn wmSn) + { + List list = wmSnService.selectWmSnList(wmSn); + ExcelUtil util = new ExcelUtil(WmSn.class); + util.exportExcel(response, list, "SN码数据"); + } + + /** + * 获取SN码详细信息 + */ + @PreAuthorize("@ss.hasPermi('mes:wm:sn:query')") + @GetMapping(value = "/{snId}") + public AjaxResult getInfo(@PathVariable("snId") Long snId) + { + return AjaxResult.success(wmSnService.selectWmSnBySnId(snId)); + } + + /** + * 新增SN码 + */ + @PreAuthorize("@ss.hasPermi('mes:wm:sn:add')") + @Log(title = "SN码", businessType = BusinessType.INSERT) + @Transactional + @PostMapping + public AjaxResult add(@RequestBody WmSn wmSn) + { + Date genDate = DateUtil.date(); + wmSn.setGenDate(genDate); + String SNCode= null; + if(wmSn.getSnNum()>0){ + for(int i=0;i list = wmStockTakingLineService.selectWmStockTakingLineList(wmStockTakingLine); + return getDataTable(list); + } + + + /** + * 获取库存盘点明细详细信息 + */ + @ApiOperation("查询库存盘点明细信息接口") + @PreAuthorize("@ss.hasPermi('wm:stocktakingline:query')") + @GetMapping(value = "/{lineId}") + public AjaxResult getInfo(@PathVariable("lineId") Long lineId) + { + return AjaxResult.success(wmStockTakingLineService.selectWmStockTakingLineByLineId(lineId)); + } + + /** + * 新增库存盘点明细 + */ + @ApiOperation("新增库存盘点明细接口") + @PreAuthorize("@ss.hasPermi('wm:stocktakingline:add')") + @Log(title = "库存盘点明细", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody WmStockTakingLine wmStockTakingLine) + { + return toAjax(wmStockTakingLineService.insertWmStockTakingLine(wmStockTakingLine)); + } + + /** + * 修改库存盘点明细 + */ + @ApiOperation("编辑库存盘点明细接口") + @PreAuthorize("@ss.hasPermi('wm:stocktakingline:edit')") + @Log(title = "库存盘点明细", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody WmStockTakingLine wmStockTakingLine) + { + return toAjax(wmStockTakingLineService.updateWmStockTakingLine(wmStockTakingLine)); + } + + /** + * 删除库存盘点明细 + */ + @ApiOperation("删除库存盘点明细接口") + @PreAuthorize("@ss.hasPermi('wm:stocktakingline:remove')") + @Log(title = "库存盘点明细", businessType = BusinessType.DELETE) + @DeleteMapping("/{lineIds}") + public AjaxResult remove(@PathVariable Long[] lineIds) + { + return toAjax(wmStockTakingLineService.deleteWmStockTakingLineByLineIds(lineIds)); + } +} diff --git a/ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmStockTakingMobController.java b/ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmStockTakingMobController.java new file mode 100644 index 0000000..b906c67 --- /dev/null +++ b/ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmStockTakingMobController.java @@ -0,0 +1,173 @@ +package com.ktg.mes.wm.controller.mobile; + +import java.util.List; + +import com.ktg.common.constant.UserConstants; +import com.ktg.common.utils.StringUtils; +import com.ktg.mes.wm.domain.*; +import com.ktg.mes.wm.service.IWmStockTakingLineService; +import com.ktg.mes.wm.service.IWmStockTakingResultService; +import com.ktg.mes.wm.service.IWmWarehouseService; +import com.ktg.system.strategy.AutoCodeUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.ktg.common.annotation.Log; +import com.ktg.common.core.controller.BaseController; +import com.ktg.common.core.domain.AjaxResult; +import com.ktg.common.enums.BusinessType; +import com.ktg.mes.wm.service.IWmStockTakingService; +import com.ktg.common.core.page.TableDataInfo; + +/** + * 库存盘点记录Controller + * + * @author yinjinlu + * @date 2023-08-17 + */ +@Api("物资盘点") +@RestController +@RequestMapping("/mobile/wm/stocktaking") +public class WmStockTakingMobController extends BaseController +{ + @Autowired + private IWmStockTakingService wmStockTakingService; + + @Autowired + private IWmStockTakingLineService wmStockTakingLineService; + + @Autowired + private IWmStockTakingResultService wmStockTakingResultService; + + @Autowired + private AutoCodeUtil autoCodeUtil; + + @Autowired + private IWmWarehouseService wmWarehouseService; + + /** + * 查询库存盘点记录列表 + */ + @ApiOperation("查询库存盘点单列表接口") + @PreAuthorize("@ss.hasPermi('mes:wm:stocktaking:list')") + @GetMapping("/list") + public TableDataInfo list(WmStockTaking wmStockTaking) + { + startPage(); + List list = wmStockTakingService.selectWmStockTakingList(wmStockTaking); + return getDataTable(list); + } + + /** + * 获取库存盘点记录详细信息 + */ + @ApiOperation("获取库存盘点单详情接口") + @PreAuthorize("@ss.hasPermi('mes:wm:stocktaking:query')") + @GetMapping(value = "/{takingId}") + public AjaxResult getInfo(@PathVariable("takingId") Long takingId) + { + return AjaxResult.success(wmStockTakingService.selectWmStockTakingByTakingId(takingId)); + } + + /** + * 新增库存盘点记录 + */ + @ApiOperation("新增库存盘点单基本信息接口") + @PreAuthorize("@ss.hasPermi('mes:wm:stocktaking:add')") + @Log(title = "库存盘点记录", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody WmStockTaking wmStockTaking) + { + if(StringUtils.isNotNull(wmStockTaking.getTakingCode())){ + if(UserConstants.NOT_UNIQUE.equals(wmStockTakingService.checkUnique(wmStockTaking))){ + return AjaxResult.error("单据编号已存在!"); + } + }else { + wmStockTaking.setTakingCode(autoCodeUtil.genSerialCode(UserConstants.STOCKTAKING_CODE,"")); + } + + if(StringUtils.isNotNull(wmStockTaking.getWarehouseId())){ + WmWarehouse warehouse = wmWarehouseService.selectWmWarehouseByWarehouseId(wmStockTaking.getWarehouseId()); + wmStockTaking.setWarehouseCode(warehouse.getWarehouseCode()); + wmStockTaking.setWarehouseName(warehouse.getWarehouseName()); + } + + wmStockTakingService.insertWmStockTaking(wmStockTaking); + wmStockTaking.setCreateBy(getUsername()); + return AjaxResult.success(wmStockTaking); + } + + /** + * 修改库存盘点记录 + */ + @ApiOperation("编辑库存盘点单基本信息接口") + @PreAuthorize("@ss.hasPermi('mes:wm:stocktaking:edit')") + @Log(title = "库存盘点记录", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody WmStockTaking wmStockTaking) + { + if(StringUtils.isNotNull(wmStockTaking.getWarehouseId())){ + WmWarehouse warehouse = wmWarehouseService.selectWmWarehouseByWarehouseId(wmStockTaking.getWarehouseId()); + wmStockTaking.setWarehouseCode(warehouse.getWarehouseCode()); + wmStockTaking.setWarehouseName(warehouse.getWarehouseName()); + } + return toAjax(wmStockTakingService.updateWmStockTaking(wmStockTaking)); + } + + /** + * 删除库存盘点记录 + */ + @ApiOperation("删除库存盘点单接口") + @PreAuthorize("@ss.hasPermi('mes:wm:stocktaking:remove')") + @Log(title = "库存盘点记录", businessType = BusinessType.DELETE) + @DeleteMapping("/{takingIds}") + public AjaxResult remove(@PathVariable Long[] takingIds) + { + return toAjax(wmStockTakingService.deleteWmStockTakingByTakingIds(takingIds)); + } + + /** + * 完成盘点,系统对比计算盘点结果 + */ + @ApiOperation("执行盘点接口") + @PreAuthorize("@ss.hasPermi('mes:wm:stocktaking:edit')") + @Log(title = "盘点单", businessType = BusinessType.UPDATE) + @Transactional + @PutMapping("/{takingId}") + public AjaxResult execute(@PathVariable Long takingId){ + WmStockTaking taking = wmStockTakingService.selectWmStockTakingByTakingId(takingId); + + WmStockTakingLine param = new WmStockTakingLine(); + param.setTakingId(takingId); + List lines = wmStockTakingLineService.selectWmStockTakingLineList(param); + if(CollectionUtils.isEmpty(lines)){ + return AjaxResult.error("未检测到盘点的物资!"); + } + + //先删除历史记录 + wmStockTakingResultService.deleteWmStockTakingResultByTakingId(takingId); + + if(UserConstants.WM_STOCK_TAKING_TYPE_OPEN.equals(taking.getTakingType())){ + //如果是明盘,则直接对比明细中的库存数量和盘点数量 + wmStockTakingResultService.calculateOpenWmStockTakingResult(takingId); + }else { + //如果是盲盘,则对比盘点明细中的盘点数量,和当前库存现有量的数量 + wmStockTakingResultService.calculateWmStockTakingResult(takingId); + } + + taking.setStatus(UserConstants.ORDER_STATUS_APPROVED); + wmStockTakingService.updateWmStockTaking(taking); + return AjaxResult.success(); + } +} diff --git a/ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmStockTakingResultMobController.java b/ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmStockTakingResultMobController.java new file mode 100644 index 0000000..b2334e5 --- /dev/null +++ b/ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmStockTakingResultMobController.java @@ -0,0 +1,89 @@ +package com.ktg.mes.wm.controller.mobile; + +import com.ktg.common.annotation.Log; +import com.ktg.common.core.controller.BaseController; +import com.ktg.common.core.domain.AjaxResult; +import com.ktg.common.core.page.TableDataInfo; +import com.ktg.common.enums.BusinessType; +import com.ktg.common.utils.poi.ExcelUtil; +import com.ktg.mes.wm.domain.WmStockTakingResult; +import com.ktg.mes.wm.service.IWmStockTakingResultService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +@Api("物资盘点结果") +@RestController +@RequestMapping("/mobile/wm/stocktakingresult") +public class WmStockTakingResultMobController extends BaseController { + + @Autowired + private IWmStockTakingResultService wmStockTakingResultService; + + /** + * 查询库存盘点结果列表 + */ + @ApiOperation("查询库存盘点结果列表接口") + @PreAuthorize("@ss.hasPermi('wm:stocktakingresult:list')") + @GetMapping("/list") + public TableDataInfo list(WmStockTakingResult wmStockTakingResult) + { + startPage(); + List list = wmStockTakingResultService.selectWmStockTakingResultList(wmStockTakingResult); + return getDataTable(list); + } + + + /** + * 获取库存盘点结果详细信息 + */ + @ApiOperation("查询库存盘点结果详情接口") + @PreAuthorize("@ss.hasPermi('wm:stocktakingresult:query')") + @GetMapping(value = "/{resultId}") + public AjaxResult getInfo(@PathVariable("resultId") Long resultId) + { + return AjaxResult.success(wmStockTakingResultService.selectWmStockTakingResultByResultId(resultId)); + } + + /** + * 新增库存盘点结果 + */ + @ApiOperation("新增库存盘点结果接口") + @PreAuthorize("@ss.hasPermi('wm:stocktakingresult:add')") + @Log(title = "库存盘点结果", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody WmStockTakingResult wmStockTakingResult) + { + return toAjax(wmStockTakingResultService.insertWmStockTakingResult(wmStockTakingResult)); + } + + /** + * 修改库存盘点结果 + */ + @ApiOperation("修改库存盘点结果接口") + @PreAuthorize("@ss.hasPermi('wm:stocktakingresult:edit')") + @Log(title = "库存盘点结果", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody WmStockTakingResult wmStockTakingResult) + { + return toAjax(wmStockTakingResultService.updateWmStockTakingResult(wmStockTakingResult)); + } + + /** + * 删除库存盘点结果 + */ + @ApiOperation("删除库存盘点结果接口") + @PreAuthorize("@ss.hasPermi('wm:stocktakingresult:remove')") + @Log(title = "库存盘点结果", businessType = BusinessType.DELETE) + @DeleteMapping("/{resultIds}") + public AjaxResult remove(@PathVariable Long[] resultIds) + { + return toAjax(wmStockTakingResultService.deleteWmStockTakingResultByResultIds(resultIds)); + } + +} diff --git a/ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmTransferLineMobController.java b/ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmTransferLineMobController.java new file mode 100644 index 0000000..86c4d3d --- /dev/null +++ b/ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmTransferLineMobController.java @@ -0,0 +1,194 @@ +package com.ktg.mes.wm.controller.mobile; + +import com.ktg.common.annotation.Log; +import com.ktg.common.core.controller.BaseController; +import com.ktg.common.core.domain.AjaxResult; +import com.ktg.common.core.page.TableDataInfo; +import com.ktg.common.enums.BusinessType; +import com.ktg.common.utils.StringUtils; +import com.ktg.common.utils.poi.ExcelUtil; +import com.ktg.mes.wm.domain.*; +import com.ktg.mes.wm.service.*; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +@Api("转移调拨明细") +@RestController +@RequestMapping("/mobile/wm/transferline") +public class WmTransferLineMobController extends BaseController { + @Autowired + private IWmTransferLineService wmTransferLineService; + + @Autowired + private IWmWarehouseService wmWarehouseService; + + @Autowired + private IWmStorageLocationService wmStorageLocationService; + + @Autowired + private IWmStorageAreaService wmStorageAreaService; + + @Autowired + private IWmMaterialStockService wmMaterialStockService; + + /** + * 查询转移单行列表 + */ + @ApiOperation("查询转移调拨单明细清单接口") + @PreAuthorize("@ss.hasPermi('mes:wm:transferline:list')") + @GetMapping("/list") + public TableDataInfo list(WmTransferLine wmTransferLine) + { + startPage(); + List list = wmTransferLineService.selectWmTransferLineList(wmTransferLine); + return getDataTable(list); + } + + + /** + * 获取转移单行详细信息 + */ + @ApiOperation("获取转移调拨单明细详情接口") + @PreAuthorize("@ss.hasPermi('mes:wm:transferline:query')") + @GetMapping(value = "/{lineId}") + public AjaxResult getInfo(@PathVariable("lineId") Long lineId) + { + return AjaxResult.success(wmTransferLineService.selectWmTransferLineByLineId(lineId)); + } + + /** + * 新增转移单行 + */ + @ApiOperation("新增转移调拨单明细信息接口") + @PreAuthorize("@ss.hasPermi('mes:wm:transferline:add')") + @Log(title = "转移单行", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody WmTransferLine wmTransferLine) + { + if(StringUtils.isNotNull(wmTransferLine.getMaterialStockId())){ + WmMaterialStock stock = wmMaterialStockService.selectWmMaterialStockByMaterialStockId(wmTransferLine.getMaterialStockId()); + wmTransferLine.setItemId(stock.getItemId()); + wmTransferLine.setItemCode(stock.getItemCode()); + wmTransferLine.setItemName(stock.getItemName()); + wmTransferLine.setSpecification(stock.getSpecification()); + wmTransferLine.setUnitOfMeasure(stock.getUnitOfMeasure()); + wmTransferLine.setBatchCode(stock.getBatchCode()); + wmTransferLine.setVendorId(stock.getVendorId()); + wmTransferLine.setVendorCode(stock.getVendorCode()); + wmTransferLine.setVendorName(stock.getVendorName()); + wmTransferLine.setVendorNick(stock.getVendorNick()); + wmTransferLine.setWorkorderId(stock.getWorkorderId()); + wmTransferLine.setWorkorderCode(stock.getWorkorderCode()); + } + + if(StringUtils.isNotNull(wmTransferLine.getFromWarehouseId())){ + WmWarehouse warehouse = wmWarehouseService.selectWmWarehouseByWarehouseId(wmTransferLine.getFromWarehouseId()); + wmTransferLine.setFromWarehouseCode(warehouse.getWarehouseCode()); + wmTransferLine.setFromWarehouseName(warehouse.getWarehouseName()); + } + if(StringUtils.isNotNull(wmTransferLine.getFromLocationId())){ + WmStorageLocation location = wmStorageLocationService.selectWmStorageLocationByLocationId(wmTransferLine.getFromLocationId()); + wmTransferLine.setFromLocationCode(location.getLocationCode()); + wmTransferLine.setFromLocationName(location.getLocationName()); + } + if(StringUtils.isNotNull(wmTransferLine.getFromAreaId())){ + WmStorageArea area = wmStorageAreaService.selectWmStorageAreaByAreaId(wmTransferLine.getFromAreaId()); + wmTransferLine.setFromAreaCode(area.getAreaCode()); + wmTransferLine.setFromAreaName(area.getAreaName()); + } + if(StringUtils.isNotNull(wmTransferLine.getToWarehouseId())){ + WmWarehouse warehouse = wmWarehouseService.selectWmWarehouseByWarehouseId(wmTransferLine.getToWarehouseId()); + wmTransferLine.setToWarehouseCode(warehouse.getWarehouseCode()); + wmTransferLine.setToWarehouseName(warehouse.getWarehouseName()); + } + if(StringUtils.isNotNull(wmTransferLine.getFromLocationId())){ + WmStorageLocation location = wmStorageLocationService.selectWmStorageLocationByLocationId(wmTransferLine.getToLocationId()); + wmTransferLine.setToLocationCode(location.getLocationCode()); + wmTransferLine.setToLocationName(location.getLocationName()); + } + if(StringUtils.isNotNull(wmTransferLine.getFromAreaId())){ + WmStorageArea area = wmStorageAreaService.selectWmStorageAreaByAreaId(wmTransferLine.getToAreaId()); + wmTransferLine.setToAreaCode(area.getAreaCode()); + wmTransferLine.setToAreaName(area.getAreaName()); + } + wmTransferLine.setCreateBy(getUsername()); + wmTransferLineService.insertWmTransferLine(wmTransferLine); + return AjaxResult.success(wmTransferLine); + } + + /** + * 修改转移单行 + */ + @ApiOperation("编辑转移调拨单明细信息接口") + @PreAuthorize("@ss.hasPermi('mes:wm:transferline:edit')") + @Log(title = "转移单行", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody WmTransferLine wmTransferLine) + { + if(StringUtils.isNotNull(wmTransferLine.getMaterialStockId())){ + WmMaterialStock stock = wmMaterialStockService.selectWmMaterialStockByMaterialStockId(wmTransferLine.getMaterialStockId()); + wmTransferLine.setItemId(stock.getItemId()); + wmTransferLine.setItemCode(stock.getItemCode()); + wmTransferLine.setItemName(stock.getItemName()); + wmTransferLine.setSpecification(stock.getSpecification()); + wmTransferLine.setUnitOfMeasure(stock.getUnitOfMeasure()); + wmTransferLine.setBatchCode(stock.getBatchCode()); + wmTransferLine.setVendorId(stock.getVendorId()); + wmTransferLine.setVendorCode(stock.getVendorCode()); + wmTransferLine.setVendorName(stock.getVendorName()); + wmTransferLine.setVendorNick(stock.getVendorNick()); + wmTransferLine.setWorkorderId(stock.getWorkorderId()); + wmTransferLine.setWorkorderCode(stock.getWorkorderCode()); + } + + if(StringUtils.isNotNull(wmTransferLine.getFromWarehouseId())){ + WmWarehouse warehouse = wmWarehouseService.selectWmWarehouseByWarehouseId(wmTransferLine.getFromWarehouseId()); + wmTransferLine.setFromWarehouseCode(warehouse.getWarehouseCode()); + wmTransferLine.setFromWarehouseName(warehouse.getWarehouseName()); + } + if(StringUtils.isNotNull(wmTransferLine.getFromLocationId())){ + WmStorageLocation location = wmStorageLocationService.selectWmStorageLocationByLocationId(wmTransferLine.getFromLocationId()); + wmTransferLine.setFromLocationCode(location.getLocationCode()); + wmTransferLine.setFromLocationName(location.getLocationName()); + } + if(StringUtils.isNotNull(wmTransferLine.getFromAreaId())){ + WmStorageArea area = wmStorageAreaService.selectWmStorageAreaByAreaId(wmTransferLine.getFromAreaId()); + wmTransferLine.setFromAreaCode(area.getAreaCode()); + wmTransferLine.setFromAreaName(area.getAreaName()); + } + if(StringUtils.isNotNull(wmTransferLine.getToWarehouseId())){ + WmWarehouse warehouse = wmWarehouseService.selectWmWarehouseByWarehouseId(wmTransferLine.getToWarehouseId()); + wmTransferLine.setToWarehouseCode(warehouse.getWarehouseCode()); + wmTransferLine.setToWarehouseName(warehouse.getWarehouseName()); + } + if(StringUtils.isNotNull(wmTransferLine.getFromLocationId())){ + WmStorageLocation location = wmStorageLocationService.selectWmStorageLocationByLocationId(wmTransferLine.getToLocationId()); + wmTransferLine.setToLocationCode(location.getLocationCode()); + wmTransferLine.setToLocationName(location.getLocationName()); + } + if(StringUtils.isNotNull(wmTransferLine.getFromAreaId())){ + WmStorageArea area = wmStorageAreaService.selectWmStorageAreaByAreaId(wmTransferLine.getToAreaId()); + wmTransferLine.setToAreaCode(area.getAreaCode()); + wmTransferLine.setToAreaName(area.getAreaName()); + } + return toAjax(wmTransferLineService.updateWmTransferLine(wmTransferLine)); + } + + /** + * 删除转移单行 + */ + @ApiOperation("删除转移调拨单明细信息接口") + @PreAuthorize("@ss.hasPermi('mes:wm:transferline:remove')") + @Log(title = "转移单行", businessType = BusinessType.DELETE) + @DeleteMapping("/{lineIds}") + public AjaxResult remove(@PathVariable Long[] lineIds) + { + return toAjax(wmTransferLineService.deleteWmTransferLineByLineIds(lineIds)); + } +} diff --git a/ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmTransferMobController.java b/ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmTransferMobController.java new file mode 100644 index 0000000..93740e7 --- /dev/null +++ b/ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmTransferMobController.java @@ -0,0 +1,185 @@ +package com.ktg.mes.wm.controller.mobile; + +import com.ktg.common.annotation.Log; +import com.ktg.common.constant.UserConstants; +import com.ktg.common.core.controller.BaseController; +import com.ktg.common.core.domain.AjaxResult; +import com.ktg.common.core.page.TableDataInfo; +import com.ktg.common.enums.BusinessType; +import com.ktg.common.utils.StringUtils; +import com.ktg.common.utils.poi.ExcelUtil; +import com.ktg.mes.wm.domain.WmTransfer; +import com.ktg.mes.wm.domain.WmTransferLine; +import com.ktg.mes.wm.domain.WmWarehouse; +import com.ktg.mes.wm.domain.tx.TransferTxBean; +import com.ktg.mes.wm.service.IStorageCoreService; +import com.ktg.mes.wm.service.IWmTransferLineService; +import com.ktg.mes.wm.service.IWmTransferService; +import com.ktg.mes.wm.service.IWmWarehouseService; +import com.ktg.system.strategy.AutoCodeUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +@Api("转移调拨") +@RestController +@RequestMapping("/mobile/wm/transfer") +public class WmTransferMobController extends BaseController { + @Autowired + private IWmTransferService wmTransferService; + + @Autowired + private IWmTransferLineService wmTransferLineService; + + @Autowired + private IWmWarehouseService wmWarehouseService; + + @Autowired + private IStorageCoreService storageCoreService; + + @Autowired + private AutoCodeUtil autoCodeUtil; + + /** + * 查询转移单列表 + */ + @ApiOperation("查询转移调拨单清单列表") + @PreAuthorize("@ss.hasPermi('mes:wm:transfer:list')") + @GetMapping("/list") + public TableDataInfo list(WmTransfer wmTransfer) + { + startPage(); + List list = wmTransferService.selectWmTransferList(wmTransfer); + return getDataTable(list); + } + + /** + * 获取转移单详细信息 + */ + @ApiOperation("获取转移调拨单详情接口") + @PreAuthorize("@ss.hasPermi('mes:wm:transfer:query')") + @GetMapping(value = "/{transferId}") + public AjaxResult getInfo(@PathVariable("transferId") Long transferId) + { + return AjaxResult.success(wmTransferService.selectWmTransferByTransferId(transferId)); + } + + /** + * 新增转移单 + */ + @ApiOperation("新增转移调拨单基本信息接口") + @PreAuthorize("@ss.hasPermi('mes:wm:transfer:add')") + @Log(title = "转移单", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody WmTransfer wmTransfer) + { + if(StringUtils.isNotNull(wmTransfer.getTransferCode())){ + if(UserConstants.NOT_UNIQUE.equals(wmTransferService.checkUnique(wmTransfer))){ + return AjaxResult.error("单据编号已存在"); + } + }else { + wmTransfer.setTransferCode(autoCodeUtil.genSerialCode(UserConstants.TRANSFER_CODE,"")); + } + + if(StringUtils.isNotNull(wmTransfer.getFromWarehouseId())){ + WmWarehouse warehouse = wmWarehouseService.selectWmWarehouseByWarehouseId(wmTransfer.getFromWarehouseId()); + wmTransfer.setFromWarehouseCode(warehouse.getWarehouseCode()); + wmTransfer.setFromWarehouseName(warehouse.getWarehouseName()); + } + if(StringUtils.isNotNull(wmTransfer.getToWarehouseId())){ + WmWarehouse warehouse = wmWarehouseService.selectWmWarehouseByWarehouseId(wmTransfer.getToWarehouseId()); + wmTransfer.setToWarehouseCode(warehouse.getWarehouseCode()); + wmTransfer.setToWarehouseName(warehouse.getWarehouseName()); + } + + wmTransfer.setCreateBy(getUsername()); + wmTransferService.insertWmTransfer(wmTransfer); + return AjaxResult.success(wmTransfer); + } + + /** + * 修改转移单 + */ + @ApiOperation("编辑转移调拨单基本信息接口") + @PreAuthorize("@ss.hasPermi('mes:wm:transfer:edit')") + @Log(title = "转移单", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody WmTransfer wmTransfer) + { + if(UserConstants.NOT_UNIQUE.equals(wmTransferService.checkUnique(wmTransfer))){ + return AjaxResult.error("转移单编号已存在"); + } + if(StringUtils.isNotNull(wmTransfer.getFromWarehouseId())){ + WmWarehouse warehouse = wmWarehouseService.selectWmWarehouseByWarehouseId(wmTransfer.getFromWarehouseId()); + wmTransfer.setFromWarehouseCode(warehouse.getWarehouseCode()); + wmTransfer.setFromWarehouseName(warehouse.getWarehouseName()); + } + if(StringUtils.isNotNull(wmTransfer.getToWarehouseId())){ + WmWarehouse warehouse = wmWarehouseService.selectWmWarehouseByWarehouseId(wmTransfer.getToWarehouseId()); + wmTransfer.setToWarehouseCode(warehouse.getWarehouseCode()); + wmTransfer.setToWarehouseName(warehouse.getWarehouseName()); + } + return toAjax(wmTransferService.updateWmTransfer(wmTransfer)); + } + + /** + * 删除转移单 + */ + @ApiOperation("删除转移调拨单接口") + @PreAuthorize("@ss.hasPermi('mes:wm:transfer:remove')") + @Log(title = "转移单", businessType = BusinessType.DELETE) + @DeleteMapping("/{transferIds}") + @Transactional + public AjaxResult remove(@PathVariable Long[] transferIds) + { + for (Long transferId:transferIds + ) { + WmTransfer transfer = wmTransferService.selectWmTransferByTransferId(transferId); + if(!UserConstants.ORDER_STATUS_PREPARE.equals(transfer.getStatus())){ + return AjaxResult.error("只能删除草稿状态单据!"); + } + + wmTransferLineService.deleteByTransferId(transferId); + } + return toAjax(wmTransferService.deleteWmTransferByTransferIds(transferIds)); + } + + /** + * 执行转移 + */ + @ApiOperation("执行转移调拨接口") + @PreAuthorize("@ss.hasPermi('mes:wm:transfer:edit')") + @Log(title = "转移单", businessType = BusinessType.UPDATE) + @Transactional + @PutMapping("/{transferId}") + public AjaxResult execute(@PathVariable Long transferId){ + WmTransfer transfer = wmTransferService.selectWmTransferByTransferId(transferId); + + WmTransferLine param = new WmTransferLine(); + param.setTransferId(transferId); + List lines = wmTransferLineService.selectWmTransferLineList(param); + if(CollectionUtils.isEmpty(lines)){ + return AjaxResult.error("请添加需要转移的物资!"); + } + + List beans = wmTransferService.getTxBeans(transferId); + + if(CollectionUtils.isEmpty(beans)){ + return AjaxResult.error("请添加转移单行信息!"); + } + + storageCoreService.processTransfer(beans); + + + transfer.setStatus(UserConstants.ORDER_STATUS_FINISHED); + wmTransferService.updateWmTransfer(transfer); + return AjaxResult.success(); + } +}