liujie
2 天以前 84e8c13e1885892631e52f71508150c0ff1ee55f
诊所erp
29个文件已修改
10个文件已添加
1081 ■■■■ 已修改文件
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpClinicWarehousingController.java 145 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpGoodsController.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpProcurementController.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysOrderController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/dto/ClinicOutboundGoodsDto.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/dto/TErpClinicGoodsAddDto.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/dto/TErpGoodsAddDto.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/dto/TErpGoodsInfoSaveDto.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/dto/clinicWarehouseGoodsDto.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/importExcel/TErpGoodsExcel.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/mapper/TErpClinicWarehousingMapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TErpClinicOutbound.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TErpClinicOutboundGoods.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TErpClinicWarehousing.java 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TErpClinicWarehousingBatch.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TErpGoods.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TErpSupplierOutbound.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TErpSupplierWarehousingBatch.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/query/TClinicGoodsWarehouseQuery.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/query/TClinicOutboundQuery.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/query/TClinicWarehouseQuery.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/query/TErpGoodsInventoryQuery.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/query/TErpGoodsQuery.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/TErpClinicWarehousingService.java 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/TErpGoodsService.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpClinicWarehousingServiceImpl.java 140 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpGoodsServiceImpl.java 157 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpProcurementServiceImpl.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/vo/OutboundGoodsDetailNextVo.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/vo/OutboundGoodsDetailVo.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/vo/TErpClinicOutboundPageListVO.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/vo/TErpClinicWarehousePageListVO.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/vo/TErpGoodsInventoryVO.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/vo/TErpMaintenanceReminderDetailVo.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/vo/WarehouseGoodsDetailVo.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/wxPay/config/WxConfig.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/TErpClinicWarehousingMapper.xml 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/TErpGoodsMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/TErpProcurementMapper.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpClinicWarehousingController.java
@@ -2,17 +2,19 @@
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.framework.web.service.TokenService;
import com.ruoyi.system.dto.ClinicOutboundGoodsDto;
import com.ruoyi.system.dto.InventoryDto;
import com.ruoyi.system.dto.clinicWarehouseGoodsDto;
import com.ruoyi.system.model.TCrmClinic;
import com.ruoyi.system.model.TCrmSupplier;
import com.ruoyi.system.query.TErpGoodsInventoryQuery;
import com.ruoyi.system.query.TErpGoodsQuery;
import com.ruoyi.system.query.TErpInventoryQuery;
import com.ruoyi.system.query.ValidityPeriodWarningQuery;
import com.ruoyi.system.model.TErpClinicOutbound;
import com.ruoyi.system.model.TErpGoods;
import com.ruoyi.system.query.*;
import com.ruoyi.system.service.*;
import com.ruoyi.system.vo.*;
import io.swagger.annotations.ApiOperation;
@@ -150,5 +152,140 @@
    /**
     * 获取erp问题上报管理列表
     */
    @ApiOperation(value = "诊所 入库列表")
    @PostMapping(value = "/warehousePageList")
    public R<PageInfo<TErpClinicWarehousePageListVO>> warehousePageList(@RequestBody TClinicWarehouseQuery query) {
        SysUser user = tokenService.getLoginUser().getUser();
        Integer roleType = user.getRoleType();
        String supplierClinicId =null;
        if(roleType == 5){
            // 诊所
            TCrmClinic crmClinic = crmClinicService.getOne(Wrappers.lambdaQuery(TCrmClinic.class)
                    .eq(TCrmClinic::getUserId, user.getUserId())
                    .last("LIMIT 1"));
            supplierClinicId = crmClinic.getId();
        }
        return R.ok(erpClinicWarehousingService.warehousePageList(query,user,supplierClinicId));
    }
    @ApiOperation(value = "诊所 入库商品列表")
    @PostMapping(value = "/warehouseGoodsPageList")
    public R<Page<TErpGoods>> warehouseGoodsPageList(@RequestBody TClinicGoodsWarehouseQuery query) {
        SysUser user = tokenService.getLoginUser().getUser();
        Integer roleType = user.getRoleType();
        String supplierClinicId =null;
        if(roleType == 5){
            // 诊所
            TCrmClinic crmClinic = crmClinicService.getOne(Wrappers.lambdaQuery(TCrmClinic.class)
                    .eq(TCrmClinic::getUserId, user.getUserId())
                    .last("LIMIT 1"));
            supplierClinicId = crmClinic.getId();
        }
        return R.ok(erpGoodsService.warehouseGoodsPageList(query,user,supplierClinicId));
    }
    @ApiOperation(value = "诊所 入库商品详情")
    @GetMapping(value = "/warehouseGoodsDetail/{id}")
    public R<WarehouseGoodsDetailVo> warehouseGoodsDetail(@PathVariable String id) {
        SysUser user = tokenService.getLoginUser().getUser();
        Integer roleType = user.getRoleType();
        String supplierClinicId =null;
        if(roleType == 5){
            // 诊所
            TCrmClinic crmClinic = crmClinicService.getOne(Wrappers.lambdaQuery(TCrmClinic.class)
                    .eq(TCrmClinic::getUserId, user.getUserId())
                    .last("LIMIT 1"));
            supplierClinicId = crmClinic.getId();
        }
        return R.ok(erpGoodsService.warehouseGoodsDetail(id));
    }
    @ApiOperation(value = "诊所 出库商品详情")
    @GetMapping(value = "/outboundGoodsDetail/{id}")
    public R<OutboundGoodsDetailVo> outboundGoodsDetail(@PathVariable String id) {
        SysUser user = tokenService.getLoginUser().getUser();
        Integer roleType = user.getRoleType();
        String supplierClinicId =null;
        if(roleType == 5){
            // 诊所
            TCrmClinic crmClinic = crmClinicService.getOne(Wrappers.lambdaQuery(TCrmClinic.class)
                    .eq(TCrmClinic::getUserId, user.getUserId())
                    .last("LIMIT 1"));
            supplierClinicId = crmClinic.getId();
        }
        return R.ok(erpGoodsService.outboundGoodsDetail(id));
    }
    @ApiOperation(value = "诊所 入库商品操作")
    @PostMapping(value = "/warehouseGoods")
    public R<?> warehouseGoods(@RequestBody @Valid List<clinicWarehouseGoodsDto> dtos) {
        SysUser user = tokenService.getLoginUser().getUser();
        Integer roleType = user.getRoleType();
        String supplierClinicId =null;
        if(roleType == 5){
            // 诊所
            TCrmClinic crmClinic = crmClinicService.getOne(Wrappers.lambdaQuery(TCrmClinic.class)
                    .eq(TCrmClinic::getUserId, user.getUserId())
                    .last("LIMIT 1"));
            supplierClinicId = crmClinic.getId();
        }
        erpClinicWarehousingService.warehouseGoods(dtos,user,supplierClinicId);
        return R.ok();
    }
    /**
     * 获取erp问题上报管理列表
     */
    @ApiOperation(value = "诊所 出库列表")
    @PostMapping(value = "/outboundPageList")
    public R<PageInfo<TErpClinicOutboundPageListVO>> outboundPageList(@RequestBody TClinicOutboundQuery query) {
        SysUser user = tokenService.getLoginUser().getUser();
        Integer roleType = user.getRoleType();
        String supplierClinicId =null;
        if(roleType == 5){
            // 诊所
            TCrmClinic crmClinic = crmClinicService.getOne(Wrappers.lambdaQuery(TCrmClinic.class)
                    .eq(TCrmClinic::getUserId, user.getUserId())
                    .last("LIMIT 1"));
            supplierClinicId = crmClinic.getId();
        }
        return R.ok(erpClinicWarehousingService.outboundPageList(query,user,supplierClinicId));
    }
    @ApiOperation(value = "诊所 出库商品操作")
    @PostMapping(value = "/outboundGoods")
    public R<?> outboundGoods(@RequestBody @Valid ClinicOutboundGoodsDto dto) {
        SysUser user = tokenService.getLoginUser().getUser();
        Integer roleType = user.getRoleType();
        String supplierClinicId =null;
        if(roleType == 5){
            // 诊所
            TCrmClinic crmClinic = crmClinicService.getOne(Wrappers.lambdaQuery(TCrmClinic.class)
                    .eq(TCrmClinic::getUserId, user.getUserId())
                    .last("LIMIT 1"));
            supplierClinicId = crmClinic.getId();
        }
        erpClinicWarehousingService.outboundGoods(dto,user,supplierClinicId);
        return R.ok();
    }
}
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpGoodsController.java
@@ -359,7 +359,7 @@
            List<TErpGoodsExcel> carAnnuallyImportExcels = ExcelImportUtil.importExcel(inputStream, TErpGoodsExcel.class, params);
            Set<String> collect = carAnnuallyImportExcels.stream().map(TErpGoodsExcel::getGoodsIdCode).collect(Collectors.toSet());
            if (collect.size() != carAnnuallyImportExcels.size()) {
                return AjaxResult.error("导入数据中商品标识码重复");
                return AjaxResult.error("导入数据中商品条码重复");
            }
            Integer roleType = user.getRoleType();
            for (TErpGoodsExcel erpGoodsExcel : carAnnuallyImportExcels) {
@@ -400,10 +400,10 @@
                }
                goods.setGoodsName(erpGoodsExcel.getGoodsName());
                // 判断数据是否正确
                // 判断标识码是否重复
                // 判断条码是否重复
                long count = erpGoodsService.count(new QueryWrapper<TErpGoods>().eq("goods_id_code", erpGoodsExcel.getGoodsIdCode()));
                if(count>0){
                    names.add(erpGoodsExcel.getGoodsName() + " :标识码重复");
                    names.add(erpGoodsExcel.getGoodsName() + " :条码重复");
                    continue;
                }
                goods.setGoodsIdCode(erpGoodsExcel.getGoodsIdCode());
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpProcurementController.java
@@ -53,11 +53,13 @@
    private final TErpGoodsService erpGoodsService;
    private final TErpClinicWarehousingService erpClinicWarehousingService;
    private final TErpClinicWarehousingBatchService erpClinicWarehousingBatchService;
    private final TCrmSupplierService crmSupplierService;
    @Autowired
    public TErpProcurementController(TErpProcurementService erpProcurementService, TokenService tokenService,TCrmClinicService crmClinicService,TErpProcurementGoodsService erpProcurementGoodsService
    , TErpGoodsService erpGoodsService,TErpClinicWarehousingService erpClinicWarehousingService,TErpClinicWarehousingBatchService erpClinicWarehousingBatchService) {
    , TErpGoodsService erpGoodsService,TErpClinicWarehousingService erpClinicWarehousingService,TErpClinicWarehousingBatchService erpClinicWarehousingBatchService,
                                     TCrmSupplierService crmSupplierService) {
        this.erpProcurementService = erpProcurementService;
        this.tokenService = tokenService;
        this.crmClinicService = crmClinicService;
@@ -65,6 +67,7 @@
        this.erpGoodsService = erpGoodsService;
        this.erpClinicWarehousingService = erpClinicWarehousingService;
        this.erpClinicWarehousingBatchService = erpClinicWarehousingBatchService;
        this.crmSupplierService = crmSupplierService;
    }
