src/main/java/org/jeecg/modules/mes/controller/MesMaterialTransferRequestController.java
@@ -6,21 +6,21 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.jeecg.common.api.vo.Result; import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.system.base.controller.JeecgController; import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.modules.eam.constant.BusinessCodeConst; import org.jeecg.modules.mes.entity.MesMaterialTransferRequest; import org.jeecg.modules.mes.enums.MaterialTransferPublishStatus; import org.jeecg.modules.mes.service.IMesMaterialTransferRequestService; import org.jeecg.modules.system.service.ISysBusinessCodeRuleService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Arrays; /** * @Description: 物料拉动申请 @@ -87,7 +87,6 @@ */ @AutoLog(value = "物料拉动申请-编辑") @ApiOperation(value = "物料拉动申请-编辑", notes = "物料拉动申请-编辑") //@RequiresPermissions("org.jeecg.modules:mes_material_transfer_request:edit") @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST}) public Result<String> edit(@RequestBody MesMaterialTransferRequest mesMaterialTransferRequest) { mesMaterialTransferRequestService.updateById(mesMaterialTransferRequest); @@ -102,11 +101,18 @@ */ @AutoLog(value = "物料拉动申请-通过id删除") @ApiOperation(value = "物料拉动申请-通过id删除", notes = "物料拉动申请-通过id删除") //@RequiresPermissions("org.jeecg.modules:mes_material_transfer_request:delete") @DeleteMapping(value = "/delete") public Result<String> delete(@RequestParam(name = "id", required = true) String id) { mesMaterialTransferRequestService.removeById(id); return Result.OK("删除成功!"); MesMaterialTransferRequest entity = mesMaterialTransferRequestService.getById(id); if (entity == null) { return Result.error("删除的数据不存在,请刷新重试!"); } if (!MaterialTransferPublishStatus.WAIT_PUBLISH.name().equals(entity.getPublishStatus())) { return Result.error("数据已发布,无法删除!"); } entity.setDelFlag(CommonConstant.DEL_FLAG_1); mesMaterialTransferRequestService.updateById(entity); return Result.OK("删除成功!"); } /** @@ -117,10 +123,21 @@ */ @AutoLog(value = "物料拉动申请-批量删除") @ApiOperation(value = "物料拉动申请-批量删除", notes = "物料拉动申请-批量删除") //@RequiresPermissions("org.jeecg.modules:mes_material_transfer_request:deleteBatch") @DeleteMapping(value = "/deleteBatch") public Result<String> deleteBatch(@RequestParam(name = "ids", required = true) String ids) { this.mesMaterialTransferRequestService.removeByIds(Arrays.asList(ids.split(","))); if (StringUtils.isBlank(ids)) { return Result.error("参数错误!"); } String[] split = ids.split(","); for (String id : split) { MesMaterialTransferRequest entity = mesMaterialTransferRequestService.getById(id); if (entity == null || !MaterialTransferPublishStatus.WAIT_PUBLISH.name().equals(entity.getPublishStatus())) { //不做处理 continue; } entity.setDelFlag(CommonConstant.DEL_FLAG_1); mesMaterialTransferRequestService.updateById(entity); } return Result.OK("批量删除成功!"); } @@ -142,28 +159,93 @@ } /** * 导出excel * 通过id发布 * * @param request * @param mesMaterialTransferRequest * @param id * @return */ //@RequiresPermissions("org.jeecg.modules:mes_material_transfer_request:exportXls") @RequestMapping(value = "/exportXls") public ModelAndView exportXls(HttpServletRequest request, MesMaterialTransferRequest mesMaterialTransferRequest) { return super.exportXls(request, mesMaterialTransferRequest, MesMaterialTransferRequest.class, "物料拉动申请"); @AutoLog(value = "物料拉动申请-发布") @ApiOperation(value = "物料拉动申请-发布", notes = "物料拉动申请-发布") @PutMapping(value = "/publish") public Result<String> publish(@RequestParam(name = "id", required = true) String id) { boolean b = mesMaterialTransferRequestService.publish(id); if (!b) { return Result.error("发布失败!"); } return Result.OK("发布成功!"); } /** * 通过excel导入数据 * 批量发布 * * @param request * @param response * @param ids * @return */ //@RequiresPermissions("mes_material_transfer_request:importExcel") @RequestMapping(value = "/importExcel", method = RequestMethod.POST) public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { return super.importExcel(request, response, MesMaterialTransferRequest.class); @AutoLog(value = "物料拉动申请-批量发布") @ApiOperation(value = "物料拉动申请-批量发布", notes = "物料拉动申请-批量发布") @PutMapping(value = "/publishBatch") public Result<String> publishBatch(@RequestParam(name = "ids", required = true) String ids) { if (StringUtils.isBlank(ids)) { return Result.error("参数错误!"); } String[] split = ids.split(","); int count = 0; for (String id : split) { try { boolean b = mesMaterialTransferRequestService.publish(id); if(b) { count++; } } catch (Exception e) { log.error(e.getMessage(), e); } } return Result.OK("成功发布" + count + "条数据!"); } /** * 通过id请求WMS * * @param id * @return */ @AutoLog(value = "物料拉动申请-请求WMS") @ApiOperation(value = "物料拉动申请-请求WMS", notes = "物料拉动申请-请求WMS") @PutMapping(value = "/request") public Result<String> request(@RequestParam(name = "id", required = true) String id) { boolean b = mesMaterialTransferRequestService.request(id); if (!b) { return Result.error("请求失败!"); } return Result.OK("请求成功!"); } /** * 批量请求WMS * * @param ids * @return */ @AutoLog(value = "物料拉动申请-批量请求WMS") @ApiOperation(value = "物料拉动申请-批量请求WMS", notes = "物料拉动申请-批量请求WMS") @PutMapping(value = "/requestBatch") public Result<String> requestBatch(@RequestParam(name = "ids", required = true) String ids) { if (StringUtils.isBlank(ids)) { return Result.error("参数错误!"); } String[] split = ids.split(","); int count = 0; for (String id : split) { try { boolean b = mesMaterialTransferRequestService.request(id); if(b) { count++; } } catch (Exception e) { log.error(e.getMessage(), e); } } return Result.OK("成功请求WMS" + count + "条数据!"); } /* src/main/java/org/jeecg/modules/mes/entity/MesMaterialTransferRequest.java
@@ -1,6 +1,9 @@ package org.jeecg.modules.mes.entity; import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -8,10 +11,10 @@ import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import org.jeecg.common.aspect.annotation.Dict; import org.jeecgframework.poi.excel.annotation.Excel; import org.springframework.format.annotation.DateTimeFormat; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; /** @@ -105,8 +108,8 @@ private String materialName; /**理论拉动数量*/ @ApiModelProperty(value = "理论拉动数量") private Double specifiedQuantity; private BigDecimal specifiedQuantity; /**实际拉动数量*/ @ApiModelProperty(value = "实际拉动数量") private Double actualQuantity; private BigDecimal actualQuantity; } src/main/java/org/jeecg/modules/mes/service/IMesMaterialTransferRequestService.java
@@ -19,4 +19,18 @@ * @param request */ boolean addMaterialTransferRequest(MesMaterialTransferRequest request); /** * 发布,调用SAP获取预留号 * @param id * @return */ boolean publish(String id); /** * 请求WMS * @param id * @return */ boolean request(String id); } src/main/java/org/jeecg/modules/mes/service/impl/MesMaterialTransferRequestServiceImpl.java
@@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.exception.JeecgBootException; import org.jeecg.modules.base.entity.LineSideWarehouse; import org.jeecg.modules.base.service.ILineSideWarehouseService; import org.jeecg.modules.mes.entity.MesMaterialTransferRequest; import org.jeecg.modules.mes.entity.MesProductionWorkOrder; import org.jeecg.modules.mes.enums.MaterialTransferPublishStatus; @@ -11,11 +13,17 @@ import org.jeecg.modules.mes.mapper.MesMaterialTransferRequestMapper; import org.jeecg.modules.mes.service.IMesMaterialTransferRequestService; import org.jeecg.modules.mes.service.IMesProductionWorkOrderService; import org.jeecg.modules.sap.dto.MaterialRequestDTO; import org.jeecg.modules.sap.request.MaterialRequest; import org.jeecg.modules.sap.service.OrderMaterialRequestService; import org.jeecg.modules.wms.dto.WSResponse; import org.jeecg.modules.wms.request.WebReservationOrder; import org.jeecg.modules.wms.service.WMSWebServiceClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.*; /** * @Description: 物料拉动申请 @@ -28,6 +36,12 @@ @Autowired private IMesProductionWorkOrderService productionWorkOrderService; @Autowired private OrderMaterialRequestService orderMaterialRequestService; @Autowired private ILineSideWarehouseService lineSideWarehouseService; @Autowired private WMSWebServiceClient wmsWebServiceClient; @Override public List<MesMaterialTransferRequest> queryMaterialTransferRequestByWorkOrderId(String workOrderId) { @@ -50,4 +64,64 @@ this.getBaseMapper().insert(request); return true; } @Override @Transactional(rollbackFor = Exception.class) public boolean publish(String id) { MesMaterialTransferRequest entity = super.getById(id); if (entity == null) { throw new JeecgBootException("数据不存在,请刷新重试!"); } if (!MaterialTransferPublishStatus.WAIT_PUBLISH.name().equals(entity.getPublishStatus())) { throw new JeecgBootException("数据已发布!"); } LineSideWarehouse warehouse = lineSideWarehouseService.getById(entity.getTargetWarehouseId()); if (warehouse == null) { throw new JeecgBootException("线边库不存在!"); } MaterialRequest request = new MaterialRequest(); request.setMaterialNumber(entity.getMaterialNumber()); request.setQuantity(request.getQuantity()); request.setWarehouseCode(entity.getOriginalWarehouseId()); try { Map<String, Object> response = orderMaterialRequestService.orderMaterialRequest("2301", warehouse.getWarehouseCode(), Collections.singletonList(request)); Object ztype = response.get("ztype"); if (!"S".equals(ztype)) { throw new JeecgBootException("调用SAP请求预留号失败!" + response.get("zmess")); } MaterialRequestDTO result = (MaterialRequestDTO) response.get("result"); entity.setReservationCode(result.getO_SAP_RESV()); entity.setPublishStatus(MaterialTransferPublishStatus.PUBLISHED.name()); entity.setPublishTime(new Date()); super.updateById(entity); return true; } catch (Exception e) { throw new JeecgBootException("调用SAP请求预留号失败!"); } } @Override @Transactional(rollbackFor = Exception.class) public boolean request(String id) { MesMaterialTransferRequest entity = super.getById(id); if (entity == null) { throw new JeecgBootException("数据不存在,请刷新重试!"); } if (!MaterialTransferPublishStatus.PUBLISHED.name().equals(entity.getPublishStatus()) || !MaterialTransferRequestStatus.WAIT_REQUEST.name().equals(entity.getRequestStatus())) { throw new JeecgBootException("数据状态不可请求WMS!"); } WebReservationOrder request = new WebReservationOrder(); request.setFactoryCode("2301"); request.setReservationOrder(entity.getReservationCode()); request.setTotal(entity.getSpecifiedQuantity()); Map<String, Object> resultMap = wmsWebServiceClient.receiveReservation(request); WSResponse result = (WSResponse)resultMap.get("result"); if("Y".equals(result.getErrorCode())) { entity.setRequestStatus(MaterialTransferRequestStatus.REQUESTED.name()); entity.setRequestTime(new Date()); super.updateById(entity); return true; } return false; } } src/main/java/org/jeecg/modules/sap/service/impl/OrderMaterialRequestServiceImpl.java
@@ -82,7 +82,7 @@ MaterialRequestDTO response = new MaterialRequestDTO(); String zmess = function.getExportParameterList().getValue("O_IS_OK").toString(); String ztype = function.getExportParameterList().getValue("O_MESSAGE").toString();//S 标识 成功 String resv = function.getExportParameterList().getValue("O_SAP_RESV").toString();//S 标识 成功 String resv = function.getExportParameterList().getValue("O_SAP_RESV").toString(); response.setO_IS_OK(ztype); response.setO_MESSAGE(zmess); response.setO_SAP_RESV(resv);