diff --git a/ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmIssueLineMobController.java b/ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmIssueLineMobController.java new file mode 100644 index 0000000..319cc77 --- /dev/null +++ b/ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmIssueLineMobController.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.WmIssueLine; +import com.ktg.mes.wm.domain.WmMaterialStock; +import com.ktg.mes.wm.service.IWmIssueLineService; +import com.ktg.mes.wm.service.IWmMaterialStockService; +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/issueline") +public class WmIssueLineMobController extends BaseController { + + @Autowired + private IWmIssueLineService wmIssueLineService; + + @Autowired + private IWmMaterialStockService wmMaterialStockService; + + /** + * 查询生产领料单行列表 + */ + @ApiOperation("查询生产领导单行信息接口") + @PreAuthorize("@ss.hasPermi('mes:wm:issueline:list')") + @GetMapping("/list") + public TableDataInfo list(WmIssueLine wmIssueLine) + { + startPage(); + List list = wmIssueLineService.selectWmIssueLineList(wmIssueLine); + return getDataTable(list); + } + + /** + * 获取生产领料单行详细信息 + */ + @ApiOperation("获取生产领料单行明细信息接口") + @PreAuthorize("@ss.hasPermi('mes:wm:issueline:query')") + @GetMapping(value = "/{lineId}") + public AjaxResult getInfo(@PathVariable("lineId") Long lineId) + { + return AjaxResult.success(wmIssueLineService.selectWmIssueLineByLineId(lineId)); + } + + /** + * 新增生产领料单行 + */ + @ApiOperation("新增生产领料单行信息接口") + @PreAuthorize("@ss.hasPermi('mes:wm:issueline:add')") + @Log(title = "生产领料单行", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody WmIssueLine wmIssueLine) + { + if(StringUtils.isNotNull(wmIssueLine.getMaterialStockId())){ + WmMaterialStock stock = wmMaterialStockService.selectWmMaterialStockByMaterialStockId(wmIssueLine.getMaterialStockId()); + wmIssueLine.setItemId(stock.getItemId()); + wmIssueLine.setItemCode(stock.getItemCode()); + wmIssueLine.setItemName(stock.getItemName()); + wmIssueLine.setUnitOfMeasure(stock.getUnitOfMeasure()); + wmIssueLine.setSpecification(stock.getSpecification()); + wmIssueLine.setBatchCode(stock.getBatchCode()); + wmIssueLine.setWarehouseId(stock.getWarehouseId()); + wmIssueLine.setWarehouseCode(stock.getWarehouseCode()); + wmIssueLine.setWarehouseName(stock.getWarehouseName()); + wmIssueLine.setLocationId(stock.getLocationId()); + wmIssueLine.setLocationCode(stock.getLocationCode()); + wmIssueLine.setLocationName(stock.getLocationName()); + wmIssueLine.setAreaId(stock.getAreaId()); + wmIssueLine.setAreaCode(stock.getAreaCode()); + wmIssueLine.setAreaName(stock.getAreaName()); + } + + wmIssueLine.setCreateBy(getUsername()); + wmIssueLineService.insertWmIssueLine(wmIssueLine); + return AjaxResult.success(wmIssueLine); + } + + /** + * 修改生产领料单行 + */ + @ApiOperation("更新生产领料单行信息接口") + @PreAuthorize("@ss.hasPermi('mes:wm:issueline:edit')") + @Log(title = "生产领料单行", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody WmIssueLine wmIssueLine) + { + if(StringUtils.isNotNull(wmIssueLine.getMaterialStockId())){ + WmMaterialStock stock = wmMaterialStockService.selectWmMaterialStockByMaterialStockId(wmIssueLine.getMaterialStockId()); + wmIssueLine.setItemId(stock.getItemId()); + wmIssueLine.setItemCode(stock.getItemCode()); + wmIssueLine.setItemName(stock.getItemName()); + wmIssueLine.setUnitOfMeasure(stock.getUnitOfMeasure()); + wmIssueLine.setSpecification(stock.getSpecification()); + wmIssueLine.setBatchCode(stock.getBatchCode()); + wmIssueLine.setWarehouseId(stock.getWarehouseId()); + wmIssueLine.setWarehouseCode(stock.getWarehouseCode()); + wmIssueLine.setWarehouseName(stock.getWarehouseName()); + wmIssueLine.setLocationId(stock.getLocationId()); + wmIssueLine.setLocationCode(stock.getLocationCode()); + wmIssueLine.setLocationName(stock.getLocationName()); + wmIssueLine.setAreaId(stock.getAreaId()); + wmIssueLine.setAreaCode(stock.getAreaCode()); + wmIssueLine.setAreaName(stock.getAreaName()); + } + + return toAjax(wmIssueLineService.updateWmIssueLine(wmIssueLine)); + } + + /** + * 删除生产领料单行 + */ + @ApiOperation("删除生产领料单行信息接口") + @PreAuthorize("@ss.hasPermi('mes:wm:issueline:remove')") + @Log(title = "生产领料单行", businessType = BusinessType.DELETE) + @DeleteMapping("/{lineIds}") + public AjaxResult remove(@PathVariable Long[] lineIds) + { + return toAjax(wmIssueLineService.deleteWmIssueLineByLineIds(lineIds)); + } + +} diff --git a/ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmIssueMobController.java b/ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmIssueMobController.java new file mode 100644 index 0000000..7cf95fd --- /dev/null +++ b/ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmIssueMobController.java @@ -0,0 +1,194 @@ +package com.ktg.mes.wm.controller.mobile; + +import cn.hutool.core.collection.CollUtil; +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.mes.pro.domain.ProWorkorder; +import com.ktg.mes.pro.service.IProWorkorderService; +import com.ktg.mes.wm.domain.*; +import com.ktg.mes.wm.domain.tx.IssueTxBean; +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/issueheader") +public class WmIssueMobController extends BaseController { + @Autowired + private IWmIssueHeaderService wmIssueHeaderService; + + @Autowired + private IWmIssueLineService wmIssueLineService; + + @Autowired + private IStorageCoreService storageCoreService; + + @Autowired + private IProWorkorderService proWorkorderService; + + @Autowired + private AutoCodeUtil autoCodeUtil; + + /** + * 查询生产领料单头列表 + */ + @ApiOperation("查询生产领料单清单接口") + @PreAuthorize("@ss.hasPermi('mes:wm:issueheader:list')") + @GetMapping("/list") + public TableDataInfo list(WmIssueHeader wmIssueHeader) + { + startPage(); + List list = wmIssueHeaderService.selectWmIssueHeaderList(wmIssueHeader); + return getDataTable(list); + } + + + + /** + * 获取生产领料单头详细信息 + */ + @ApiOperation("获取生产领料单详情信息接口") + @PreAuthorize("@ss.hasPermi('mes:wm:issueheader:query')") + @GetMapping(value = "/{issueId}") + public AjaxResult getInfo(@PathVariable("issueId") Long issueId) + { + return AjaxResult.success(wmIssueHeaderService.selectWmIssueHeaderByIssueId(issueId)); + } + + /** + * 新增生产领料单头 + */ + @ApiOperation("新增生产领料单基本信息接口") + @PreAuthorize("@ss.hasPermi('mes:wm:issueheader:add')") + @Log(title = "生产领料单头", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody WmIssueHeader wmIssueHeader) + { + if(UserConstants.NOT_UNIQUE.equals(wmIssueHeaderService.checkIssueCodeUnique(wmIssueHeader))){ + return AjaxResult.error("领料单编号已存在"); + } + + if(StringUtils.isNotNull(wmIssueHeader.getIssueCode())){ + if(UserConstants.NOT_UNIQUE.equals(wmIssueHeaderService.checkIssueCodeUnique(wmIssueHeader))){ + return AjaxResult.error("单据编号已存在!"); + } + }else { + wmIssueHeader.setIssueCode(autoCodeUtil.genSerialCode(UserConstants.ISSUE_CODE,"")); + } + + //根据领料单上的生产工单初始化客户信息 + if(StringUtils.isNotNull(wmIssueHeader.getWorkorderId())){ + ProWorkorder workorder = proWorkorderService.selectProWorkorderByWorkorderId(wmIssueHeader.getWorkorderId()); + wmIssueHeader.setClientId(workorder.getClientId()); + wmIssueHeader.setClientCode(workorder.getClientCode()); + wmIssueHeader.setClientName(workorder.getClientName()); + } + + wmIssueHeader.setCreateBy(getUsername()); + wmIssueHeaderService.insertWmIssueHeader(wmIssueHeader); + return AjaxResult.success(wmIssueHeader); + } + + /** + * 修改生产领料单头 + */ + @ApiOperation("修改生产领料单基本信息接口") + @PreAuthorize("@ss.hasPermi('mes:wm:issueheader:edit')") + @Log(title = "生产领料单头", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody WmIssueHeader wmIssueHeader) + { + if(UserConstants.NOT_UNIQUE.equals(wmIssueHeaderService.checkIssueCodeUnique(wmIssueHeader))){ + return AjaxResult.error("领料单编号已存在"); + } + + //根据领料单上的生产工单初始化客户信息 + if(StringUtils.isNotNull(wmIssueHeader.getWorkorderId())){ + ProWorkorder workorder = proWorkorderService.selectProWorkorderByWorkorderId(wmIssueHeader.getWorkorderId()); + wmIssueHeader.setClientId(workorder.getClientId()); + wmIssueHeader.setClientCode(workorder.getClientCode()); + wmIssueHeader.setClientName(workorder.getClientName()); + } + + return toAjax(wmIssueHeaderService.updateWmIssueHeader(wmIssueHeader)); + } + + /** + * 删除生产领料单头 + */ + @ApiOperation("删除生产领料单信息接口") + @PreAuthorize("@ss.hasPermi('mes:wm:issueheader:remove')") + @Log(title = "生产领料单头", businessType = BusinessType.DELETE) + @Transactional + @DeleteMapping("/{issueIds}") + public AjaxResult remove(@PathVariable Long[] issueIds) + { + for (long issueId:issueIds + ) { + WmIssueHeader header = wmIssueHeaderService.selectWmIssueHeaderByIssueId(issueId); + if(!UserConstants.ORDER_STATUS_PREPARE.equals(header.getStatus())){ + return AjaxResult.error("只能删除草稿状态的单据!"); + } + + wmIssueLineService.deleteByIssueHeaderId(issueId); + } + + return toAjax(wmIssueHeaderService.deleteWmIssueHeaderByIssueIds(issueIds)); + } + + /** + * 执行出库 + * @return + */ + @ApiOperation("执行生产领出接口") + @PreAuthorize("@ss.hasPermi('mes:wm:issueheader:edit')") + @Log(title = "生产领料单头", businessType = BusinessType.UPDATE) + @Transactional + @PutMapping("/{issueId}") + public AjaxResult execute(@PathVariable Long issueId){ + + WmIssueHeader header = wmIssueHeaderService.selectWmIssueHeaderByIssueId(issueId); + + //单据有效性 + if(!StringUtils.isNotNull(header)){ + return AjaxResult.error("无效单据"); + } + + //先检查单据状态 + if(UserConstants.ORDER_STATUS_FINISHED.equals(header.getStatus())){ + return AjaxResult.error("当前单据已提交!"); + } + + //检查行数量 + WmIssueLine param = new WmIssueLine(); + param.setIssueId(issueId); + List lines = wmIssueLineService.selectWmIssueLineList(param); + if(CollUtil.isEmpty(lines)){ + return AjaxResult.error("请指定领出的物资"); + } + + List beans = wmIssueHeaderService.getTxBeans(issueId); + + //调用库存核心 + storageCoreService.processIssue(beans); + + //更新单据状态 + header.setStatus(UserConstants.ORDER_STATUS_FINISHED); + wmIssueHeaderService.updateWmIssueHeader(header); + return AjaxResult.success(); + } +} diff --git a/ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmRtIssueLineMobController.java b/ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmRtIssueLineMobController.java new file mode 100644 index 0000000..a9db00a --- /dev/null +++ b/ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmRtIssueLineMobController.java @@ -0,0 +1,147 @@ +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 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/rtissueline") +public class WmRtIssueLineMobController extends BaseController { + + @Autowired + private IWmRtIssueLineService wmRtIssueLineService; + + @Autowired + private IWmWarehouseService wmWarehouseService; + + @Autowired + private IWmStorageLocationService wmStorageLocationService; + + @Autowired + private IWmStorageAreaService wmStorageAreaService; + + @Autowired + private IWmMaterialStockService wmMaterialStockService; + + /** + * 查询生产退料单行列表 + */ + @PreAuthorize("@ss.hasPermi('mes:wm:rtissue:list')") + @GetMapping("/list") + public TableDataInfo list(WmRtIssueLine wmRtIssueLine) + { + startPage(); + List list = wmRtIssueLineService.selectWmRtIssueLineList(wmRtIssueLine); + return getDataTable(list); + } + + + /** + * 获取生产退料单行详细信息 + */ + @PreAuthorize("@ss.hasPermi('mes:wm:rtissue:query')") + @GetMapping(value = "/{lineId}") + public AjaxResult getInfo(@PathVariable("lineId") Long lineId) + { + return AjaxResult.success(wmRtIssueLineService.selectWmRtIssueLineByLineId(lineId)); + } + + /** + * 新增生产退料单行 + */ + @PreAuthorize("@ss.hasPermi('mes:wm:rtissue:add')") + @Log(title = "生产退料单行", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody WmRtIssueLine wmRtIssueLine) + { + if(StringUtils.isNotNull(wmRtIssueLine.getMaterialStockId())){ + WmMaterialStock stock = wmMaterialStockService.selectWmMaterialStockByMaterialStockId(wmRtIssueLine.getMaterialStockId()); + wmRtIssueLine.setItemId(stock.getItemId()); + wmRtIssueLine.setItemCode(stock.getItemCode()); + wmRtIssueLine.setItemName(stock.getItemName()); + wmRtIssueLine.setSpecification(stock.getSpecification()); + wmRtIssueLine.setUnitOfMeasure(stock.getUnitOfMeasure()); + wmRtIssueLine.setBatchCode(stock.getBatchCode()); + } + + if(StringUtils.isNotNull(wmRtIssueLine.getWarehouseId())){ + WmWarehouse warehouse = wmWarehouseService.selectWmWarehouseByWarehouseId(wmRtIssueLine.getWarehouseId()); + wmRtIssueLine.setWarehouseCode(warehouse.getWarehouseCode()); + wmRtIssueLine.setWarehouseName(warehouse.getWarehouseName()); + } + if(StringUtils.isNotNull(wmRtIssueLine.getLocationId())){ + WmStorageLocation location = wmStorageLocationService.selectWmStorageLocationByLocationId(wmRtIssueLine.getLocationId()); + wmRtIssueLine.setLocationCode(location.getLocationCode()); + wmRtIssueLine.setLocationName(location.getLocationName()); + } + if(StringUtils.isNotNull(wmRtIssueLine.getAreaId())){ + WmStorageArea area = wmStorageAreaService.selectWmStorageAreaByAreaId(wmRtIssueLine.getAreaId()); + wmRtIssueLine.setAreaCode(area.getAreaCode()); + wmRtIssueLine.setAreaName(area.getAreaName()); + } + wmRtIssueLine.setCreateBy(getUsername()); + wmRtIssueLineService.insertWmRtIssueLine(wmRtIssueLine); + return AjaxResult.success(wmRtIssueLine); + } + + /** + * 修改生产退料单行 + */ + @PreAuthorize("@ss.hasPermi('mes:wm:rtissue:edit')") + @Log(title = "生产退料单行", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody WmRtIssueLine wmRtIssueLine) + { + if(StringUtils.isNotNull(wmRtIssueLine.getMaterialStockId())){ + WmMaterialStock stock = wmMaterialStockService.selectWmMaterialStockByMaterialStockId(wmRtIssueLine.getMaterialStockId()); + wmRtIssueLine.setItemId(stock.getItemId()); + wmRtIssueLine.setItemCode(stock.getItemCode()); + wmRtIssueLine.setItemName(stock.getItemName()); + wmRtIssueLine.setSpecification(stock.getSpecification()); + wmRtIssueLine.setUnitOfMeasure(stock.getUnitOfMeasure()); + wmRtIssueLine.setBatchCode(stock.getBatchCode()); + } + + if(StringUtils.isNotNull(wmRtIssueLine.getWarehouseId())){ + WmWarehouse warehouse = wmWarehouseService.selectWmWarehouseByWarehouseId(wmRtIssueLine.getWarehouseId()); + wmRtIssueLine.setWarehouseCode(warehouse.getWarehouseCode()); + wmRtIssueLine.setWarehouseName(warehouse.getWarehouseName()); + } + if(StringUtils.isNotNull(wmRtIssueLine.getLocationId())){ + WmStorageLocation location = wmStorageLocationService.selectWmStorageLocationByLocationId(wmRtIssueLine.getLocationId()); + wmRtIssueLine.setLocationCode(location.getLocationCode()); + wmRtIssueLine.setLocationName(location.getLocationName()); + } + if(StringUtils.isNotNull(wmRtIssueLine.getAreaId())){ + WmStorageArea area = wmStorageAreaService.selectWmStorageAreaByAreaId(wmRtIssueLine.getAreaId()); + wmRtIssueLine.setAreaCode(area.getAreaCode()); + wmRtIssueLine.setAreaName(area.getAreaName()); + } + return toAjax(wmRtIssueLineService.updateWmRtIssueLine(wmRtIssueLine)); + } + + /** + * 删除生产退料单行 + */ + @PreAuthorize("@ss.hasPermi('mes:wm:rtissue:remove')") + @Log(title = "生产退料单行", businessType = BusinessType.DELETE) + @DeleteMapping("/{lineIds}") + public AjaxResult remove(@PathVariable Long[] lineIds) + { + return toAjax(wmRtIssueLineService.deleteWmRtIssueLineByLineIds(lineIds)); + } +} diff --git a/ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmRtIssueMobController.java b/ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmRtIssueMobController.java new file mode 100644 index 0000000..6897cb5 --- /dev/null +++ b/ktg-mes/src/main/java/com/ktg/mes/wm/controller/mobile/WmRtIssueMobController.java @@ -0,0 +1,187 @@ +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.common.utils.poi.ExcelUtil; +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.RtIssueTxBean; +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.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +@Api("生产退料") +@RestController +@RequestMapping("/mobile/wm/rtissue") +public class WmRtIssueMobController extends BaseController { + + @Autowired + private IWmRtIssueService wmRtIssueService; + + @Autowired + private IWmRtIssueLineService wmRtIssueLineService; + + + @Autowired + private IWmWarehouseService wmWarehouseService; + + @Autowired + private IWmStorageLocationService wmStorageLocationService; + + @Autowired + private IWmStorageAreaService wmStorageAreaService; + + @Autowired + private IStorageCoreService storageCoreService; + + @Autowired + private IProWorkorderService proWorkorderService; + + /** + * 查询生产退料单头列表 + */ + @ApiOperation("查询生产退料单清单接口") + @PreAuthorize("@ss.hasPermi('mes:wm:rtissue:list')") + @GetMapping("/list") + public TableDataInfo list(WmRtIssue wmRtIssue) + { + startPage(); + List list = wmRtIssueService.selectWmRtIssueList(wmRtIssue); + return getDataTable(list); + } + + + /** + * 获取生产退料单头详细信息 + */ + @ApiOperation("获取生产退料单详情接口") + @PreAuthorize("@ss.hasPermi('mes:wm:rtissue:query')") + @GetMapping(value = "/{rtId}") + public AjaxResult getInfo(@PathVariable("rtId") Long rtId) + { + return AjaxResult.success(wmRtIssueService.selectWmRtIssueByRtId(rtId)); + } + + /** + * 新增生产退料单头 + */ + @ApiOperation("新增生产退料单基本信息接口") + @PreAuthorize("@ss.hasPermi('mes:wm:rtissue:add')") + @Log(title = "生产退料单头", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody WmRtIssue wmRtIssue) + { + if(UserConstants.NOT_UNIQUE.equals(wmRtIssueService.checkUnique(wmRtIssue))){ + return AjaxResult.error("退料单编号已存在"); + } + + if(StringUtils.isNotNull(wmRtIssue.getWorkorderId())){ + ProWorkorder workorder = proWorkorderService.selectProWorkorderByWorkorderId(wmRtIssue.getWorkorderId()); + wmRtIssue.setWorkorderCode(workorder.getWorkorderCode()); + } + + wmRtIssue.setCreateBy(getUsername()); + wmRtIssueService.insertWmRtIssue(wmRtIssue); + return AjaxResult.success(wmRtIssue); + } + + /** + * 修改生产退料单头 + */ + @ApiOperation("修改生产退料单基本信息接口") + @PreAuthorize("@ss.hasPermi('mes:wm:rtissue:edit')") + @Log(title = "生产退料单头", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody WmRtIssue wmRtIssue) + { + if(UserConstants.NOT_UNIQUE.equals(wmRtIssueService.checkUnique(wmRtIssue))){ + return AjaxResult.error("退料单编号已存在"); + } + + if(StringUtils.isNotNull(wmRtIssue.getWorkorderId())){ + ProWorkorder workorder = proWorkorderService.selectProWorkorderByWorkorderId(wmRtIssue.getWorkorderId()); + wmRtIssue.setWorkorderCode(workorder.getWorkorderCode()); + } + + return toAjax(wmRtIssueService.updateWmRtIssue(wmRtIssue)); + } + + /** + * 删除生产退料单头 + */ + @ApiOperation("删除生产退料单接口") + @PreAuthorize("@ss.hasPermi('mes:wm:rtissue:remove')") + @Log(title = "生产退料单头", businessType = BusinessType.DELETE) + @Transactional + @DeleteMapping("/{rtIds}") + public AjaxResult remove(@PathVariable Long[] rtIds) + { + for (Long rtId: rtIds + ) { + WmRtIssue header = wmRtIssueService.selectWmRtIssueByRtId(rtId); + if(!UserConstants.ORDER_STATUS_PREPARE.equals(header.getStatus())){ + return AjaxResult.error("只能删除草稿状态的单据!"); + } + + wmRtIssueLineService.deleteByRtId(rtId); + } + return toAjax(wmRtIssueService.deleteWmRtIssueByRtIds(rtIds)); + } + + /** + * 执行退料 + * @param rtId + * @return + */ + @ApiOperation("执行生产退料接口") + @PreAuthorize("@ss.hasPermi('mes:wm:rtissue:edit')") + @Log(title = "生产退料单头", businessType = BusinessType.UPDATE) + @Transactional + @PutMapping("/{rtId}") + public AjaxResult execute(@PathVariable Long rtId){ + WmRtIssue rtIssue = wmRtIssueService.selectWmRtIssueByRtId(rtId); + + //单据有效性 + if(!StringUtils.isNotNull(rtIssue)){ + return AjaxResult.error("无效单据"); + } + + //先检查单据状态 + if(UserConstants.ORDER_STATUS_FINISHED.equals(rtIssue.getStatus())){ + return AjaxResult.error("当前单据已提交!"); + } + + //检查行信息 + WmRtIssueLine param = new WmRtIssueLine(); + param.setRtId(rtId); + List lines = wmRtIssueLineService.selectWmRtIssueLineList(param); + if(CollUtil.isEmpty(lines)){ + return AjaxResult.error("请选择要退料的物资"); + } + + List beans = wmRtIssueService.getTxBeans(rtId); + + //执行生产退料 + storageCoreService.processRtIssue(beans); + + + rtIssue.setStatus(UserConstants.ORDER_STATUS_FINISHED); + wmRtIssueService.updateWmRtIssue(rtIssue); + return AjaxResult.success(); + } + +}