@@ -175,33 +178,37 @@
        List<String> collect = dto.getList().stream().map(UpdateStatusProcurementDto::getId).collect(Collectors.toList());
        List<TErpProcurementGoods> list = erpProcurementGoodsService.list(new LambdaQueryWrapper<TErpProcurementGoods>().in(TErpProcurementGoods::getId, collect));
        TErpClinicWarehousing tErpClinicWarehousing = new TErpClinicWarehousing();
        tErpClinicWarehousing.setClinicId(erpProcurement.getClinicId());
        tErpClinicWarehousing.setProcurementId(erpProcurement.getId());
//        tErpClinicWarehousing.setGoodsId(erpGoods.getId());
//        tErpClinicWarehousing.setGoodsName(erpGoods.getGoodsName());
        TCrmSupplier byId = crmSupplierService.getById(erpProcurement.getSupplierId());
        tErpClinicWarehousing.setSupplierName(byId.getSupplierName());
//        tErpClinicWarehousing.setQuasiNumber(erpGoods.getQuasiNumber());
//        tErpClinicWarehousing.setSalesAmount(tErpProcurementGoods.getSalesAmount());
//        tErpClinicWarehousing.setPurchaseCount(updateStatusProcurementDto.getPurchaseCount());
        tErpClinicWarehousing.setTotalPrice(erpProcurement.getPayMoney());
//        tErpClinicWarehousing.setUnitAmount(tErpProcurementGoods.getSalesAmount());
        tErpClinicWarehousing.setWarehousingType(1);
        tErpClinicWarehousing.setType(1);
        tErpClinicWarehousing.setWarehouseNo("G"+ DateUtils.dateTimeNow());
        erpClinicWarehousingService.save(tErpClinicWarehousing);
        // goodsId分组
        for (UpdateStatusProcurementDto updateStatusProcurementDto : dto.getList()) {
            TErpProcurementGoods tErpProcurementGoods = list.stream().filter(t -> t.getId().equals(updateStatusProcurementDto.getId())).findFirst().get();
            TErpGoods erpGoods = erpGoodsService.getById(tErpProcurementGoods.getGoodsId());
            TErpClinicWarehousing tErpClinicWarehousing = new TErpClinicWarehousing();
            tErpClinicWarehousing.setClinicId(erpProcurement.getClinicId());
            tErpClinicWarehousing.setProcurementId(erpProcurement.getId());
            tErpClinicWarehousing.setGoodsId(erpGoods.getId());
            tErpClinicWarehousing.setGoodsName(erpGoods.getGoodsName());
            tErpClinicWarehousing.setSupplierName(erpGoods.getSupplierName());
            tErpClinicWarehousing.setQuasiNumber(erpGoods.getQuasiNumber());
            tErpClinicWarehousing.setSalesAmount(tErpProcurementGoods.getSalesAmount());
            tErpClinicWarehousing.setPurchaseCount(updateStatusProcurementDto.getPurchaseCount());
            tErpClinicWarehousing.setTotalPrice(tErpProcurementGoods.getSalesAmount().multiply(new BigDecimal(updateStatusProcurementDto.getPurchaseCount())));
            tErpClinicWarehousing.setUnitAmount(tErpProcurementGoods.getSalesAmount());
            tErpClinicWarehousing.setWarehousingType(1);
            tErpClinicWarehousing.setWarehouseNo("G"+ DateUtils.dateTimeNow());
            erpClinicWarehousingService.save(tErpClinicWarehousing);
            TErpClinicWarehousingBatch tErpClinicWarehousingGoods = new TErpClinicWarehousingBatch();
            tErpClinicWarehousingGoods.setWarehousingId(tErpClinicWarehousing.getId());
            tErpClinicWarehousingGoods.setWarehousingNumber(tErpClinicWarehousing.getPurchaseCount());
            tErpClinicWarehousingGoods.setWarehousingNumber(updateStatusProcurementDto.getPurchaseCount());
            tErpClinicWarehousingGoods.setBatchNumber(updateStatusProcurementDto.getBatchNumber());
            tErpClinicWarehousingGoods.setProductionDate(updateStatusProcurementDto.getProductionDate());
            tErpClinicWarehousingGoods.setExpiryDate(updateStatusProcurementDto.getExpiryDate());
            tErpClinicWarehousingGoods.setGoodsId(erpGoods.getId());
            tErpClinicWarehousingGoods.setGoodsName(erpGoods.getGoodsName());
            tErpClinicWarehousingGoods.setQuasiNumber(erpGoods.getQuasiNumber());
            tErpClinicWarehousingGoods.setSalesAmount(tErpProcurementGoods.getSalesAmount());
            erpClinicWarehousingBatchService.save(tErpClinicWarehousingGoods);
        }
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysOrderController.java
@@ -168,7 +168,7 @@
            erpProcurement.setStatus(2);
            erpProcurement.setTermNo(supplier.getTermNo());
            erpProcurement.setAccountType(type);
            erpProcurement.setTransType("41");
            erpProcurement.setTransType(trans_type);
            erpProcurementService.updateById(erpProcurement);
            return R.ok(responseStr);
