From c0d1e380e58dd6ae4a5ae49a4e1774def96b04d2 Mon Sep 17 00:00:00 2001 From: 15066119699 Date: Thu, 13 Mar 2025 09:17:25 +0800 Subject: [PATCH] 1 --- .../web/controller/app/AppPmsController.java | 22 ++++++ .../app/AppPmsOrderInController.java | 17 +++++ .../com/ruoyi/app/domain/AppPmsOrderIn.java | 20 +++--- .../app/service/IAppPmsOrderInService.java | 6 ++ .../impl/AppPmsOrderInServiceImpl.java | 72 ++++++++++++++++++- .../impl/AppPmsOrderOutServiceImpl.java | 15 ++-- 6 files changed, 132 insertions(+), 20 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/app/AppPmsController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/app/AppPmsController.java index a4b59b2e..93b95b6a 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/app/AppPmsController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/app/AppPmsController.java @@ -100,6 +100,28 @@ public class AppPmsController extends BaseController { return AjaxResult.success("success"); } + /** + * 更新手动入库单请求 + */ + @ApiOperation("更新手动入库单请求") + @Log(title = "更新手动入库单请求", skipAuth = true) + @PostMapping("/updateOrderIn") + public AjaxResult updateOrderIn(@RequestBody AppPmsOrderIn appPmsOrderIn) { + logger.info("更新手动入库单请求:{}", JSONObject.toJSONString(appPmsOrderIn)); + + // 判断数据是否缺失 + if (StringUtils.isEmpty(appPmsOrderIn.getGoodsId()) + || StringUtils.isEmpty(appPmsOrderIn.getGoodsDesc()) + || appPmsOrderIn.getGoodsNum() == null) { + return error("缺少请求数据。"); + } + + appPmsOrderIn.setUpdateTime(new Date()); + appPmsOrderInService.updateAppPmsOrderIn(appPmsOrderIn); + + return AjaxResult.success("success"); + } + /** * Pms入库单请求 */ diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/app/AppPmsOrderInController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/app/AppPmsOrderInController.java index db173aa7..139756d2 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/app/AppPmsOrderInController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/app/AppPmsOrderInController.java @@ -25,6 +25,7 @@ import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.core.page.TableDataInfo; +import org.springframework.web.multipart.MultipartFile; /** * 【请填写功能名称】Controller @@ -65,6 +66,22 @@ public class AppPmsOrderInController extends BaseController util.exportExcel(response, list, "【请填写功能名称】数据"); } + @Log(title = "入库单导入", businessType = BusinessType.IMPORT) + @PreAuthorize("@ss.hasPermi('system:out:import')") + @PostMapping("/importData") + public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception { + ExcelUtil util = new ExcelUtil(AppPmsOrderIn.class); + List appPmsOrderInList = util.importExcel(file.getInputStream()); + String message = appPmsOrderInService.importPmsOrderOut(appPmsOrderInList); + return success(message); + } + + @PostMapping("/importTemplate") + public void importTemplate(HttpServletResponse response) { + ExcelUtil util = new ExcelUtil(AppPmsOrderIn.class); + util.importTemplateExcel(response, "入库订单数据"); + } + /** * 获取【请填写功能名称】详细信息 */ diff --git a/ruoyi-system/src/main/java/com/ruoyi/app/domain/AppPmsOrderIn.java b/ruoyi-system/src/main/java/com/ruoyi/app/domain/AppPmsOrderIn.java index 0f2dd310..d9fa5900 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/app/domain/AppPmsOrderIn.java +++ b/ruoyi-system/src/main/java/com/ruoyi/app/domain/AppPmsOrderIn.java @@ -22,15 +22,15 @@ public class AppPmsOrderIn extends BaseEntity private String listId; /** 订单类型 */ - @Excel(name = "订单类型") + @Excel(name = "订单类型",type = Excel.Type.EXPORT) private Integer orderType; /** 客户ID */ - @Excel(name = "客户ID") + @Excel(name = "客户ID",type = Excel.Type.EXPORT) private String customerId; /** 订单号 */ - @Excel(name = "订单号") + @Excel(name = "订单号",type = Excel.Type.EXPORT) private String orderId; /** 物料号 */ @@ -38,15 +38,15 @@ public class AppPmsOrderIn extends BaseEntity private String goodsId; /** 数量 */ - @Excel(name = "数量") + @Excel(name = "入库数量") private BigDecimal goodsNum; /** 使用数量(已入库数量) */ - @Excel(name = "使用数量", readConverterExp = "已=入库数量") + @Excel(name = "使用数量", readConverterExp = "已=入库数量",type = Excel.Type.EXPORT) private BigDecimal usedNum; /** 剩余数量 */ - @Excel(name = "剩余数量") + @Excel(name = "剩余数量",type = Excel.Type.EXPORT) private BigDecimal remainingNum; /** 物料条码 */ @@ -58,19 +58,19 @@ public class AppPmsOrderIn extends BaseEntity private String goodsDesc; /** 物料单位 */ - @Excel(name = "物料单位") + @Excel(name = "物料单位",type = Excel.Type.EXPORT) private String unit; /** 预留1 */ - @Excel(name = "预留1") +// @Excel(name = "预留1") private String spare1; /** 预留2 */ - @Excel(name = "预留2") +// @Excel(name = "预留2") private String spare2; /** 订单状态 */ - @Excel(name = "订单状态") + @Excel(name = "订单状态",type = Excel.Type.EXPORT) private Integer orderStatus; public void setListId(String listId) diff --git a/ruoyi-system/src/main/java/com/ruoyi/app/service/IAppPmsOrderInService.java b/ruoyi-system/src/main/java/com/ruoyi/app/service/IAppPmsOrderInService.java index ef954554..bcf2d5e1 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/app/service/IAppPmsOrderInService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/app/service/IAppPmsOrderInService.java @@ -65,4 +65,10 @@ public interface IAppPmsOrderInService public int pmsStockInComplete(PmsStockInCompleteReq request); + /** + * 导入入库单数据 + * @param appPmsOrderInList + * @return + */ + String importPmsOrderOut(List appPmsOrderInList); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/app/service/impl/AppPmsOrderInServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/app/service/impl/AppPmsOrderInServiceImpl.java index a84fcdcc..da582a97 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/app/service/impl/AppPmsOrderInServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/app/service/impl/AppPmsOrderInServiceImpl.java @@ -1,24 +1,37 @@ package com.ruoyi.app.service.impl; import java.math.BigDecimal; +import java.util.Date; import java.util.List; +import java.util.UUID; +import cn.hutool.core.collection.CollectionUtil; +import com.ruoyi.app.domain.AppGoods; import com.ruoyi.app.domain.AppPendingStorage; import com.ruoyi.app.domain.AppPmsOrderIn; +import com.ruoyi.app.domain.AppPmsOrderOut; import com.ruoyi.app.domain.DTO.PmsInData; import com.ruoyi.app.domain.DTO.PmsStockInCompleteReq; +import com.ruoyi.app.mapper.AppGoodsMapper; import com.ruoyi.app.mapper.AppPendingStorageMapper; import com.ruoyi.app.mapper.AppPmsOrderInMapper; import com.ruoyi.app.service.IAppPmsOrderInService; +import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.DateUtils; +import com.ruoyi.common.utils.OrderCodeFactory; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.uuid.IdUtils; +import org.apache.commons.lang3.ObjectUtils; import org.apache.ibatis.javassist.compiler.ast.Variable; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import static com.ruoyi.common.utils.SecurityUtils.getUsername; + /** * 【请填写功能名称】Service业务层处理 * @@ -28,15 +41,18 @@ import org.springframework.transaction.annotation.Transactional; @Service public class AppPmsOrderInServiceImpl implements IAppPmsOrderInService { + private static final Logger log = LoggerFactory.getLogger(AppPmsOrderInServiceImpl.class); + @Autowired private AppPmsOrderInMapper appPmsOrderInMapper; @Autowired private AppPendingStorageMapper appPendingStorageMapper; - + @Autowired + private AppGoodsMapper appGoodsMapper; /** * 查询【请填写功能名称】 * - * @param listId 【请填写功能名称】主键 + * @param id 【请填写功能名称】主键 * @return 【请填写功能名称】 */ @Override @@ -151,4 +167,56 @@ public class AppPmsOrderInServiceImpl implements IAppPmsOrderInService } return insertNum; } + + @Override + @Transactional + public String importPmsOrderOut(List appPmsOrderInList) { + if (CollectionUtil.isEmpty(appPmsOrderInList)) { + throw new ServiceException("导入入库订单数据不能为空!"); + } + int successNum = 0; + int failureNum = 0; + StringBuilder successMsg = new StringBuilder(); + StringBuilder failureMsg = new StringBuilder(); + for (AppPmsOrderIn appPmsOrderIn : appPmsOrderInList) { + try { + String orderId= OrderCodeFactory.getOrderCode("RK", ""); + appPmsOrderIn.setId(OrderCodeFactory.getOrderCode("","")); + appPmsOrderIn.setListId(orderId); + appPmsOrderIn.setOrderType(9); + appPmsOrderIn.setOrderId(UUID.randomUUID().toString()); + appPmsOrderIn.setUsedNum(BigDecimal.ZERO); + appPmsOrderIn.setRemainingNum(appPmsOrderIn.getGoodsNum()); + appPmsOrderIn.setOrderStatus(0); + appPmsOrderIn.setCreateTime(new Date()); + appPmsOrderIn.setUpdateTime(new Date()); + appPmsOrderIn.setCreateBy(getUsername()); + appPmsOrderIn.setRemark("导入入库通知"); + + // 校验物料是否存在 + AppGoods oldAppGoods = appGoodsMapper.selectAppGoodsByGoodsId(appPmsOrderIn.getGoodsId()); + if (ObjectUtils.isEmpty(oldAppGoods)) { + failureNum++; + failureMsg.append("
" + failureNum + "、物料 " + appPmsOrderIn.getGoodsId() + " 不存在"); + } + + appPmsOrderInMapper.insertAppPmsOrderIn(appPmsOrderIn); + successNum++; + successMsg.append("
" + successNum + "、入库订单 " + appPmsOrderIn.getGoodsId() + " 导入成功"); + + } catch (Exception e) { + failureNum++; + String msg = "
" + failureNum + "、入库订单 " + appPmsOrderIn.getGoodsId() + " 导入失败:"; + failureMsg.append(msg + e.getMessage()); + log.error(msg, e); + } + } + if (failureNum > 0) { + failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:"); + throw new ServiceException(failureMsg.toString()); + } else { + successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:"); + } + return successMsg.toString(); + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/app/service/impl/AppPmsOrderOutServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/app/service/impl/AppPmsOrderOutServiceImpl.java index 7ea99923..3e15932c 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/app/service/impl/AppPmsOrderOutServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/app/service/impl/AppPmsOrderOutServiceImpl.java @@ -19,6 +19,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import static com.ruoyi.common.utils.SecurityUtils.getUsername; @@ -118,9 +119,10 @@ public class AppPmsOrderOutServiceImpl implements IAppPmsOrderOutService } @Override + @Transactional public String importPmsOrderOut(String id,String orderId,List appPmsOrderOutList, boolean isUpdateSupport) { if (CollectionUtil.isEmpty(appPmsOrderOutList)) { - throw new ServiceException("导入库位数据不能为空!"); + throw new ServiceException("导入出库订单数据不能为空!"); } int successNum = 0; int failureNum = 0; @@ -139,23 +141,20 @@ public class AppPmsOrderOutServiceImpl implements IAppPmsOrderOutService appPmsOrderOut.setTrNum(BigDecimal.ZERO); appPmsOrderOut.setCreateBy(getUsername()); - // 校验同一个订单号中的物料 - AppPmsOrderOut query = new AppPmsOrderOut(); - query.setOrderId(appPmsOrderOut.getOrderId()); - AppGoods oldAppGoods = appGoodsMapper.selectAppGoodsById(appPmsOrderOut.getGoodsId()); + // 校验物料是否存在 + AppGoods oldAppGoods = appGoodsMapper.selectAppGoodsByGoodsId(appPmsOrderOut.getGoodsId()); if (ObjectUtils.isEmpty(oldAppGoods)) { failureNum++; failureMsg.append("
" + failureNum + "、物料 " + appPmsOrderOut.getGoodsId() + " 不存在"); } - appPmsOrderOutMapper.insertAppPmsOrderOut(appPmsOrderOut); successNum++; - successMsg.append("
" + successNum + "、库位 " + appPmsOrderOut.getGoodsId() + " 导入成功"); + successMsg.append("
" + successNum + "、出库订单 " + appPmsOrderOut.getGoodsId() + " 导入成功"); } catch (Exception e) { failureNum++; - String msg = "
" + failureNum + "、库位 " + appPmsOrderOut.getGoodsId() + " 导入失败:"; + String msg = "
" + failureNum + "、出库订单 " + appPmsOrderOut.getGoodsId() + " 导入失败:"; failureMsg.append(msg + e.getMessage()); log.error(msg, e); }