From 87bba3ea0f7a1a0f552de578390a3efa7d64f17e Mon Sep 17 00:00:00 2001 From: LiJianZhao Date: Mon, 21 Apr 2025 11:12:29 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BA=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 6 + .../clinic/server/common/util/VoUtil.java | 122 ++++++++++++++ .../server/controller/BaseController.java | 6 +- .../inventory/InventoryApplyController.java | 78 +++++++++ .../inventory/InventoryCheckController.java | 65 ++++++++ .../inventory/InventoryController.java | 123 +++++++++++++- .../InventoryPurchaseController.java | 134 +++++++++++++++ .../InventorySupplierController.java | 58 +++++++ .../entity/inventory/dto/ApplyOrderQuery.java | 11 ++ .../entity/inventory/dto/CheckQuery.java | 11 ++ .../inventory/dto/PurchaseOrderQuery.java | 12 ++ .../entity/inventory/dto/SupplierQuery.java | 12 ++ .../InventoryGoodsVo.java} | 4 +- .../inventory/vo/InventoryPurchaseVo.java | 56 +++++++ .../mapper/inventory/InventoryLogMapper.java | 7 +- .../clinic/server/service/BaseService.java | 12 +- .../server/service/goods/GoodsService.java | 9 + .../inventory/InventoryApplyService.java | 17 +- .../inventory/InventoryCheckService.java | 16 +- .../inventory/InventoryPurchaseService.java | 155 +++++++++++++++++- .../service/inventory/InventoryService.java | 28 +++- .../inventory/InventorySupplierService.java | 38 +++++ .../service/medical/MedicalRecordService.java | 6 +- 23 files changed, 932 insertions(+), 54 deletions(-) create mode 100644 src/main/java/com/syjiaer/clinic/server/common/util/VoUtil.java create mode 100644 src/main/java/com/syjiaer/clinic/server/controller/inventory/InventoryApplyController.java create mode 100644 src/main/java/com/syjiaer/clinic/server/controller/inventory/InventoryCheckController.java create mode 100644 src/main/java/com/syjiaer/clinic/server/controller/inventory/InventoryPurchaseController.java create mode 100644 src/main/java/com/syjiaer/clinic/server/controller/inventory/InventorySupplierController.java create mode 100644 src/main/java/com/syjiaer/clinic/server/entity/inventory/dto/ApplyOrderQuery.java create mode 100644 src/main/java/com/syjiaer/clinic/server/entity/inventory/dto/CheckQuery.java create mode 100644 src/main/java/com/syjiaer/clinic/server/entity/inventory/dto/PurchaseOrderQuery.java create mode 100644 src/main/java/com/syjiaer/clinic/server/entity/inventory/dto/SupplierQuery.java rename src/main/java/com/syjiaer/clinic/server/entity/inventory/{InventoryGoodsView.java => vo/InventoryGoodsVo.java} (90%) create mode 100644 src/main/java/com/syjiaer/clinic/server/entity/inventory/vo/InventoryPurchaseVo.java create mode 100644 src/main/java/com/syjiaer/clinic/server/service/inventory/InventorySupplierService.java diff --git a/pom.xml b/pom.xml index cffd89f..e2a7e25 100644 --- a/pom.xml +++ b/pom.xml @@ -31,6 +31,7 @@ + org.springframework.boot spring-boot-starter-web @@ -103,6 +104,11 @@ springfox-swagger-ui 2.9.2 + + commons-beanutils + commons-beanutils + 1.9.4 + diff --git a/src/main/java/com/syjiaer/clinic/server/common/util/VoUtil.java b/src/main/java/com/syjiaer/clinic/server/common/util/VoUtil.java new file mode 100644 index 0000000..005786d --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/util/VoUtil.java @@ -0,0 +1,122 @@ +package com.syjiaer.clinic.server.common.util; + +import com.syjiaer.clinic.server.common.exception.MessageException; +import org.apache.commons.beanutils.BeanUtils; +import org.springframework.beans.BeanWrapperImpl; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.*; +import java.util.stream.Collectors; + +public class VoUtil { + + /** + * 合并两个实体类列表 + * @param mainList 主列表(以该列表数据为基础) + * @param subList 待合并列表 + * @param linkField 关联字段名 + * @return 合并后的List + */ + public static List> mergeEntities( + List mainList, + List subList, + String linkField) { + + // 将主列表转换为以关联字段为Key的Map + Map mainMap = mainList.stream() + .collect(Collectors.toMap( + e -> getFieldValue(e, linkField), + e -> e, + (existing, replacement) -> existing)); + + // 创建结果容器 + List> result = new ArrayList<>(); + + // 处理主列表元素 + for (T mainEntity : mainList) { + Map mergedMap = new LinkedHashMap<>(); + + // 主实体转Map + try { + Map describe = BeanUtils.describe(mainEntity); + describe.forEach((k, v) -> { + if (!"class".equals(k)) { + + try { + mergedMap.put(k, v == null ? null : mainEntity.getClass().getMethod("get" + capitalize(k)).invoke(mainEntity)); + } catch (IllegalAccessException e) { + throw new MessageException(e.getMessage()); + } catch (InvocationTargetException e) { + throw new MessageException(e.getMessage()); + } catch (NoSuchMethodException e) { + throw new MessageException(e.getMessage()); + } + + } + }); + } catch (Exception e) { + throw new MessageException("Failed to describe main entity", e); + } + + // 查找关联的子实体 + Object linkValue = getFieldValue(mainEntity, linkField); + + subList.stream() + .filter(sub -> Objects.equals(getFieldValue(sub, linkField), linkValue)) + .findFirst() + .ifPresent(subEntity -> { + // 合并子实体属性 + try { + Map subDescribe = BeanUtils.describe(subEntity); + subDescribe.forEach((k, v) -> { + if (!"class".equals(k) && v != null) { + try { + mergedMap.put(k, subEntity.getClass().getMethod("get" + capitalize(k)).invoke(subEntity)); + } catch (IllegalAccessException e) { + throw new MessageException(e.getMessage()); + } catch (InvocationTargetException e) { + throw new MessageException(e.getMessage()); + } catch (NoSuchMethodException e) { + throw new MessageException(e.getMessage()); + } + } + }); + } catch (Exception ex) { + throw new MessageException("Failed to describe sub entity", ex); + } + }); + + result.add(mergedMap); + } + + return result; + } + + /** + * 获取对象指定字段的值 + * @param obj 对象 + * @param fieldName 字段名 + * @return 字段值 + */ + private static Object getFieldValue(T obj, String fieldName) { + try { + Method method = new BeanWrapperImpl(obj).getPropertyDescriptor(fieldName).getReadMethod(); + return method.invoke(obj); + } catch (Exception e) { + throw new RuntimeException("Failed to get field value: " + fieldName, e); + } + } + + /** + * 首字母大写 + * @param str 字符串 + * @return 转换后的字符串 + */ + private static String capitalize(String str) { + if (str == null || str.isEmpty()) { + return str; + } + return str.substring(0, 1).toUpperCase() + str.substring(1); + } +} diff --git a/src/main/java/com/syjiaer/clinic/server/controller/BaseController.java b/src/main/java/com/syjiaer/clinic/server/controller/BaseController.java index 4f319dd..4ec28fb 100644 --- a/src/main/java/com/syjiaer/clinic/server/controller/BaseController.java +++ b/src/main/java/com/syjiaer/clinic/server/controller/BaseController.java @@ -14,11 +14,11 @@ import java.util.Map; public abstract class BaseController { @Autowired - private InfoUtil infoUtil; + protected InfoUtil infoUtil; @Autowired - private ParmsUtil parmsUtil; + protected ParmsUtil parmsUtil; @Autowired - private HeadersUtil headersUtil; + protected HeadersUtil headersUtil; // 使用 ThreadLocal 来缓存请求参数 diff --git a/src/main/java/com/syjiaer/clinic/server/controller/inventory/InventoryApplyController.java b/src/main/java/com/syjiaer/clinic/server/controller/inventory/InventoryApplyController.java new file mode 100644 index 0000000..af72d05 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/controller/inventory/InventoryApplyController.java @@ -0,0 +1,78 @@ +package com.syjiaer.clinic.server.controller.inventory; + +import com.alibaba.fastjson2.JSONArray; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.syjiaer.clinic.server.common.constants.Constants; +import com.syjiaer.clinic.server.common.enums.InventorySocialTypeEnum; +import com.syjiaer.clinic.server.common.enums.InventoryTypeEnum; +import com.syjiaer.clinic.server.common.exception.MessageException; +import com.syjiaer.clinic.server.common.vo.Page; +import com.syjiaer.clinic.server.common.vo.Result; +import com.syjiaer.clinic.server.controller.BaseController; +import com.syjiaer.clinic.server.entity.inventory.InventoryApply; +import com.syjiaer.clinic.server.entity.inventory.dto.ApplyOrderQuery; +import com.syjiaer.clinic.server.service.inventory.InventoryApplyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; +import java.util.Map; + +@Slf4j +@RestController +@RequestMapping("/inventory/apply") +public class InventoryApplyController extends BaseController { + @Autowired + private InventoryApplyService inventoryApplyService; + + + /** + * 创建领用单并领用 + */ + @RequestMapping("/create") + @Transactional(rollbackFor = Exception.class) + public Result create() { + List mapList = parmsUtil.getList("data",Map.class); + InventoryApply useInfo = parmsUtil.getObject("useInfo", InventoryApply.class); + inventoryApplyService.create(mapList,useInfo); + return success(); + + } + + /** + * 分页查询领用单 + */ + @RequestMapping("/list") + public Result list() { + ApplyOrderQuery query = parmsUtil.getObject("query", ApplyOrderQuery.class); + if (query == null){ + return error("没有带查询条件"); + } + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(query.getPageNum() == null || query.getPageNum() == 0){ + query.setPageNum(1); + } + if (query.getPageSize() == null || query.getPageSize() == 0){ + query.setPageSize(Constants.DetailPageSize); + } + Page inventoryApplyPage = inventoryApplyService.listPage(query); + return success(inventoryApplyPage); + } + + /** + * 获取领用单详情 + */ + @RequestMapping("/getApplyDetail") + public Result getCheckDetail(){ + Integer applyId = parmsUtil.getInteger("id", "id不能为空"); + return success(inventoryApplyService.getCheckDetail(applyId)); + + } + +} diff --git a/src/main/java/com/syjiaer/clinic/server/controller/inventory/InventoryCheckController.java b/src/main/java/com/syjiaer/clinic/server/controller/inventory/InventoryCheckController.java new file mode 100644 index 0000000..982ab03 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/controller/inventory/InventoryCheckController.java @@ -0,0 +1,65 @@ +package com.syjiaer.clinic.server.controller.inventory; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.syjiaer.clinic.server.common.constants.Constants; +import com.syjiaer.clinic.server.common.enums.InventorySocialTypeEnum; +import com.syjiaer.clinic.server.common.enums.InventoryTypeEnum; +import com.syjiaer.clinic.server.common.vo.Page; +import com.syjiaer.clinic.server.common.vo.Result; +import com.syjiaer.clinic.server.controller.BaseController; +import com.syjiaer.clinic.server.entity.inventory.InventoryCheck; +import com.syjiaer.clinic.server.entity.inventory.dto.CheckQuery; +import com.syjiaer.clinic.server.service.inventory.InventoryCheckService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; +import java.util.Map; + +@RestController +@RequestMapping("/inventory/check") +public class InventoryCheckController extends BaseController { + @Autowired + private InventoryCheckService inventoryCheckService; + + /** + * 盘点列表分页查询 + */ + @RequestMapping("/list") + public Result> list() { + CheckQuery query= parmsUtil.getObject("query", CheckQuery.class); + if (query == null){ + return error("没有带查询条件"); + } + return success(inventoryCheckService.listPage(query)); + } + + + /** + * 保存盘点记录 + */ + @RequestMapping("/save") + @Transactional + public Result save() { + List list = parmsUtil.getList("list", Map.class); + String remark = parmsUtil.getString("remark"); + inventoryCheckService.save(list,remark); + return success(); + } + + /** + * 获取盘点单详情 + */ + @RequestMapping("/getCheckDetail") + public Result getCheckDetail(){ + Integer checkId = parmsUtil.getInteger("id", "id不能为空"); + return success(inventoryCheckService.getCheckDetail(checkId)); + + } +} diff --git a/src/main/java/com/syjiaer/clinic/server/controller/inventory/InventoryController.java b/src/main/java/com/syjiaer/clinic/server/controller/inventory/InventoryController.java index dbfdb94..2382192 100644 --- a/src/main/java/com/syjiaer/clinic/server/controller/inventory/InventoryController.java +++ b/src/main/java/com/syjiaer/clinic/server/controller/inventory/InventoryController.java @@ -1,37 +1,148 @@ package com.syjiaer.clinic.server.controller.inventory; +import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.syjiaer.clinic.server.common.enums.InventorySocialTypeEnum; +import com.syjiaer.clinic.server.common.enums.InventoryTypeEnum; +import com.syjiaer.clinic.server.common.enums.UploadStatusEnum; +import com.syjiaer.clinic.server.common.util.DateUtil; import com.syjiaer.clinic.server.common.vo.Result; import com.syjiaer.clinic.server.controller.BaseController; +import com.syjiaer.clinic.server.entity.goods.Goods; import com.syjiaer.clinic.server.entity.inventory.Inventory; +import com.syjiaer.clinic.server.entity.manager.ManagerUser; import com.syjiaer.clinic.server.service.goods.GoodsService; import com.syjiaer.clinic.server.service.inventory.InventoryPurchaseService; import com.syjiaer.clinic.server.service.inventory.InventoryService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; @Slf4j @RestController @RequestMapping("/inventory/goods") public class InventoryController extends BaseController { @Autowired - private GoodsService iGoodsService; + private GoodsService goodsService; @Autowired private InventoryPurchaseService iInventoryPurchaseService; @Autowired - private InventoryService iInventoryService; + private InventoryService inventoryService; /** *根据采购单code 获取采购单信息 */ @RequestMapping("/listByOrderCode") public Result> listByOrderCode() { - String orderCode = parmsUtil.getString("orderCode", "请输入订单号"); - QueryWrapper queryWrapper = new QueryWrapper(); - queryWrapper.eq("inventory_purchase_code", orderCode); - return success(iInventoryService.list(queryWrapper)); + String purchaseCode = parmsUtil.getString("orderCode", "请输入订单号"); + return success(inventoryService.listByPurchaseCode(purchaseCode)); + } + + + + /** + * 根据goodsId 获取该goods的所有库存信息 带库存总量 + */ + @RequestMapping("/getByGoodsId") + public Result> getByGoodsId() { + int goodsId = parmsUtil.getInteger("goodsId", "请输入商品ID"); + + Goods goods = goodsService.getById(goodsId); + if (goods == null) { + return error("商品不存在"); + } + Map goodsMap = JSON.parseObject(JSON.toJSONString(goods), Map.class); + List list = inventoryService.getListByGoodsId(goodsId); + List> listMap = new ArrayList<>(); + for (Inventory inventory : list) { + Map map = new HashMap<>(); + map.put("id", inventory.getId()); + map.put("wholeNumber", inventory.getWholeNumber()); + map.put("fragmentNumber", inventory.getFragmentNumber()); + map.put("productionBatchCode", inventory.getProductionBatchCode()); + map.put("productionDate", inventory.getProductionDate()); + map.put("expiryDate", inventory.getExpiryDate()); + map.put("purchaseUnitPrice", inventory.getPurchaseUnitPrice()); + listMap.add(map); + } + goodsMap.put("inventoryGoodsList", listMap); + Map map = inventoryService.totalNumber(goodsId); + goodsMap.putAll(map); + return success(goodsMap); + } + + + /** + * 根据goodsId 获取该goods的所有库存信息 + */ + @RequestMapping("/getListByGoodsId") + public Result> getListByGoodsId() { + int goodsId = parmsUtil.getInteger("goodsId", "请输入商品ID"); + Goods goods = goodsService.getById(goodsId); + if (goods == null) { + return error("商品不存在"); + } + List list = inventoryService.getListByGoodsId(goodsId); + return success(list); + } + + /** + * 根据id集合获取库存信息 + */ + @RequestMapping("/getListByIds") + public Result> getListByIds() { + List ids = parmsUtil.getIntList("idList"); + if (ids == null || ids.isEmpty()) { + return success(new ArrayList<>()); + } + List list = inventoryService.getListByIds(ids); + return success(list); + } + + /** + * 进销存统计 + */ + @RequestMapping("/getInventoryStatistics") + public Result< List> getInventoryStatistics() { + int goodsId = parmsUtil.getInteger("goodsId","请选择商品id"); + String startDateStr = parmsUtil.getString("startDate","请选择开始时间"); + String endDateStr= parmsUtil.getString("endDate","请选择结束时间"); + LocalDateTime startDateTime = DateUtil.getDateTime(startDateStr); + LocalDateTime endDateTime = DateUtil.getDateTime(endDateStr).plusDays(1); + List inventoryStatistics = inventoryService.getInventoryStatistics(goodsId, startDateTime, endDateTime); + return success(inventoryStatistics); + } + + //todo getInventoryLog + @RequestMapping("/getInventoryLog") + public Result>> getInventoryLog() { + int goodsId = parmsUtil.getInteger("goodsId","请选择商品id"); + String startDateStr = parmsUtil.getString("startDate","请选择开始时间"); + String endDateStr= parmsUtil.getString("endDate","请选择结束时间"); + LocalDateTime startDateTime = DateUtil.getDateTime(startDateStr); + LocalDateTime endDateTime = DateUtil.getDateTime(endDateStr).plusDays(1); + List> inventoryStatistics = inventoryService.getInventoryLogByGoodsId(goodsId, startDateTime, endDateTime); + return success(inventoryStatistics); + } + + /** + * 采购单 采购项修改 + * @return + */ + @RequestMapping("/update") + @Transactional(rollbackFor = Exception.class) + public Result update() { + List list = parmsUtil.getList("list", Inventory.class); + inventoryService.updatePurchaseItem(list); + return success(); } } diff --git a/src/main/java/com/syjiaer/clinic/server/controller/inventory/InventoryPurchaseController.java b/src/main/java/com/syjiaer/clinic/server/controller/inventory/InventoryPurchaseController.java new file mode 100644 index 0000000..b087d59 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/controller/inventory/InventoryPurchaseController.java @@ -0,0 +1,134 @@ +package com.syjiaer.clinic.server.controller.inventory; + +import com.alibaba.fastjson2.JSON; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.syjiaer.clinic.server.common.constants.Constants; +import com.syjiaer.clinic.server.common.enums.InventorySocialTypeEnum; +import com.syjiaer.clinic.server.common.enums.InventoryTypeEnum; +import com.syjiaer.clinic.server.common.enums.UploadStatusEnum; +import com.syjiaer.clinic.server.common.exception.MessageException; +import com.syjiaer.clinic.server.common.vo.Page; +import com.syjiaer.clinic.server.common.vo.Result; +import com.syjiaer.clinic.server.controller.BaseController; +import com.syjiaer.clinic.server.entity.inventory.Inventory; +import com.syjiaer.clinic.server.entity.inventory.InventoryPurchase; +import com.syjiaer.clinic.server.entity.inventory.dto.PurchaseOrderQuery; +import com.syjiaer.clinic.server.entity.inventory.vo.InventoryPurchaseVo; +import com.syjiaer.clinic.server.service.inventory.InventoryPurchaseService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.math.BigDecimal; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + *

+ * 前端控制器 + *

+ * + * @author NiuZiYuan + * @since 2025-02-26 + */ +@RestController +@RequestMapping("/inventory/order") +public class InventoryPurchaseController extends BaseController { + @Autowired + private InventoryPurchaseService inventoryPurchaseService; + + + /** + * 创建采购单 + * @return + */ + @RequestMapping("/create") + public Result create() { + InventoryPurchase purchase_order = parmsUtil.getObject("inventoryOrder", InventoryPurchase.class); + List list = parmsUtil.getList("inventoryOrderGoodsList", Inventory.class, "请至少采购一件商品"); + inventoryPurchaseService.create(purchase_order,list); + return success(); + + } + + /** + * 分页查采购单 + * @return + */ + @RequestMapping("/list") + public Result> list() { + PurchaseOrderQuery query = parmsUtil.getObject("query", PurchaseOrderQuery.class); + if (query == null) { + return error("没有带查询条件"); + } + if (query.getPageNum() == null || query.getPageNum() == 0) { + query.setPageNum(1); + } + if (query.getPageSize() == null || query.getPageSize() == 0) { + query.setPageSize(Constants.DetailPageSize); + } + return success(inventoryPurchaseService.listPage(query)); + } + + /** + * 获取采购单详情 + */ + @RequestMapping("/detail") + public Result> detail() { + String code = parmsUtil.getString("code","采购单号不能为空"); + Map byCode = inventoryPurchaseService.getByCode(code); + return success(byCode); + } + + /** + * 更新采购单基本信息 + * @return + */ + @RequestMapping("/update") + public Result update() { + InventoryPurchase inventoryOrder = parmsUtil.getObject("inventoryOrder", InventoryPurchase.class); + if (inventoryOrder.getInvoiceCode() == null || inventoryOrder.getInvoiceCode().isEmpty()) { + inventoryOrder.setInvoiceCode("无"); + } + inventoryPurchaseService.updateById(inventoryOrder); + return success(); + } + + /** + * 采购单修改时 添加采购的商品 + * @return + */ + @RequestMapping("/addOneGoods") + @Transactional(rollbackFor = Exception.class) + public Result addOneGoods() { + Inventory inventory = parmsUtil.getObject("data", Inventory.class); + if (inventory == null) { + return error("库存商品为空"); + } + if (inventory.getInventoryPurchaseCode() == null) { + return error("订单为空"); + } + inventoryPurchaseService.addOneGoods(inventory); + + return success(); + } + + /** + *采购单退货 + * @return + */ + @RequestMapping("/returnable") + @Transactional(rollbackFor = Exception.class) + public Result returnable() { + List list = parmsUtil.getIntList("idList"); + if (list == null || list.isEmpty()) { + return error("请选择要退货的商品"); + } + inventoryPurchaseService.returnable(list); + return success(); + } + +} diff --git a/src/main/java/com/syjiaer/clinic/server/controller/inventory/InventorySupplierController.java b/src/main/java/com/syjiaer/clinic/server/controller/inventory/InventorySupplierController.java new file mode 100644 index 0000000..08b75dd --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/controller/inventory/InventorySupplierController.java @@ -0,0 +1,58 @@ +package com.syjiaer.clinic.server.controller.inventory; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.syjiaer.clinic.server.common.constants.Constants; +import com.syjiaer.clinic.server.common.vo.Page; +import com.syjiaer.clinic.server.common.vo.Result; +import com.syjiaer.clinic.server.controller.BaseController; +import com.syjiaer.clinic.server.entity.inventory.InventorySupplier; +import com.syjiaer.clinic.server.entity.inventory.dto.SupplierQuery; +import com.syjiaer.clinic.server.service.inventory.InventorySupplierService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; +import java.util.Map; + +@RestController +@RequestMapping("/inventory/supplier") +public class InventorySupplierController extends BaseController { + @Autowired + private InventorySupplierService inventorySupplierService; + + /** + * 分页查询 供货商 + * @return + */ + @RequestMapping("/list") + public Result list() { + SupplierQuery query= parmsUtil.getObject("query", SupplierQuery.class); + if (query == null){ + return error("没有带查询条件"); + } + QueryWrapper queryWrapper = new QueryWrapper(); + if(query.getTurn() != null){ + queryWrapper.eq("turn",1); + } + if(query.getPageNum() == null || query.getPageNum() == 0){ + query.setPageNum(1); + } + if (query.getPageSize() == null || query.getPageSize() == 0){ + query.setPageSize(Constants.DetailPageSize); + } + return success(inventorySupplierService.listPage(query)); + } + + /** + * 保存供货商 + * @return + */ + @RequestMapping("/save") + public Result save() { + InventorySupplier inventorySupplier = parmsUtil.getObject("inventorySupplier", InventorySupplier.class); + inventorySupplierService.saveOrUpdate(inventorySupplier); + return success(); + } +} diff --git a/src/main/java/com/syjiaer/clinic/server/entity/inventory/dto/ApplyOrderQuery.java b/src/main/java/com/syjiaer/clinic/server/entity/inventory/dto/ApplyOrderQuery.java new file mode 100644 index 0000000..b03925b --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/entity/inventory/dto/ApplyOrderQuery.java @@ -0,0 +1,11 @@ +package com.syjiaer.clinic.server.entity.inventory.dto; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class ApplyOrderQuery { + private Integer pageNum; + private Integer pageSize; +} diff --git a/src/main/java/com/syjiaer/clinic/server/entity/inventory/dto/CheckQuery.java b/src/main/java/com/syjiaer/clinic/server/entity/inventory/dto/CheckQuery.java new file mode 100644 index 0000000..657cda1 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/entity/inventory/dto/CheckQuery.java @@ -0,0 +1,11 @@ +package com.syjiaer.clinic.server.entity.inventory.dto; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class CheckQuery { + private Integer pageNum; + private Integer pageSize; +} diff --git a/src/main/java/com/syjiaer/clinic/server/entity/inventory/dto/PurchaseOrderQuery.java b/src/main/java/com/syjiaer/clinic/server/entity/inventory/dto/PurchaseOrderQuery.java new file mode 100644 index 0000000..4918a8a --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/entity/inventory/dto/PurchaseOrderQuery.java @@ -0,0 +1,12 @@ +package com.syjiaer.clinic.server.entity.inventory.dto; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PurchaseOrderQuery { + private Integer pageNum; + private Integer pageSize; + +} diff --git a/src/main/java/com/syjiaer/clinic/server/entity/inventory/dto/SupplierQuery.java b/src/main/java/com/syjiaer/clinic/server/entity/inventory/dto/SupplierQuery.java new file mode 100644 index 0000000..9a02420 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/entity/inventory/dto/SupplierQuery.java @@ -0,0 +1,12 @@ +package com.syjiaer.clinic.server.entity.inventory.dto; + +import lombok.Getter; +import lombok.Setter; + +@Setter +@Getter +public class SupplierQuery { + private Integer pageNum; + private Integer pageSize; + private Integer turn; +} diff --git a/src/main/java/com/syjiaer/clinic/server/entity/inventory/InventoryGoodsView.java b/src/main/java/com/syjiaer/clinic/server/entity/inventory/vo/InventoryGoodsVo.java similarity index 90% rename from src/main/java/com/syjiaer/clinic/server/entity/inventory/InventoryGoodsView.java rename to src/main/java/com/syjiaer/clinic/server/entity/inventory/vo/InventoryGoodsVo.java index d0d0b2e..fdde84f 100644 --- a/src/main/java/com/syjiaer/clinic/server/entity/inventory/InventoryGoodsView.java +++ b/src/main/java/com/syjiaer/clinic/server/entity/inventory/vo/InventoryGoodsVo.java @@ -1,4 +1,4 @@ -package com.syjiaer.clinic.server.entity.inventory; +package com.syjiaer.clinic.server.entity.inventory.vo; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; @@ -26,7 +26,7 @@ import java.time.LocalDateTime; @Accessors(chain = true) @TableName("inventory_goods_view") @ApiModel(value = "InventoryGoodsView对象", description = "") -public class InventoryGoodsView implements Serializable { +public class InventoryGoodsVo implements Serializable { private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/syjiaer/clinic/server/entity/inventory/vo/InventoryPurchaseVo.java b/src/main/java/com/syjiaer/clinic/server/entity/inventory/vo/InventoryPurchaseVo.java new file mode 100644 index 0000000..7f40196 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/entity/inventory/vo/InventoryPurchaseVo.java @@ -0,0 +1,56 @@ +package com.syjiaer.clinic.server.entity.inventory.vo; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + *

+ * + *

+ * + * @author NiuZiYuan + * @since 2025-04-09 + */ +@Getter +@Setter +@ToString +@Accessors(chain = true) +@TableName("inventory_purchase_view") +@ApiModel(value = "InventoryPurchaseView对象", description = "") +public class InventoryPurchaseVo implements Serializable { + + private static final long serialVersionUID = 1L; + + private String code; + + private Integer managerUserId; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime purchaseDate; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime createDatetime; + + private Integer supplierId; + + private String remark; + + private String shippingCode; + + private String invoiceCode; + + private Integer kindCount; + + private BigDecimal totalPrice; + + private String managerUserName; + + private String supplierName; +} diff --git a/src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryLogMapper.java b/src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryLogMapper.java index 40bf7d2..0142e57 100644 --- a/src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryLogMapper.java +++ b/src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryLogMapper.java @@ -2,6 +2,11 @@ package com.syjiaer.clinic.server.mapper.inventory; import com.syjiaer.clinic.server.entity.inventory.InventoryLog; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Map; /** @@ -14,5 +19,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; */ public interface InventoryLogMapper extends BaseMapper { -} +} diff --git a/src/main/java/com/syjiaer/clinic/server/service/BaseService.java b/src/main/java/com/syjiaer/clinic/server/service/BaseService.java index 6bdb302..f07eb07 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/BaseService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/BaseService.java @@ -71,8 +71,12 @@ public abstract class BaseService { return managerUser; } - protected Page pageHelper(int pageNum, int pageSize, QueryWrapper queryWrapper, BaseMapper mapper){ + protected Page pageHelper(int pageNum, int pageSize, QueryWrapper queryWrapper, BaseMapper mapper,String orderByStr ,boolean isAsc){ + Long totalCount = mapper.selectCount(queryWrapper); + if (orderByStr == null || orderByStr.isEmpty()){ + queryWrapper.orderBy(true,isAsc,orderByStr); + } queryWrapper.last("LIMIT " + (pageNum - 1) * pageSize + ", " + pageSize); List list = mapper.selectList(queryWrapper); Page page = new Page<>(); @@ -81,7 +85,11 @@ public abstract class BaseService { page.setTotal_page((int) Math.ceil(totalCount / (double) pageSize)); return page; } - protected Map getParms() { + protected Page pageHelper(int pageNum, int pageSize, QueryWrapper queryWrapper, BaseMapper mapper){ + return pageHelper(pageNum, pageSize, queryWrapper, mapper,null,true); + } + + protected Map getParms() { return parmsUtil.getMap(); } diff --git a/src/main/java/com/syjiaer/clinic/server/service/goods/GoodsService.java b/src/main/java/com/syjiaer/clinic/server/service/goods/GoodsService.java index 6f42643..d4a2e10 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/goods/GoodsService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/goods/GoodsService.java @@ -342,4 +342,13 @@ public class GoodsService { updateGoods.setInventoryFragmentNumber(totalFragmentNumber); goodsMapper.updateById(updateGoods); } + + /** + * 根据id查询goods + * @param goodsId 商品id + * @return 商品 + */ + public Goods getById(int goodsId) { + return goodsMapper.selectById(goodsId); + } } diff --git a/src/main/java/com/syjiaer/clinic/server/service/inventory/InventoryApplyService.java b/src/main/java/com/syjiaer/clinic/server/service/inventory/InventoryApplyService.java index 96323ac..3611ff8 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/inventory/InventoryApplyService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/inventory/InventoryApplyService.java @@ -12,6 +12,7 @@ import com.syjiaer.clinic.server.common.vo.Result; import com.syjiaer.clinic.server.entity.inventory.InventoryApply; import com.syjiaer.clinic.server.entity.inventory.InventoryApplyLog; import com.syjiaer.clinic.server.entity.inventory.InventoryLog; +import com.syjiaer.clinic.server.entity.inventory.dto.ApplyOrderQuery; import com.syjiaer.clinic.server.entity.manager.ManagerUser; import com.syjiaer.clinic.server.mapper.inventory.InventoryApplyLogMapper; import com.syjiaer.clinic.server.mapper.inventory.InventoryApplyMapper; @@ -95,19 +96,11 @@ public class InventoryApplyService extends BaseService { /** * 分页查询领用单 */ - public Page list(int pageNum, int pageSize) { + public Page listPage(ApplyOrderQuery query) { QueryWrapper queryWrapper = new QueryWrapper<>(); - long totalCount = inventoryApplyMapper.selectCount(queryWrapper); - int totalPage = (int) Math.ceil((double) totalCount / pageSize); - int offset = (pageNum - 1) * pageSize; - queryWrapper.orderByDesc("create_datetime"); - queryWrapper.last("limit " + pageSize + " offset " + offset); - Page page = new Page<>(); - page.setTotal_count(totalCount); - page.setTotal_page(totalPage); - List inventoryApplies = inventoryApplyMapper.selectList(queryWrapper); - page.setList(inventoryApplies); - return page; + + return pageHelper(query.getPageNum(), query.getPageSize(), + queryWrapper, inventoryApplyMapper, "create_datetime", false); } /** diff --git a/src/main/java/com/syjiaer/clinic/server/service/inventory/InventoryCheckService.java b/src/main/java/com/syjiaer/clinic/server/service/inventory/InventoryCheckService.java index e0f78f3..76b71ed 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/inventory/InventoryCheckService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/inventory/InventoryCheckService.java @@ -8,6 +8,7 @@ import com.syjiaer.clinic.server.common.vo.Page; import com.syjiaer.clinic.server.entity.inventory.InventoryCheck; import com.syjiaer.clinic.server.entity.inventory.InventoryCheckLog; import com.syjiaer.clinic.server.entity.inventory.InventoryLog; +import com.syjiaer.clinic.server.entity.inventory.dto.CheckQuery; import com.syjiaer.clinic.server.entity.manager.ManagerUser; import com.syjiaer.clinic.server.mapper.inventory.InventoryCheckLogMapper; import com.syjiaer.clinic.server.mapper.inventory.InventoryCheckMapper; @@ -33,19 +34,10 @@ public class InventoryCheckService extends BaseService { private InventoryCheckMapper inventoryCheckMapper; @Autowired private InventoryCheckLogMapper inventoryCheckLogMapper; - public Page list(int pageNum, int pageSize) { + public Page listPage(CheckQuery query) { QueryWrapper queryWrapper = new QueryWrapper<>(); - long totalCount = inventoryCheckMapper.selectCount(queryWrapper); - int totalPage = (int) Math.ceil((double) totalCount / pageSize); - int offset = (pageNum - 1) * pageSize; - queryWrapper.orderByDesc("id"); - queryWrapper.last("limit " + pageSize + " offset " + offset); - Page page = new Page<>(); - page.setTotal_count(totalCount); - page.setTotal_page(totalPage); - List inventorySuppliers = inventoryCheckMapper.selectList(queryWrapper); - page.setList(inventorySuppliers); - return page; + return pageHelper(query.getPageNum(), query.getPageSize(), + queryWrapper, inventoryCheckMapper, "create_datetime", false); } @Transactional public void save(List list, String remark) { diff --git a/src/main/java/com/syjiaer/clinic/server/service/inventory/InventoryPurchaseService.java b/src/main/java/com/syjiaer/clinic/server/service/inventory/InventoryPurchaseService.java index 3a8cf43..b7d717a 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/inventory/InventoryPurchaseService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/inventory/InventoryPurchaseService.java @@ -9,9 +9,16 @@ import com.syjiaer.clinic.server.common.vo.Page; import com.syjiaer.clinic.server.common.vo.Result; import com.syjiaer.clinic.server.entity.goods.Goods; import com.syjiaer.clinic.server.entity.inventory.*; +import com.syjiaer.clinic.server.entity.inventory.dto.PurchaseOrderQuery; +import com.syjiaer.clinic.server.entity.inventory.vo.InventoryGoodsVo; +import com.syjiaer.clinic.server.entity.inventory.vo.InventoryPurchaseVo; +import com.syjiaer.clinic.server.entity.manager.ManagerUser; import com.syjiaer.clinic.server.mapper.goods.GoodsMapper; import com.syjiaer.clinic.server.mapper.inventory.*; +import com.syjiaer.clinic.server.mapper.manager.ManagerUserMapper; +import com.syjiaer.clinic.server.service.BaseService; import com.syjiaer.clinic.server.service.goods.GoodsService; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -19,21 +26,22 @@ import java.math.BigDecimal; import java.math.RoundingMode; import java.text.SimpleDateFormat; import java.time.LocalDateTime; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; @Service -public class InventoryPurchaseService { +public class InventoryPurchaseService extends BaseService { @Autowired private GoodsMapper goodsMapper; @Autowired private GoodsService goodsService; @Autowired + private InventoryService inventoryService; + @Autowired private InventoryMapper inventoryMapper; @Autowired - private InventoryService inventoryService; + private ManagerUserMapper managerUserMapper; + @Autowired + private InventorySupplierMapper inventorySupplierMapper; @Autowired private InventoryLogMapper inventoryLogMapper; @Autowired @@ -166,9 +174,10 @@ public class InventoryPurchaseService { goodsService.updateInventoryInfoById(inventory.getGoodId()); } } - /* - * 创建采购订单 - * @param inventory 库存信息 + + /** + * 已有采购单,添加新商品 + * @param inventory 采购的商品 */ public void addOneGoods(Inventory inventory) { QueryWrapper orderWrapper = new QueryWrapper(); @@ -251,4 +260,132 @@ public class InventoryPurchaseService { goodsService.updateInventoryInfoById(inventory.getGoodId()); } + + /** + * 分页查询采购单 + * @param query 查询条件 + * @return + */ + + public Page listPage(PurchaseOrderQuery query) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + Page page = pageHelper(query.getPageNum(), query.getPageSize(), + queryWrapper, inventoryPurchaseMapper, "create_datetime", false); + List voList = new ArrayList<>(); + for (InventoryPurchase inventoryPurchase : page.getList()) { + InventoryPurchaseVo vo = new InventoryPurchaseVo(); + BeanUtils.copyProperties(inventoryPurchase, vo); + vo.setManagerUserName(managerUserMapper.selectById(inventoryPurchase.getManagerUserId()).getName()); + vo.setSupplierName(inventorySupplierMapper.selectById(inventoryPurchase.getSupplierId()).getName()); + voList.add(vo); + } + Page resultPage = new Page<>(); + resultPage.setList(voList); + resultPage.setTotal_count(page.getTotal_count()); + resultPage.setTotal_page(page.getTotal_page()); + return resultPage; + } + + /** + * 获取采购单详情信息 + * @param code 采购单号 + * @return inventoryOrderGoodsList 商品信息 inventoryOrder 采购单信息 + */ + public Map getByCode(String code) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("inventory_purchase_code", code); + queryWrapper.orderByAsc("id"); + List list = inventoryMapper.selectList(queryWrapper); + List goodsVos = new ArrayList<>(); + for (Inventory inventory : list){ + InventoryGoodsVo goodsVo = new InventoryGoodsVo(); + BeanUtils.copyProperties(inventory, goodsVo); + Goods goods = goodsMapper.selectById(inventory.getGoodId()); + BeanUtils.copyProperties(goods, goodsVo); + goodsVos.add(goodsVo); + } + QueryWrapper purchaseQuery = new QueryWrapper(); + purchaseQuery.eq("code", code); + InventoryPurchase inventoryPurchase = inventoryPurchaseMapper.selectOne(purchaseQuery); + InventoryPurchaseVo purchaseVo = new InventoryPurchaseVo(); + BeanUtils.copyProperties(inventoryPurchase, purchaseVo); + purchaseVo.setManagerUserName(managerUserMapper.selectById(inventoryPurchase.getManagerUserId()).getName()); + purchaseVo.setSupplierName(inventorySupplierMapper.selectById(inventoryPurchase.getSupplierId()).getName()); + Map map = new HashMap<>(); + map.put("inventoryOrderGoodsList", goodsVos); + map.put("inventoryOrder", purchaseVo); + return map; + } + + /**. + * 更新采购单基本信息 + * @param inventoryOrder 采购单信息 + */ + public void updateById(InventoryPurchase inventoryOrder) { + InventoryPurchase updateOrder = new InventoryPurchase(); + updateOrder.setCode(inventoryOrder.getCode()); + updateOrder.setManagerUserId(inventoryOrder.getManagerUserId()); + updateOrder.setSupplierId(inventoryOrder.getSupplierId()); + updateOrder.setRemark(inventoryOrder.getRemark()); + updateOrder.setPurchaseDate(inventoryOrder.getPurchaseDate()); + updateOrder.setInvoiceCode(inventoryOrder.getInvoiceCode()); + updateOrder.setShippingCode(inventoryOrder.getShippingCode()); + inventoryPurchaseMapper.updateById(updateOrder); + } + + /** + * 采购单中商品退货 + * @param list inventory表idList + */ + public void returnable(List list) { + + ManagerUser user = getManagerUser(); + + String orderCode = null; + for (Integer id : list) { + Inventory inventory = inventoryMapper.selectById(id); + if (inventory == null) { + throw new MessageException("找不到库存信息"); + } + orderCode = inventory.getInventoryPurchaseCode(); + InventoryLog log = inventoryService.adjustNumber(id, + 0, inventory.getFragmentNumber(), "退货"); + if (log.getChangeWholeNumber() < 0) { + + log.setType(InventoryTypeEnum.RETURN_OUT.getType()); + log.setSocialType(InventorySocialTypeEnum.OTHER_OUTBOUND.getType()); + log.setOperateId(user.getId()); + log.setOperateName(user.getName()); + inventoryLogMapper.insert(log); + + } else { + throw new MessageException("退货不能增加库存"); + + } + //记录日志 + InventoryPurchaseLog inventoryPurchaseLog = new InventoryPurchaseLog(); + inventoryPurchaseLog.setNumber(log.getChangeWholeNumber()); + inventoryPurchaseLog.setInventoryPurchaseCode(orderCode); + inventoryPurchaseLog.setSocialType(InventorySocialTypeEnum.OTHER_OUTBOUND.getType()); + inventoryPurchaseLog.setInventoryId(id); + inventoryPurchaseLog.setUploadStatus(UploadStatusEnum.NoUpload.getStatus()); + inventoryPurchaseLogMapper.insert(inventoryPurchaseLog); + } + + //更新订单总价 + QueryWrapper queryGoods = new QueryWrapper<>(); + queryGoods.eq("inventory_purchase_code", orderCode); + List goodsList = inventoryMapper.selectList(queryGoods); + final BigDecimal[] totalPrice = {new BigDecimal(0)}; + if (!goodsList.isEmpty()) { + goodsList.forEach(inventoryGoods -> { + BigDecimal multiply = inventoryGoods.getPurchaseUnitPrice().multiply(new BigDecimal(inventoryGoods.getWholeNumber())); + totalPrice[0] = totalPrice[0].add(multiply); + }); + UpdateWrapper updateOrder = new UpdateWrapper(); + updateOrder.set("total_price", totalPrice[0]); + updateOrder.eq("code", orderCode); + inventoryPurchaseMapper.update(null, updateOrder); + } + } } diff --git a/src/main/java/com/syjiaer/clinic/server/service/inventory/InventoryService.java b/src/main/java/com/syjiaer/clinic/server/service/inventory/InventoryService.java index 1986d64..5e35e13 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/inventory/InventoryService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/inventory/InventoryService.java @@ -112,11 +112,10 @@ public class InventoryService extends BaseService { * 根据goodsId 获取该goods的所有库存信息 */ public List getListByGoodsId(int goodsId) { - Goods goods = goodsMapper.selectById(goodsId); - if (goods == null) { - throw new MessageException("商品不存在"); - } - return inventoryMapper.selectList(new QueryWrapper().eq("good_id", goodsId).orderByDesc("create_datetime")); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("good_id", goodsId); + queryWrapper.orderByDesc("create_datetime"); + return inventoryMapper.selectList(queryWrapper); } /** @@ -231,6 +230,21 @@ public class InventoryService extends BaseService { } } + public List listByPurchaseCode(String puerchCode) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("inventory_purchase_code", puerchCode); + return inventoryMapper.selectList(queryWrapper); + } + + public List> getInventoryLogByGoodsId(int goodsId, LocalDateTime startDateTime, LocalDateTime endDateTime) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("goods_id", goodsId); + queryWrapper.between("create_time", startDateTime, endDateTime); + return inventoryLogMapper.selectMaps(queryWrapper); + } + + + @Accessors(chain = true) @Getter @Setter @@ -255,7 +269,7 @@ public class InventoryService extends BaseService { * @return */ @Transactional(rollbackFor = Exception.class) - public void update(List list) { + public void updatePurchaseItem(List list) { ManagerUser user = getManagerUser(); if (list == null || list.isEmpty()) { throw new MessageException("没有修改的数据"); @@ -529,4 +543,6 @@ public class InventoryService extends BaseService { } return result; } + + } diff --git a/src/main/java/com/syjiaer/clinic/server/service/inventory/InventorySupplierService.java b/src/main/java/com/syjiaer/clinic/server/service/inventory/InventorySupplierService.java new file mode 100644 index 0000000..4d9bc85 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/service/inventory/InventorySupplierService.java @@ -0,0 +1,38 @@ +package com.syjiaer.clinic.server.service.inventory; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.syjiaer.clinic.server.common.vo.Page; +import com.syjiaer.clinic.server.entity.inventory.InventorySupplier; +import com.syjiaer.clinic.server.entity.inventory.dto.SupplierQuery; +import com.syjiaer.clinic.server.mapper.inventory.InventorySupplierMapper; +import com.syjiaer.clinic.server.service.BaseService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class InventorySupplierService extends BaseService { + + @Autowired + private InventorySupplierMapper inventorySupplierMapper; + + /** + * 供货商分页查询 + * @param query + */ + public Page listPage(SupplierQuery query) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(query.getTurn() != null){ + queryWrapper.eq("turn",1); + } + return pageHelper(query.getPageNum(), query.getPageSize(), + queryWrapper, inventorySupplierMapper, "id", false); + } + + /** + * 保存供货商信息 + * @param inventorySupplier + */ + public void saveOrUpdate(InventorySupplier inventorySupplier) { + inventorySupplierMapper.insertOrUpdate(inventorySupplier); + } +} diff --git a/src/main/java/com/syjiaer/clinic/server/service/medical/MedicalRecordService.java b/src/main/java/com/syjiaer/clinic/server/service/medical/MedicalRecordService.java index 98fa80b..ed94cec 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/medical/MedicalRecordService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/medical/MedicalRecordService.java @@ -1,10 +1,12 @@ package com.syjiaer.clinic.server.service.medical; import com.syjiaer.clinic.server.common.enums.MedicalRecordDetailTypeEnum; +import com.syjiaer.clinic.server.entity.goods.Goods; import com.syjiaer.clinic.server.entity.item.Item; import com.syjiaer.clinic.server.entity.medical.MedicalRecord; import com.syjiaer.clinic.server.entity.medical.MedicalRecordDetail; import com.syjiaer.clinic.server.entity.medical.dto.MedicalRecordSaveDto; +import com.syjiaer.clinic.server.mapper.goods.GoodsMapper; import com.syjiaer.clinic.server.mapper.item.ItemMapper; import com.syjiaer.clinic.server.mapper.medical.MedicalRecordDetailMapper; import com.syjiaer.clinic.server.mapper.medical.MedicalRecordMapper; @@ -21,6 +23,8 @@ public class MedicalRecordService { @Autowired private ItemMapper itemMapper; @Autowired + private GoodsMapper goodsMapper; + @Autowired private MedicalRecordMapper medicalRecordMapper; @Autowired private MedicalRecordDetailMapper medicalRecordDetailMapper; @@ -44,7 +48,7 @@ public class MedicalRecordService { detailList.add(detail); } for (Map.Entry itemMap : saveDto.getGoodsMap().entrySet()){ - Goods dbGoods = iGoodsService.getById(itemMap.getKey()); + Goods dbGoods = goodsMapper.selectById(itemMap.getKey()); MedicalRecordDetail detail = new MedicalRecordDetail(); detail.setProjectId(itemMap.getKey()); detail.setProjectName(dbGoods.getName());