@@ -422,7 +422,7 @@
    @ApiOperation(value = "退款")
    @PostMapping(value = "/refundOrder")
    @SneakyThrows
    public R<?> refundOrder(@RequestParam String id, String type, HttpServletRequest request) {
    public R<?> refundOrder(@RequestParam String id, HttpServletRequest request) {
        SysUser user = tokenService.getLoginUser().getUser();
        try {
            // 先退分账  在退订单
ruoyi-system/src/main/java/com/ruoyi/system/dto/ClinicOutboundGoodsDto.java
New file
@@ -0,0 +1,39 @@
package com.ruoyi.system.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.List;
@Data
@ApiModel(value = "诊所商品出库dto")
public class ClinicOutboundGoodsDto {
    @ApiModelProperty(value = "出库原因")
    @NotBlank(message = "出库原因不能为空")
    private String outboundReason;
    @ApiModelProperty(value = "出库类型  1=报损 2=到期 3=失效 4=召回 5=其他")
    @NotNull(message = "出库类型不能为空")
    private Integer outboundType;
    @ApiModelProperty("种类数")
    @NotNull(message = "种类数不能为空")
    private Integer typeNum;
    @ApiModelProperty("总价")
    @NotNull(message = "总价不能为空")
    private BigDecimal totalPrice;
    @ApiModelProperty(value = "商品出库二级dto")
    private List<OutboundGoodsNextDto> outboundGoodsNextDtos;
}
ruoyi-system/src/main/java/com/ruoyi/system/dto/TErpClinicGoodsAddDto.java
@@ -45,8 +45,8 @@
    @NotBlank ( message = "商品类型id不能为空")
    private String typeId;
    @ApiModelProperty(value = "商品标识码")
    @NotBlank ( message = "商品标识码不能为空")
    @ApiModelProperty(value = "商品条码")
    @NotBlank ( message = "商品条码不能为空")
    private String goodsIdCode;
ruoyi-system/src/main/java/com/ruoyi/system/dto/TErpGoodsAddDto.java
@@ -13,10 +13,9 @@
    @NotBlank(message = "商品名称不能为空")
    private String goodsName;
    @ApiModelProperty(value = "商品标识码")
    @NotBlank(message = "商品标识码不能为空")
    @ApiModelProperty(value = "商品条码")
    @NotBlank(message = "商品条码不能为空")
    private String goodsIdCode;
    @ApiModelProperty(value = "国药准字号")
    @NotBlank(message = "国药准字号不能为空")
ruoyi-system/src/main/java/com/ruoyi/system/dto/TErpGoodsInfoSaveDto.java
@@ -19,7 +19,7 @@
    @NotBlank(message = "商品类型id不能为空")
    private String typeId;
    @ApiModelProperty(value = "商品69码")
    @ApiModelProperty(value = "商品标识码")
    private String goodsYards;
    @ApiModelProperty(value = "保养周期")
ruoyi-system/src/main/java/com/ruoyi/system/dto/clinicWarehouseGoodsDto.java
New file
@@ -0,0 +1,44 @@
package com.ruoyi.system.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Data
@ApiModel("诊所 商品入库dto")
public class clinicWarehouseGoodsDto {
    @ApiModelProperty(value = "商品id")
    private String id;
    @ApiModelProperty(value = "单价")
    private BigDecimal unitAmount;
    @ApiModelProperty(value = "销售价格")
    private BigDecimal salesAmount;
    @ApiModelProperty(value = "采购数量")
    @NotNull(message = "采购数量不能为空")
    private Integer purchaseCount;
    @ApiModelProperty(value = "批次号")
    @NotBlank(message = "批次号不能为空")
    private String  batchNumber;
    @ApiModelProperty(value = "生产日期")
    @NotNull(message = "生产日期不能为空")
    private LocalDateTime productionDate;
    @ApiModelProperty(value = "有效日期")
    @NotNull(message = "有效日期不能为空")
    private LocalDateTime expiryDate;
    @ApiModelProperty(value = "供应商id")
    @NotBlank(message = "供应商id不能为空")
    private String supplierId;
}
ruoyi-system/src/main/java/com/ruoyi/system/importExcel/TErpGoodsExcel.java
@@ -14,7 +14,7 @@
    @Excel(width = 30,name = "*商品名称")
    private String goodsName;
    @Excel(width = 30,name = "*商品标识码")
    @Excel(width = 30,name = "*商品条码")
    private String goodsIdCode;
    @Excel(width = 30,name = "*国药准字号")
@@ -30,7 +30,7 @@
    private String packingSpec;
    @Excel(width = 30,name = "商品69码")
    @Excel(width = 30,name = "商品标识码")
    private String goodsYards;
    @Excel(width = 30,name = "保养周期(天)")
ruoyi-system/src/main/java/com/ruoyi/system/mapper/TErpClinicWarehousingMapper.java
@@ -4,12 +4,8 @@
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.system.model.TErpClinicWarehousing;
import com.ruoyi.system.query.TErpGoodsQuery;
import com.ruoyi.system.query.TErpInventoryQuery;
import com.ruoyi.system.query.ValidityPeriodWarningQuery;
import com.ruoyi.system.vo.PageInventoryListVo;
import com.ruoyi.system.vo.TErpGoodsVO;
import com.ruoyi.system.vo.ValidityPeriodWarningVo;
import com.ruoyi.system.query.*;
import com.ruoyi.system.vo.*;
import org.apache.ibatis.annotations.Param;
import java.time.LocalDateTime;
@@ -33,4 +29,10 @@
    List<TErpGoodsVO> pageList(@Param("query") TErpGoodsQuery query, @Param("pageInfo") PageInfo<TErpGoodsVO> pageInfo, @Param("user") SysUser user);
    List<TErpClinicWarehousePageListVO> warehousePageList(@Param("query") TClinicWarehouseQuery query, @Param("pageInfo") PageInfo<TErpClinicWarehousePageListVO> pageInfo, @Param("user") SysUser user, @Param("supplierClinicId") String supplierClinicId, @Param("sTime") String sTime, @Param("eTime") String eTime);
    List<TErpClinicOutboundPageListVO> outboundPageList(@Param("query") TClinicOutboundQuery query, @Param("pageInfo") PageInfo<TErpClinicOutboundPageListVO> pageInfo, @Param("user") SysUser user, @Param("supplierClinicId") String supplierClinicId, @Param("sTime") String sTime, @Param("eTime") String eTime);
}
ruoyi-system/src/main/java/com/ruoyi/system/model/TErpClinicOutbound.java
@@ -54,5 +54,13 @@
    @TableField("outbound_reason")
    private String outboundReason;
    @ApiModelProperty(value = "盘点id")
    @TableField("inventory_id")
    private String inventoryId;
    @ApiModelProperty(value = "种类数")
    @TableField("type_num")
    private Integer typeNum;
}
ruoyi-system/src/main/java/com/ruoyi/system/model/TErpClinicOutboundGoods.java
@@ -52,5 +52,9 @@
    @TableField("total_price")
    private BigDecimal totalPrice;
    @ApiModelProperty(value = "商品id")
    @TableField("goods_id")
    private String goodsId;
}
ruoyi-system/src/main/java/com/ruoyi/system/model/TErpClinicWarehousing.java
@@ -38,29 +38,12 @@
    @TableField("clinic_id")
    private String clinicId;
    @ApiModelProperty(value = "商品id")
    @TableField("goods_id")
    private String goodsId;
    @ApiModelProperty(value = "商品名称")
    @TableField("goods_name")
    private String goodsName;
    @ApiModelProperty(value = "供应商名称")
    @TableField("supplier_name")
    private String supplierName;
    @ApiModelProperty(value = "国药准字号")
    @TableField("quasi_number")
    private String quasiNumber;
    @ApiModelProperty(value = "售价")
    @TableField("sales_amount")
    private BigDecimal salesAmount;
    @ApiModelProperty(value = "所需数量(采购数量)")
    @TableField("purchase_count")
    private Integer purchaseCount;
    @ApiModelProperty(value = "总价")
    @TableField("total_price")
@@ -74,10 +57,14 @@
    @TableField("warehouse_no")
    private String warehouseNo;
    @ApiModelProperty(value = "单价")
    @TableField("unit_amount")
    private BigDecimal unitAmount;
    @ApiModelProperty(value = "1正常 2盘点")
    @ApiModelProperty(value = "1采购 2盘点 3手动")
    private Integer type;
    @ApiModelProperty(value = "供应商id")
    @TableField("supplier_id")
    private String supplierId;
    @ApiModelProperty(value = "盘点id")
    @TableField("inventory_id")
    private String inventoryId;
}
ruoyi-system/src/main/java/com/ruoyi/system/model/TErpClinicWarehousingBatch.java
@@ -12,6 +12,7 @@
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
@@ -56,4 +57,33 @@
    private LocalDateTime expiryDate;
    @ApiModelProperty(value = "商品id")
    @TableField("goods_id")
    private String goodsId;
    @ApiModelProperty(value = "商品名称")
    @TableField("goods_name")
    private String goodsName;
    @ApiModelProperty(value = "国药准字号")
    @TableField("quasi_number")
    private String quasiNumber;
    @ApiModelProperty(value = "单价")
    @TableField("unit_amount")
    private BigDecimal unitAmount;
    @ApiModelProperty(value = "所需数量(采购数量)")
    @TableField("purchase_count")
    private Integer purchaseCount;
    @ApiModelProperty(value = "售价")
    @TableField("sales_amount")
    private BigDecimal salesAmount;
    @ApiModelProperty(value = "单位")
    @TableField(exist = false)
    private String unitName;
}
ruoyi-system/src/main/java/com/ruoyi/system/model/TErpGoods.java
@@ -45,9 +45,9 @@
    @Excel(name = "*商品名称")
    private String goodsName;
    @ApiModelProperty(value = "商品标识码")
    @ApiModelProperty(value = "商品条码")
    @TableField("goods_id_code")
    @Excel(name = "*商品标识码")
    @Excel(name = "*商品条码")
    private String goodsIdCode;
    @ApiModelProperty(value = "国药准字号")
@@ -90,9 +90,9 @@
    @TableField("type_id")
    private String typeId;
    @ApiModelProperty(value = "商品69码")
    @ApiModelProperty(value = "商品标识码")
    @TableField("goods_yards")
    @Excel(name = "商品69码")
    @Excel(name = "商品标识码")
    private String goodsYards;
    @Excel(name = "保养周期(天)")
ruoyi-system/src/main/java/com/ruoyi/system/model/TErpSupplierOutbound.java
@@ -54,9 +54,6 @@
    @TableField("outbound_reason")
    private String outboundReason;
//    @ApiModelProperty(value = "商品id")
//    @TableField("goods_id")
//    private String goodsId;
}
ruoyi-system/src/main/java/com/ruoyi/system/model/TErpSupplierWarehousingBatch.java
@@ -54,5 +54,7 @@
    @TableField("expiry_date")
    private LocalDateTime expiryDate;
    private String goodsId;
}
ruoyi-system/src/main/java/com/ruoyi/system/query/TClinicGoodsWarehouseQuery.java
New file
@@ -0,0 +1,26 @@
package com.ruoyi.system.query;
import com.ruoyi.common.core.domain.BasePage;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "erp诊所入库商品查询参数query")
public class TClinicGoodsWarehouseQuery extends BasePage {
    @ApiModelProperty(value = "商品名称")
    private String goodsName;
    @ApiModelProperty(value = "条码")
    private String goodsIdCode;
    @ApiModelProperty(value = "国药准字号")
    private String quasiNumber;
    @ApiModelProperty(value = "商品类型id ")
    private String typeId;
}
ruoyi-system/src/main/java/com/ruoyi/system/query/TClinicOutboundQuery.java
New file
@@ -0,0 +1,25 @@
package com.ruoyi.system.query;
import com.ruoyi.common.core.domain.BasePage;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "erp诊所入库查询参数query")
public class TClinicOutboundQuery extends BasePage {
    @ApiModelProperty(value = "出库单号")
    private String outboundNumber;
    @ApiModelProperty(value = "操作人")
    private String userName;
    @ApiModelProperty(value = "出库时间  2020-02-02 - 2029-02-02")
    private String time;
    @ApiModelProperty(value = " 1=报损 2=到期 3=失效 4=召回 5=其他 6=盘点出库 7=购买出库")
    private Integer type;
}
ruoyi-system/src/main/java/com/ruoyi/system/query/TClinicWarehouseQuery.java
New file
@@ -0,0 +1,25 @@
package com.ruoyi.system.query;
import com.ruoyi.common.core.domain.BasePage;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "erp诊所入库查询参数query")
public class TClinicWarehouseQuery extends BasePage {
    @ApiModelProperty(value = "入库单号")
    private String warehouseNo;
    @ApiModelProperty(value = "供应商")
    private String supplierName;
    @ApiModelProperty(value = "入库时间  2020-02-02 - 2029-02-02")
    private String time;
    @ApiModelProperty(value = "1采购入库  2盘点入库 ")
    private Integer type;
}
ruoyi-system/src/main/java/com/ruoyi/system/query/TErpGoodsInventoryQuery.java
@@ -30,7 +30,7 @@
    private String batchNumber;
    @ApiModelProperty(value = "仓库id")
    @NotBlank(message = "仓库id不能为空")
//    @NotBlank(message = "仓库id不能为空")
    private String warehouseId;
    @ApiModelProperty(value = "有效期预警 出库使用 条件1  其他不传")
ruoyi-system/src/main/java/com/ruoyi/system/query/TErpGoodsQuery.java
@@ -13,7 +13,7 @@
    @ApiModelProperty(value = "商品名称")
    private String goodsName;
    @ApiModelProperty(value = "商品标识码")
    @ApiModelProperty(value = "商品条码")
    private String goodsIdCode;
    @ApiModelProperty(value = "商品类型id")
ruoyi-system/src/main/java/com/ruoyi/system/service/TErpClinicWarehousingService.java
@@ -1,17 +1,17 @@
package com.ruoyi.system.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.system.dto.ClinicOutboundGoodsDto;
import com.ruoyi.system.dto.clinicWarehouseGoodsDto;
import com.ruoyi.system.model.TErpClinicWarehousing;
import com.ruoyi.system.query.TErpGoodsQuery;
import com.ruoyi.system.query.TErpInventoryQuery;
import com.ruoyi.system.query.ValidityPeriodWarningQuery;
import com.ruoyi.system.vo.InventoryDetailVo;
import com.ruoyi.system.vo.PageInventoryListVo;
import com.ruoyi.system.vo.TErpGoodsVO;
import com.ruoyi.system.vo.ValidityPeriodWarningVo;
import com.ruoyi.system.model.TErpGoods;
import com.ruoyi.system.query.*;
import com.ruoyi.system.vo.*;
import javax.validation.Valid;
import java.util.List;
/**
@@ -32,4 +32,15 @@
    PageInfo<TErpGoodsVO> pageList(TErpGoodsQuery query, SysUser user);
    PageInfo<TErpClinicWarehousePageListVO> warehousePageList(TClinicWarehouseQuery query, SysUser user, String supplierClinicId);
    PageInfo<TErpClinicOutboundPageListVO> outboundPageList(TClinicOutboundQuery query, SysUser user, String supplierClinicId);
    void warehouseGoods(@Valid List<clinicWarehouseGoodsDto> dtos, SysUser user, String supplierClinicId);
    void outboundGoods(@Valid ClinicOutboundGoodsDto dto, SysUser user, String supplierClinicId);
}
ruoyi-system/src/main/java/com/ruoyi/system/service/TErpGoodsService.java
@@ -1,15 +1,19 @@
package com.ruoyi.system.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.system.dto.InventoryDto;
import com.ruoyi.system.dto.InventoryGoodsDto;
import com.ruoyi.system.model.TErpGoods;
import com.ruoyi.system.query.TClinicGoodsWarehouseQuery;
import com.ruoyi.system.query.TErpGoodsInventoryQuery;
import com.ruoyi.system.query.TErpGoodsQuery;
import com.ruoyi.system.vo.OutboundGoodsDetailVo;
import com.ruoyi.system.vo.TErpGoodsInventoryVO;
import com.ruoyi.system.vo.TErpGoodsVO;
import com.ruoyi.system.vo.WarehouseGoodsDetailVo;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
@@ -59,4 +63,13 @@
    List<TErpGoodsInventoryVO> pageInventoryGoodsList1(String warehouseId, SysUser user);
    Page<TErpGoods> warehouseGoodsPageList(TClinicGoodsWarehouseQuery query, SysUser user, String supplierClinicId);
    WarehouseGoodsDetailVo warehouseGoodsDetail(String id);
    OutboundGoodsDetailVo outboundGoodsDetail(String id);
}
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpClinicWarehousingServiceImpl.java
@@ -2,19 +2,19 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.system.dto.ClinicOutboundGoodsDto;
import com.ruoyi.system.dto.OutboundGoodsNextDto;
import com.ruoyi.system.dto.clinicWarehouseGoodsDto;
import com.ruoyi.system.mapper.*;
import com.ruoyi.system.model.*;
import com.ruoyi.system.query.TErpGoodsQuery;
import com.ruoyi.system.query.TErpInventoryQuery;
import com.ruoyi.system.query.ValidityPeriodWarningQuery;
import com.ruoyi.system.query.*;
import com.ruoyi.system.service.TErpClinicWarehousingService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.system.vo.InventoryDetailVo;
import com.ruoyi.system.vo.PageInventoryListVo;
import com.ruoyi.system.vo.TErpGoodsVO;
import com.ruoyi.system.vo.ValidityPeriodWarningVo;
import com.ruoyi.system.vo.*;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@@ -23,6 +23,7 @@
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
@@ -112,7 +113,7 @@
                        TErpClinicWarehousing tErpSupplierWarehousing = erpClinicWarehousingMapper.selectById(tErpSupplierInventoryGoods1.getWarehousingId());
//                        List<TErpSupplierWarehousingBatch> tErpSupplierWarehousingBatches = erpSupplierWarehousingBatchMapper.selectList(new LambdaQueryWrapper<TErpSupplierWarehousingBatch>().eq(TErpSupplierWarehousingBatch::getWarehousingId, tErpSupplierWarehousing.getId()));
//                        int sum = tErpSupplierWarehousingBatches.stream().mapToInt(TErpSupplierWarehousingBatch::getWarehousingNumber).sum();
                        String goodsId = tErpSupplierWarehousing.getGoodsId();
                        String goodsId = tErpSupplierInventoryGoods1.getGoodsId();
                        TErpGoods goods = erpGoodsMapper.selectById(goodsId);
                        int count = tErpSupplierInventoryGoods1.getInventoryCount() - tErpSupplierInventoryGoods1.getDamagedCount();
                        BigDecimal multiply = goods.getSalesAmount().multiply(new BigDecimal(count));
@@ -124,7 +125,7 @@
                        List<TErpClinicOutboundGoods> tErpSupplierOutboundGoods = erpClinicOutboundGoodsMapper.selectList(new LambdaQueryWrapper<TErpClinicOutboundGoods>().eq(TErpClinicOutboundGoods::getOutboundId, tErpSupplierOutbound.getId()));
                        for (TErpClinicOutboundGoods tErpSupplierOutboundGood : tErpSupplierOutboundGoods) {
                            TErpClinicWarehousing tErpSupplierWarehousing = erpClinicWarehousingMapper.selectById(tErpSupplierOutboundGood.getWarehousingId());
                            String goodsId = tErpSupplierWarehousing.getGoodsId();
                            String goodsId = tErpSupplierInventoryGoods1.getGoodsId();
                            TErpGoods goods = erpGoodsMapper.selectById(goodsId);
                            int count = tErpSupplierInventoryGoods1.getInventoryCount() - tErpSupplierInventoryGoods1.getDamagedCount();
                            BigDecimal multiply = goods.getSalesAmount().multiply(new BigDecimal(count));
@@ -158,7 +159,7 @@
                InventoryDetailVo inventoryDetailVo = new InventoryDetailVo();
                if(tErpSupplierInventoryGood.getInventoryType()==1){
                    TErpClinicWarehousing tErpSupplierWarehousing = erpClinicWarehousingMapper.selectById(tErpSupplierInventoryGood.getWarehousingId());
                    String goodsId = tErpSupplierWarehousing.getGoodsId();
                    String goodsId = tErpSupplierInventoryGood.getGoodsId();
                    TErpGoods goods = erpGoodsMapper.selectById(goodsId);
                    inventoryDetailVo.setGoodsName(goods.getGoodsName());
                    TErpGoodsUnit tErpGoodsUnit = erpGoodsUnitMapper.selectById(goods.getPackingUnitId());
@@ -237,5 +238,124 @@
        pageInfo.setRecords(list);
        return pageInfo;
    }
    @Override
    public PageInfo<TErpClinicWarehousePageListVO> warehousePageList(TClinicWarehouseQuery query, SysUser user, String supplierClinicId) {
        String time = query.getTime();
        String sTime =null;
        String eTime = null;
        if(time!=null && !time.isEmpty()){
            String[] split = time.split(" - ");
            sTime = split[0] + " 00:00:00";
            eTime = split[1] + " 23:59:59";
        }
        PageInfo<TErpClinicWarehousePageListVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
        List<TErpClinicWarehousePageListVO> list = this.baseMapper.warehousePageList(query,pageInfo,user,supplierClinicId,sTime,eTime);
        if(list.isEmpty()){
            return pageInfo;
        }
        List<String> collect = list.stream().map(TErpClinicWarehousePageListVO::getId).collect(Collectors.toList());
        List<TErpClinicWarehousingBatch> tErpClinicWarehousingBatches = erpClinicWarehousingBatchMapper.selectList(new LambdaQueryWrapper<TErpClinicWarehousingBatch>().in(TErpClinicWarehousingBatch::getWarehousingId, collect));
        for (TErpClinicWarehousePageListVO tErpClinicWarehousePageListVO : list) {
            int size = tErpClinicWarehousingBatches.stream().filter(e -> e.getWarehousingId().equals(tErpClinicWarehousePageListVO.getId())).map(TErpClinicWarehousingBatch::getGoodsId).collect(Collectors.toSet()).size();
            tErpClinicWarehousePageListVO.setTypeNum(size);
        }
        pageInfo.setRecords(list);
        return pageInfo;
    }
    @Override
    public PageInfo<TErpClinicOutboundPageListVO> outboundPageList(TClinicOutboundQuery query, SysUser user, String supplierClinicId) {
        String time = query.getTime();
        String sTime =null;
        String eTime = null;
        if(time!=null && !time.isEmpty()){
            String[] split = time.split(" - ");
            sTime = split[0] + " 00:00:00";
            eTime = split[1] + " 23:59:59";
        }
        PageInfo<TErpClinicOutboundPageListVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
        List<TErpClinicOutboundPageListVO> list = this.baseMapper.outboundPageList(query,pageInfo,user,supplierClinicId,sTime,eTime);
        pageInfo.setRecords(list);
        return pageInfo;
    }
    @Override
    public void warehouseGoods(List<clinicWarehouseGoodsDto> dtos, SysUser user, String supplierClinicId) {
        // dtos根据供应商分组
        Map<String, List<clinicWarehouseGoodsDto>> collect = dtos.stream().collect(Collectors.groupingBy(clinicWarehouseGoodsDto::getSupplierId));
        for (Map.Entry<String, List<clinicWarehouseGoodsDto>> stringListEntry : collect.entrySet()) {
            String key = stringListEntry.getKey();
            List<clinicWarehouseGoodsDto> value = stringListEntry.getValue();
            TErpClinicWarehousing tErpClinicWarehousing = new TErpClinicWarehousing();
            tErpClinicWarehousing.setClinicId(supplierClinicId);
            tErpClinicWarehousing.setCreateId(user.getUserId().toString());
            tErpClinicWarehousing.setWarehouseNo("G"+ DateUtils.dateTimeNow());
            tErpClinicWarehousing.setCreateTime(LocalDateTime.now());
            tErpClinicWarehousing.setSupplierId(key);
            tErpClinicWarehousing.setType(3);
            this.save(tErpClinicWarehousing);
            BigDecimal totalPrice = new BigDecimal(0);
            for (clinicWarehouseGoodsDto dto : value) {
                TErpClinicWarehousingBatch tErpClinicWarehousingBatch = new TErpClinicWarehousingBatch();
                tErpClinicWarehousingBatch.setWarehousingId(tErpClinicWarehousing.getId());
                tErpClinicWarehousingBatch.setWarehousingNumber(dto.getPurchaseCount());
                tErpClinicWarehousingBatch.setBatchNumber(dto.getBatchNumber());
                tErpClinicWarehousingBatch.setProductionDate(dto.getProductionDate());
                tErpClinicWarehousingBatch.setExpiryDate(dto.getExpiryDate());
                tErpClinicWarehousingBatch.setGoodsId(dto.getId());
                TErpGoods goods = erpGoodsMapper.selectById(dto.getId());
                tErpClinicWarehousingBatch.setGoodsName(goods.getGoodsName());
                tErpClinicWarehousingBatch.setQuasiNumber(goods.getQuasiNumber());
                tErpClinicWarehousingBatch.setUnitAmount(dto.getUnitAmount());
                tErpClinicWarehousingBatch.setSalesAmount(dto.getSalesAmount());
                if(dto.getSalesAmount()==null){
                    tErpClinicWarehousingBatch.setSalesAmount(goods.getClinicPurchasePrice());
                }
                tErpClinicWarehousingBatch.setPurchaseCount(dto.getPurchaseCount());
                erpClinicWarehousingBatchMapper.insert(tErpClinicWarehousingBatch);
                totalPrice = totalPrice.add(dto.getSalesAmount().multiply(new BigDecimal(dto.getPurchaseCount())));
            }
            tErpClinicWarehousing.setTotalPrice(totalPrice);
            this.updateById(tErpClinicWarehousing);
        }
    }
    @Override
    public void outboundGoods(ClinicOutboundGoodsDto dto, SysUser user, String supplierClinicId) {
        TErpClinicOutbound tErpClinicOutbound = new TErpClinicOutbound();
        tErpClinicOutbound.setClinicId(supplierClinicId);
        tErpClinicOutbound.setCreateId(user.getUserId().toString());
        tErpClinicOutbound.setOutboundNumber("G"+ DateUtils.dateTimeNow());
        tErpClinicOutbound.setCreateTime(LocalDateTime.now());
        tErpClinicOutbound.setOutboundType(dto.getOutboundType());
        tErpClinicOutbound.setTotalMoney(dto.getTotalPrice());
        tErpClinicOutbound.setOutboundReason(dto.getOutboundReason());
        tErpClinicOutbound.setTypeNum(dto.getTypeNum());
        erpClinicOutboundMapper.insert(tErpClinicOutbound);
        List<TErpClinicOutboundGoods> tErpClinicOutboundGoods = new ArrayList<>();
        for (OutboundGoodsNextDto outboundGoodsNextDto : dto.getOutboundGoodsNextDtos()) {
            TErpClinicOutboundGoods tErpClinicOutboundGoods1 = new TErpClinicOutboundGoods();
            tErpClinicOutboundGoods1.setOutboundId(tErpClinicOutbound.getId());
            String batchId = outboundGoodsNextDto.getBatchId();
            TErpClinicWarehousingBatch tErpClinicWarehousingBatch = erpClinicWarehousingBatchMapper.selectById(batchId);
            tErpClinicOutboundGoods1.setWarehousingId(tErpClinicWarehousingBatch.getWarehousingId());
            tErpClinicOutboundGoods1.setWarehousingBatchId(batchId);
            tErpClinicOutboundGoods1.setOutboundCount(outboundGoodsNextDto.getNum());
            tErpClinicOutboundGoods1.setTotalPrice(tErpClinicWarehousingBatch.getUnitAmount().multiply(BigDecimal.valueOf(outboundGoodsNextDto.getNum())));
            tErpClinicOutboundGoods1.setGoodsId(tErpClinicWarehousingBatch.getGoodsId());
            tErpClinicOutboundGoods.add(tErpClinicOutboundGoods1);
            erpClinicOutboundGoodsMapper.insert(tErpClinicOutboundGoods1);
        }
    }
}
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpGoodsServiceImpl.java
@@ -2,8 +2,10 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.core.domain.BaseModel;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.uuid.IdUtils;
@@ -11,17 +13,18 @@
import com.ruoyi.system.dto.InventoryGoodsDto;
import com.ruoyi.system.mapper.*;
import com.ruoyi.system.model.*;
import com.ruoyi.system.query.TClinicGoodsWarehouseQuery;
import com.ruoyi.system.query.TErpGoodsInventoryQuery;
import com.ruoyi.system.query.TErpGoodsQuery;
import com.ruoyi.system.service.TErpGoodsService;
import com.ruoyi.system.service.TErpSupplierInventoryGoodsService;
import com.ruoyi.system.vo.TErpGoodsInventoryVO;
import com.ruoyi.system.vo.TErpGoodsVO;
import com.ruoyi.system.vo.*;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
@@ -40,6 +43,9 @@
    @Resource
    private TErpGoodsTypeMapper erpGoodsTypeMapper;
    @Resource
    private TErpGoodsMapper erpGoodsMapper;
    @Resource
    private TErpGoodsUnitMapper erpGoodsUnitMapper;
@@ -319,6 +325,104 @@
    }
    @Override
    public Page<TErpGoods> warehouseGoodsPageList(TClinicGoodsWarehouseQuery query, SysUser user, String supplierClinicId) {
        LambdaQueryWrapper<TErpGoods> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(BaseModel::getDisabled,0);
        wrapper.eq(TErpGoods::getSupplierClinicId,supplierClinicId).eq(TErpGoods::getGoodsSource,2);
        if(query.getGoodsName()!=null && !query.getGoodsName().isEmpty()){
            wrapper.like(TErpGoods::getGoodsName,query.getGoodsName());
        }
        if(query.getGoodsIdCode()!=null && !query.getGoodsIdCode().isEmpty()){
            wrapper.eq(TErpGoods::getGoodsIdCode,query.getGoodsIdCode());
        }
        if(query.getQuasiNumber()!=null && !query.getQuasiNumber().isEmpty()){
            wrapper.eq(TErpGoods::getQuasiNumber,query.getQuasiNumber());
        }
        if(query.getTypeId()!=null && !query.getTypeId().isEmpty()){
            wrapper.eq(TErpGoods::getTypeId,query.getTypeId());
        }
        wrapper.orderByDesc(BaseModel::getCreateTime);
        Page<TErpGoods> page = this.page(new Page<>(query.getPageNum(), query.getPageSize()), wrapper);
        return page;
    }
    @Override
    public WarehouseGoodsDetailVo warehouseGoodsDetail(String id) {
        WarehouseGoodsDetailVo warehouseGoodsDetailVo = new WarehouseGoodsDetailVo();
        TErpClinicWarehousing tErpClinicWarehousing = erpClinicWarehousingMapper.selectById(id);
        warehouseGoodsDetailVo.setCreateTime(tErpClinicWarehousing.getCreateTime());
        warehouseGoodsDetailVo.setCreateBy(tErpClinicWarehousing.getCreateBy());
        if(tErpClinicWarehousing.getType()==1){
            TErpClinicInventory tErpClinicInventory = erpClinicInventoryMapper.selectById(tErpClinicWarehousing.getInventoryId());
            warehouseGoodsDetailVo.setInventoryNumber(tErpClinicInventory.getInventoryNumber());
        }
        List<TErpClinicWarehousingBatch> tErpClinicWarehousingBatches = erpClinicWarehousingBatchMapper.selectList(new LambdaQueryWrapper<TErpClinicWarehousingBatch>().eq(TErpClinicWarehousingBatch::getWarehousingId, id));
        for (TErpClinicWarehousingBatch tErpClinicWarehousingBatch : tErpClinicWarehousingBatches) {
            String goodsId = tErpClinicWarehousingBatch.getGoodsId();
            TErpGoods tErpGoods = erpGoodsMapper.selectById(goodsId);
            String packingUnitId = tErpGoods.getPackingUnitId();
            TErpGoodsUnit tErpGoodsUnit = erpGoodsUnitMapper.selectById(packingUnitId);
            tErpClinicWarehousingBatch.setUnitName(tErpGoodsUnit.getUnitName());
        }
        warehouseGoodsDetailVo.setList(tErpClinicWarehousingBatches);
        return warehouseGoodsDetailVo;
    }
    @Override
    public OutboundGoodsDetailVo outboundGoodsDetail(String id) {
        OutboundGoodsDetailVo outboundGoodsDetailVo = new OutboundGoodsDetailVo();
        TErpClinicOutbound tErpClinicOutbound = erpClinicOutboundMapper.selectById(id);
        outboundGoodsDetailVo.setCreateTime(tErpClinicOutbound.getCreateTime());
        outboundGoodsDetailVo.setCreateBy(tErpClinicOutbound.getCreateBy());
        outboundGoodsDetailVo.setOutboundType(tErpClinicOutbound.getOutboundType());
        outboundGoodsDetailVo.setOrderNumber(tErpClinicOutbound.getOrderNumber());
        if(tErpClinicOutbound.getOutboundType()==6){
            TErpClinicInventory tErpClinicInventory = erpClinicInventoryMapper.selectById(tErpClinicOutbound.getInventoryId());
            outboundGoodsDetailVo.setInventoryNumber(tErpClinicInventory.getInventoryNumber());
        }
        ArrayList<OutboundGoodsDetailNextVo> tErpClinicOutboundGoods1 = new ArrayList<>();
        List<TErpClinicOutboundGoods> tErpClinicOutboundGoods = erpClinicOutboundGoodsMapper.selectList(new LambdaQueryWrapper<TErpClinicOutboundGoods>().eq(TErpClinicOutboundGoods::getOutboundId, id));
        for (TErpClinicOutboundGoods outboundGoods : tErpClinicOutboundGoods) {
            TErpClinicWarehousing tErpClinicWarehousing = erpClinicWarehousingMapper.selectById(outboundGoods.getWarehousingId());
            TErpClinicWarehousingBatch tErpClinicWarehousingBatch = erpClinicWarehousingBatchMapper.selectById(outboundGoods.getWarehousingBatchId());
            OutboundGoodsDetailNextVo outboundGoodsDetailNextVo = new OutboundGoodsDetailNextVo();
            outboundGoodsDetailNextVo.setWarehouseNo(tErpClinicWarehousing.getWarehouseNo());
            outboundGoodsDetailNextVo.setGoodsId(outboundGoods.getGoodsId());
            TErpGoods goods = erpGoodsMapper.selectById(outboundGoods.getGoodsId());
            outboundGoodsDetailNextVo.setGoodsName(goods.getGoodsName());
            outboundGoodsDetailNextVo.setTypeId(goods.getTypeId());
            TErpGoodsType tErpGoodsType = erpGoodsTypeMapper.selectById(goods.getTypeId());
            outboundGoodsDetailNextVo.setTypeName(tErpGoodsType.getTypeName());
            outboundGoodsDetailNextVo.setQuasiNumber(goods.getQuasiNumber());
            outboundGoodsDetailNextVo.setBatchNumber(tErpClinicWarehousingBatch.getBatchNumber());
            TErpGoodsUnit tErpGoodsUnit = erpGoodsUnitMapper.selectById(goods.getPackingUnitId());
            outboundGoodsDetailNextVo.setUnitName(tErpGoodsUnit.getUnitName());
            List<TErpClinicOutboundGoods> tErpClinicOutboundGoods2 = erpClinicOutboundGoodsMapper.selectList(new LambdaQueryWrapper<TErpClinicOutboundGoods>().eq(TErpClinicOutboundGoods::getWarehousingBatchId, outboundGoods.getWarehousingBatchId()));
            int sum = tErpClinicOutboundGoods2.stream().mapToInt(TErpClinicOutboundGoods::getOutboundCount).sum();
            int count = tErpClinicWarehousingBatch.getPurchaseCount() - sum;
            outboundGoodsDetailNextVo.setSurplusCount(count);
            outboundGoodsDetailNextVo.setUnitAmount(tErpClinicWarehousingBatch.getUnitAmount());
            outboundGoodsDetailNextVo.setOutboundCount(outboundGoods.getOutboundCount());
            outboundGoodsDetailNextVo.setExpiryDate(tErpClinicWarehousingBatch.getExpiryDate());
            outboundGoodsDetailNextVo.setTotalAmount(outboundGoodsDetailNextVo.getUnitAmount().multiply(new BigDecimal(outboundGoods.getOutboundCount())));
            tErpClinicOutboundGoods1.add(outboundGoodsDetailNextVo);
        }
        outboundGoodsDetailVo.setList(tErpClinicOutboundGoods1);
        return outboundGoodsDetailVo;
    }
    @Override
    public void inventoryGoods(InventoryDto dto, SysUser user) {
        Integer roleType = user.getRoleType();
        String supplierClinicId = null;
@@ -457,76 +561,83 @@
            TErpClinicWarehousingBatch tErpSupplierWarehousingBatch = erpClinicWarehousingBatchMapper.selectById(inventoryGoodsDto.getId());
            String warehousingId = tErpSupplierWarehousingBatch.getWarehousingId();
            TErpClinicWarehousing tErpSupplierWarehousing1 = erpClinicWarehousingMapper.selectById(warehousingId);
            TErpGoods erpGoods = this.getById(tErpSupplierWarehousing1.getGoodsId());
            TErpGoods erpGoods = this.getById(tErpSupplierWarehousingBatch.getGoodsId());
            // 盘点是盘亏盘盈   赢
            if (inventoryGoodsDto.getNum() < inventoryGoodsDto.getInventoryCount()) {
                // 添加入库信息
                tErpSupplierWarehousing.setClinicId(supplierClinicId);
                tErpSupplierWarehousing.setGoodsId(tErpSupplierWarehousing1.getGoodsId());
                tErpSupplierWarehousing.setGoodsName(erpGoods.getGoodsName());
                tErpSupplierWarehousing.setPurchaseCount(inventoryGoodsDto.getInventoryCount() - inventoryGoodsDto.getNum());
                tErpSupplierWarehousing.setUnitAmount(erpGoods.getSalesAmount());
                tErpSupplierWarehousing.setTotalPrice(erpGoods.getSalesAmount().multiply(new BigDecimal(tErpSupplierWarehousing.getPurchaseCount())));
//                tErpSupplierWarehousing.setGoodsId(tErpSupplierWarehousing1.getGoodsId());
//                tErpSupplierWarehousing.setGoodsName(erpGoods.getGoodsName());
//                tErpSupplierWarehousing.setPurchaseCount(inventoryGoodsDto.getInventoryCount() - inventoryGoodsDto.getNum());
//                tErpSupplierWarehousing.setUnitAmount(erpGoods.getSalesAmount());
                tErpSupplierWarehousing.setTotalPrice(erpGoods.getSalesAmount().multiply(new BigDecimal(inventoryGoodsDto.getInventoryCount() - inventoryGoodsDto.getNum())));
                // 当前年月日时分秒
                String time = DateUtils.dateTimeNow();
                tErpSupplierWarehousing.setWarehouseNo("G" + time);
                tErpSupplierWarehousing.setType(2);
                tErpSupplierWarehousing.setInventoryId(tErpSupplierInventory.getId());
                erpClinicWarehousingMapper.insert(tErpSupplierWarehousing);
                // 添加批次信息
                TErpSupplierWarehousingBatch tErpSupplierWarehousingBatch1 = new TErpSupplierWarehousingBatch();
                TErpClinicWarehousingBatch tErpSupplierWarehousingBatch1 = new TErpClinicWarehousingBatch();
                tErpSupplierWarehousingBatch1.setWarehousingId(tErpSupplierWarehousing.getId());
                tErpSupplierWarehousingBatch1.setWarehousingNumber(tErpSupplierWarehousing.getPurchaseCount());
                tErpSupplierWarehousingBatch1.setWarehousingNumber(inventoryGoodsDto.getInventoryCount() - inventoryGoodsDto.getNum());
                tErpSupplierWarehousingBatch1.setBatchNumber(tErpSupplierWarehousingBatch.getBatchNumber());
                tErpSupplierWarehousingBatch1.setProductionDate(tErpSupplierWarehousingBatch.getProductionDate());
                tErpSupplierWarehousingBatch1.setExpiryDate(tErpSupplierWarehousingBatch.getExpiryDate());
                erpSupplierWarehousingBatchMapper.insert(tErpSupplierWarehousingBatch1);
                tErpSupplierWarehousingBatch1.setGoodsId(tErpSupplierWarehousingBatch.getGoodsId());
                tErpSupplierWarehousingBatch1.setQuasiNumber(tErpSupplierWarehousingBatch.getQuasiNumber());
                tErpSupplierWarehousingBatch1.setPurchaseCount(tErpSupplierWarehousingBatch.getPurchaseCount());
                tErpSupplierWarehousingBatch1.setSalesAmount(tErpSupplierWarehousingBatch.getSalesAmount());
                tErpSupplierWarehousingBatch1.setUnitAmount(tErpSupplierWarehousingBatch.getUnitAmount());
                erpClinicWarehousingBatchMapper.insert(tErpSupplierWarehousingBatch1);
                // 添加盘点信息
                TErpSupplierInventoryGoods tErpSupplierInventoryGoods = new TErpSupplierInventoryGoods();
                TErpClinicInventoryGoods tErpSupplierInventoryGoods = new TErpClinicInventoryGoods();
                tErpSupplierInventoryGoods.setInventoryId(tErpSupplierInventory.getId());
                tErpSupplierInventoryGoods.setWarehousingId(tErpSupplierWarehousing.getId());
                tErpSupplierInventoryGoods.setWarehousingBatchId(tErpSupplierWarehousingBatch1.getId());
                tErpSupplierInventoryGoods.setInventoryCount(inventoryGoodsDto.getInventoryCount());
                tErpSupplierInventoryGoods.setDamagedCount(inventoryGoodsDto.getDamagedCount());
                tErpSupplierInventoryGoods.setInventoryType(1);
                tErpSupplierInventoryGoods.setGoodsId(tErpSupplierWarehousing1.getGoodsId());
                erpSupplierInventoryGoodsMapper.insert(tErpSupplierInventoryGoods);
                tErpSupplierInventoryGoods.setGoodsId(tErpSupplierWarehousingBatch.getGoodsId());
                erpClinicInventoryGoodsMapper.insert(tErpSupplierInventoryGoods);
            } else {
                TErpSupplierOutbound tErpSupplierOutbound = new TErpSupplierOutbound();
                tErpSupplierOutbound.setWarehouseId(dto.getWarehouseId());
                tErpSupplierOutbound.setSupplierId(supplierClinicId);
                TErpClinicOutbound tErpSupplierOutbound = new TErpClinicOutbound();
//                tErpSupplierOutbound.setWarehouseId(dto.getWarehouseId());
//                tErpSupplierOutbound.setSupplierId(supplierClinicId);
                tErpSupplierOutbound.setOutboundType(6);
                tErpSupplierOutbound.setOutboundNumber("G" + s);
                int count = inventoryGoodsDto.getNum() - inventoryGoodsDto.getInventoryCount();
                tErpSupplierOutbound.setTotalMoney(erpGoods.getSalesAmount().multiply(new BigDecimal(count)));
                erpSupplierOutboundMapper.insert(tErpSupplierOutbound);
                tErpSupplierOutbound.setInventoryId(tErpSupplierInventory.getId());
                erpClinicOutboundMapper.insert(tErpSupplierOutbound);
                TErpSupplierOutboundGoods tErpSupplierOutboundGoods = new TErpSupplierOutboundGoods();
                TErpClinicOutboundGoods tErpSupplierOutboundGoods = new TErpClinicOutboundGoods();
                tErpSupplierOutboundGoods.setOutboundId(tErpSupplierOutbound.getId());
                tErpSupplierOutboundGoods.setWarehousingId(tErpSupplierWarehousing1.getId());
                tErpSupplierOutboundGoods.setWarehousingBatchId(tErpSupplierWarehousingBatch.getId());
                tErpSupplierOutboundGoods.setOutboundCount(count);
                tErpSupplierOutboundGoods.setTotalPrice(erpGoods.getSalesAmount().multiply(new BigDecimal(count)));
                erpSupplierOutboundGoodsMapper.insert(tErpSupplierOutboundGoods);
                erpClinicOutboundGoodsMapper.insert(tErpSupplierOutboundGoods);
                // 添加盘点信息
                TErpSupplierInventoryGoods tErpSupplierInventoryGoods = new TErpSupplierInventoryGoods();
                TErpClinicInventoryGoods tErpSupplierInventoryGoods = new TErpClinicInventoryGoods();
                tErpSupplierInventoryGoods.setInventoryId(tErpSupplierInventory.getId());
                tErpSupplierInventoryGoods.setWarehousingId(tErpSupplierOutbound.getId());
                tErpSupplierInventoryGoods.setWarehousingBatchId(tErpSupplierOutboundGoods.getId());
                tErpSupplierInventoryGoods.setInventoryCount(inventoryGoodsDto.getInventoryCount());
                tErpSupplierInventoryGoods.setDamagedCount(inventoryGoodsDto.getDamagedCount());
                tErpSupplierInventoryGoods.setInventoryType(2);
                tErpSupplierInventoryGoods.setGoodsId(tErpSupplierWarehousing1.getGoodsId());
                erpSupplierInventoryGoodsMapper.insert(tErpSupplierInventoryGoods);
                tErpSupplierInventoryGoods.setGoodsId(tErpSupplierWarehousingBatch.getGoodsId());
                erpClinicInventoryGoodsMapper.insert(tErpSupplierInventoryGoods);
            }
        }
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpProcurementServiceImpl.java
@@ -124,7 +124,7 @@
        }
        List<String> ids = list.stream().map(TErpProcurementVo::getId).collect(Collectors.toList());
        List<TErpProcurementGoods> tErpProcurementGoods = erpProcurementGoodsMapper.selectList
                (new LambdaQueryWrapper<TErpProcurementGoods>().in(TErpProcurementGoods::getProcurementId, ids).eq(TErpProcurementGoods::getSupplierId, supplierClinicId));
                (new LambdaQueryWrapper<TErpProcurementGoods>().in(TErpProcurementGoods::getProcurementId, ids));
        List<TSysCommission> tSysCommissions =new ArrayList<>();
        if(!tErpProcurementGoods.isEmpty()){
            List<String> collect = tErpProcurementGoods.stream().map(TErpProcurementGoods::getId).collect(Collectors.toList());
@@ -240,6 +240,13 @@
                tErpGoodsVO.setTypeName(tErpGoodsVO.getTypeName());
            }
        }
        List<String> supplierClinicId = list.stream().filter(e->e.getGoodsSource()==1).map(TErpGoods::getSupplierClinicId).collect(Collectors.toList());
        if(!supplierClinicId.isEmpty()){
            List<TCrmClinic> crmClinics = crmClinicMapper.selectBatchIds(supplierClinicId);
            for (TErpGoods tErpGoodsVO : list) {
                crmClinics.stream().filter(t -> t.getId().equals(tErpGoodsVO.getSupplierClinicId())).findFirst().ifPresent(t -> tErpGoodsVO.setSupplierName(t.getClinicName()));
            }
        }
        pageInfo.setRecords( list);
        return pageInfo;
    }
ruoyi-system/src/main/java/com/ruoyi/system/vo/OutboundGoodsDetailNextVo.java
New file
@@ -0,0 +1,56 @@
package com.ruoyi.system.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.system.model.TErpClinicWarehousingBatch;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
@Data
@ApiModel(value = "诊所 入库商品详情二级VO")
public class OutboundGoodsDetailNextVo {
    @ApiModelProperty("入库单号")
    private String warehouseNo ;
    @ApiModelProperty("商品名称")
    private String goodsName;
    @ApiModelProperty("商品id")
    private String goodsId;
    @ApiModelProperty("商品类型")
    private String typeName;
    @ApiModelProperty("商品类型id")
    private String typeId;
    @ApiModelProperty("国药准字号")
    private String quasiNumber;
    @ApiModelProperty("批次号")
    private String batchNumber;
    @ApiModelProperty("单位")
    private String unitName;
    @ApiModelProperty("剩余数量")
    private Integer surplusCount;
    @ApiModelProperty("单价")
    private BigDecimal unitAmount;
    @ApiModelProperty("出库数量")
    private Integer outboundCount;
    @ApiModelProperty("有效期至")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime expiryDate;
    @ApiModelProperty("总价")
    private BigDecimal totalAmount;
}
ruoyi-system/src/main/java/com/ruoyi/system/vo/OutboundGoodsDetailVo.java
New file
@@ -0,0 +1,36 @@
package com.ruoyi.system.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.system.model.TErpClinicWarehousingBatch;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.List;
@Data
@ApiModel(value = "诊所 入库商品详情VO")
public class OutboundGoodsDetailVo {
    @ApiModelProperty("出库类型 1=报损 2=到期 3=失效 4=召回 5=其他 6=盘点出库 7=购买出库")
    private Integer outboundType;
    @ApiModelProperty(value = "发起人")
    private String createBy;
    @ApiModelProperty(value = "操作时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime createTime;
    @ApiModelProperty(value = "盘点单号")
    private String inventoryNumber;
    @ApiModelProperty(value = "订单号")
    private String orderNumber;
    @ApiModelProperty(value = "出库商品")
    private List<OutboundGoodsDetailNextVo> list;
}
ruoyi-system/src/main/java/com/ruoyi/system/vo/TErpClinicOutboundPageListVO.java
New file
@@ -0,0 +1,43 @@
package com.ruoyi.system.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
@Data
@ApiModel(value = "诊所erp出库列表VO")
public class TErpClinicOutboundPageListVO {
    @ApiModelProperty(value = "出库id")
    private String id;
    @ApiModelProperty(value = "出库单号")
    private String  outboundNumber;
    @ApiModelProperty(value = "订单编号")
    private String orderNumber;
    @ApiModelProperty("品种数")
    private Integer typeNum;
    @ApiModelProperty(value = "总价")
    private Double allTotalPrice;
    @ApiModelProperty(value = "操作人")
    private String  userName;
    @ApiModelProperty(value = "出库时间")
    private LocalDateTime createTime;
    @ApiModelProperty(value = "出库类型 1=报损 2=到期 3=失效 4=召回 5=其他 6=盘点出库 7=购买出库")
    private Integer outboundType;
}
ruoyi-system/src/main/java/com/ruoyi/system/vo/TErpClinicWarehousePageListVO.java
New file
@@ -0,0 +1,42 @@
package com.ruoyi.system.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.List;
@Data
@ApiModel(value = "诊所erp入库列表VO")
public class TErpClinicWarehousePageListVO {
    @ApiModelProperty(value = "入库id")
    private String id;
    @ApiModelProperty(value = "入库单号")
    private String  warehouseNo;
    private String supplierId;
    @ApiModelProperty(value = "供应商名称")
    private String  supplierName;
    @ApiModelProperty(value = "采购单号")
    private String  procurementCode;
    @ApiModelProperty("品种数")
    private Integer typeNum;
    @ApiModelProperty(value = "总价")
    private Double allTotalPrice;
    @ApiModelProperty(value = "入库时间")
    private LocalDateTime warehouseTime;
    @ApiModelProperty(value = "入库类型 1采购  2盘点")
    private Integer type;
}
ruoyi-system/src/main/java/com/ruoyi/system/vo/TErpGoodsInventoryVO.java
@@ -34,7 +34,7 @@
    @ApiModelProperty(value = "国药准字号")
    private String quasiNumber;
    @ApiModelProperty(value = "商品标识码")
    @ApiModelProperty(value = "商品条码")
    private String goodsIdCode;
    @ApiModelProperty(value = "批次号")
@@ -60,5 +60,8 @@
    private Integer goodsSource;
    @ApiModelProperty(value = "供应商id")
    private String supplierId;
}
ruoyi-system/src/main/java/com/ruoyi/system/vo/TErpMaintenanceReminderDetailVo.java
@@ -24,7 +24,7 @@
    @ApiModelProperty(value = "国药准字号")
    private String quasiNumber;
    @ApiModelProperty("商品标识码")
    @ApiModelProperty("商品条码")
    @TableField("goods_id_code")
    private String goodsIdCode;
ruoyi-system/src/main/java/com/ruoyi/system/vo/WarehouseGoodsDetailVo.java
New file
@@ -0,0 +1,27 @@
package com.ruoyi.system.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.system.model.TErpClinicWarehousingBatch;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.List;
@Data
@ApiModel(value = "诊所 入库商品详情VO")
public class WarehouseGoodsDetailVo {
    @ApiModelProperty(value = "发起人")
    private String createBy;
    @ApiModelProperty(value = "发起时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime createTime;
    @ApiModelProperty(value = "盘点单号")
    private String inventoryNumber;
    @ApiModelProperty(value = "入库商品")
    private List<TErpClinicWarehousingBatch> list;
}
ruoyi-system/src/main/java/com/ruoyi/system/wxPay/config/WxConfig.java
@@ -13,7 +13,7 @@
 *
 * @author lihen
 */
@Configuration
//@Configuration
public class WxConfig {
    private final WeixinPayProperties weixinPayProperties;
ruoyi-system/src/main/resources/mapper/system/TErpClinicWarehousingMapper.xml
@@ -83,11 +83,11 @@
    <select id="pageList" resultType="com.ruoyi.system.vo.TErpGoodsVO">
        select * from (
        select <include refid="Base_Column_List1"/>
        COALESCE(sum(t2.goods_count), 0) - COALESCE(sum(t3.outbound_count), 0) as allNum,
        SUM(t2.unit_amount * (t2.goods_count - COALESCE(t3.outbound_count, 0))) as allTotalPrice,
        COALESCE(sum(t2.purchase_count), 0) - COALESCE(sum(t3.outbound_count), 0) as allNum,
        SUM(t2.unit_amount * (t2.purchase_count - COALESCE(t3.outbound_count, 0))) as allTotalPrice,
        COALESCE(sum(t3.outbound_count), 0) as outNum
        from t_erp_goods t1  left join  t_erp_clinic_warehousing t2  on t1.id = t2.goods_id
        from t_erp_goods t1  left join  t_erp_clinic_warehousing_batch t2  on t1.id = t2.goods_id
        left join  t_erp_clinic_outbound_goods t3 on t2.id = t3.warehousing_id
        where t1.disabled = 0 and t2.id is not null
        <if test="query.goodsName != null and query.goodsName != ''">
@@ -119,4 +119,43 @@
        order by o.create_time desc
    </select>
    <select id="warehousePageList" resultType="com.ruoyi.system.vo.TErpClinicWarehousePageListVO">
        select t1.id,t1.warehouse_no,t2.supplier_name,t3.procurement_code,t3.pay_money allTotalPrice,t1.create_time warehouseTime,t1.type
        from t_erp_clinic_warehousing t1 left join t_erp_procurement t3 on t1.procurement_id = t3.id
        left join t_crm_supplier t2 on t3.supplier_id = t2.id
        where t1.disabled = 0 and t1.clinic_id = #{query.supplierClinicId}
        <if test="query.warehouseNo != null and query.warehouseNo != ''">
            and t1.warehouse_no like concat('%',#{query.warehouseNo},'%')
        </if>
        <if test="query.supplierName != null and query.supplierName != ''">
            and t2.supplier_name like concat('%',#{query.supplierName},'%')
        </if>
        <if test="sTime != null">
            and t1.create_time between #{sTime} and #{eTime}
        </if>
        <if test="query.type != null">
            and t1.type = #{query.type}
        </if>
        order by t1.create_time desc
    </select>
    <select id="outboundPageList" resultType="com.ruoyi.system.vo.TErpClinicOutboundPageListVO">
        select t1.id,t1.outbound_number,t1.order_number,t1.total_money allTotalPrice,t1.create_time ,t1.outbound_type,t2.user_name,t1.type_num
        from t_erp_clinic_outbound t1 left join sys_user t2 on t1.create_by = t2.user_id
        where t1.disabled = 0 and t1.clinic_id = #{query.supplierClinicId}
        <if test="query.outboundNumber != null and query.outboundNumber != ''">
            and t1.outbound_number like concat('%',#{query.outboundNumber},'%')
        </if>
        <if test="sTime != null">
            and t1.create_time between #{sTime} and #{eTime}
        </if>
        <if test="query.userName != null and query.userName !=''">
            and t2.user_name  like concat('%',#{query.userName},'%')
        </if>
        <if test="type != null">
            and t1.outbound_type = #{query.type}
        </if>
        order by t1.create_time desc
    </select>
</mapper>
ruoyi-system/src/main/resources/mapper/system/TErpGoodsMapper.xml
@@ -185,7 +185,7 @@
        LEFT JOIN t_erp_goods t3 on t2.goods_id = t3.id
        LEFT JOIN t_crm_supplier t4 on t3.supplier_clinic_id = t4.id
        LEFT JOIN t_erp_clinic_outbound_goods t5 on t5.warehousing_batch_id =t1.id
        where t2.disabled = 0 and t2.warehouse_id = #{query.warehouseId}
        where t2.disabled = 0  and t2.clinic_id =#{supplierClinicId}
        <if test="query.type != null and query.type ==1">
            and #{time} > t1.expiry_date
        </if>
ruoyi-system/src/main/resources/mapper/system/TErpProcurementMapper.xml
@@ -40,7 +40,7 @@
        left JOIN t_erp_procurement_goods t2 on t1.id = t2.procurement_id
        LEFT JOIN t_crm_supplier t3 on t1.supplier_id = t3.id
        left JOIN sys_user t4 on t1.create_id = t4.user_id
        where t1.disabled = 0
        where t1.disabled = 0 and t1.status !=1
        <if test="user.roleType !=null and user.roleType==4">
            and t2.supplier_id =#{supplierClinicId}
        </if>
@@ -59,6 +59,7 @@
        <if test="sTime != null">
            and t1.create_time between #{sTime} and #{eTime}
        </if>
        group by t1.id
    </select>
    <select id="inventoryNotEnoughList" resultType="com.ruoyi.system.vo.TErpGoodsVO">