ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpClinicWarehousingController.java
@@ -17,6 +17,7 @@ import com.ruoyi.system.query.*; import com.ruoyi.system.service.*; import com.ruoyi.system.vo.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -35,6 +36,7 @@ */ @RestController @RequestMapping("/t-erp-clinic-warehousing") @Api(tags = "诊所库存管理") public class TErpClinicWarehousingController { private final TErpClinicWarehousingService erpClinicWarehousingService; ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpGoodsController.java
@@ -44,6 +44,7 @@ import java.net.URLEncoder; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Set; import java.util.stream.Collectors; @@ -133,7 +134,7 @@ } Page<TErpGoods> tErpGoodsPage = new Page<>(query.getPageNum(), query.getPageSize()); Page<TErpGoods> page = erpGoodsService.page(tErpGoodsPage, new LambdaQueryWrapper<TErpGoods>().eq(TErpGoods::getGoodsSource, 1).eq(BaseModel::getDisabled, 0).isNotNull(TErpGoods::getPlatformCommissionPrice).last(" NOT FIND_IN_SET(" + clinicSupplierId + ",clinic_ids)")); Page<TErpGoods> page = erpGoodsService.page(tErpGoodsPage, new LambdaQueryWrapper<TErpGoods>().eq(TErpGoods::getGoodsSource, 1).eq(BaseModel::getDisabled, 0).isNotNull(TErpGoods::getPlatformCommissionPrice).last("and (NOT FIND_IN_SET(" + clinicSupplierId + ",clinic_ids) or clinic_ids is null)")); for (TErpGoods record : page.getRecords()) { TCrmSupplier byId = crmSupplierService.getById(record.getSupplierClinicId()); record.setSupplierName(byId.getSupplierName()); @@ -152,7 +153,7 @@ @PostMapping(value = "/add") public R<Boolean> add(@Validated @RequestBody TErpGoodsAddDto dto) { SysUser user = tokenService.getLoginUser().getUser(); if (erpGoodsService.isExit(dto.getGoodsIdCode(), dto.getQuasiNumber())) { if (erpGoodsService.isExit(dto.getGoodsIdCode(), dto.getQuasiNumber(),null)) { return R.fail("erp商品已存在"); } Integer roleType = user.getRoleType(); @@ -186,7 +187,7 @@ @PostMapping(value = "/clinicAdd") public R<Boolean> clinicAdd(@Validated @RequestBody TErpClinicGoodsAddDto dto) { SysUser user = tokenService.getLoginUser().getUser(); if (erpGoodsService.isExit(dto.getGoodsIdCode(), dto.getQuasiNumber())) { if (erpGoodsService.isExit(dto.getGoodsIdCode(), dto.getQuasiNumber(),null)) { return R.fail("erp商品已存在"); } Integer roleType = user.getRoleType(); @@ -205,10 +206,88 @@ return R.ok(erpGoodsService.save(goods)); } @ApiOperation(value = "供应商删除商品") @ApiOperation(value = "诊所编辑商品") @PostMapping(value = "/clinicUpdate") public R<Boolean> clinicUpdate(@Validated @RequestBody TErpClinicGoodsUpdateDto dto) { SysUser user = tokenService.getLoginUser().getUser(); if (erpGoodsService.isExit(dto.getGoodsIdCode(), dto.getQuasiNumber(),dto.getId())) { return R.fail("erp商品已存在"); } Integer roleType = user.getRoleType(); TErpGoods goods = new TErpGoods(); BeanUtils.copyProperties(dto,goods); if(roleType == 5){ // 诊所 TCrmClinic crmClinic = crmClinicService.getOne(Wrappers.lambdaQuery(TCrmClinic.class) .eq(TCrmClinic::getUserId, user.getUserId()) .last("LIMIT 1")); goods.setSupplierClinicId(crmClinic.getId()); goods.setGoodsSource(2); } goods.setCreateId(user.getUserId().toString()); goods.setGoodsIdCode(dto.getGoodsIdCode()); goods.setId(dto.getId()); return R.ok(erpGoodsService.updateById(goods)); } @ApiOperation(value = "供应商/诊所 删除商品") @DeleteMapping(value = "/delete/{id}") public R<Boolean> delete(@PathVariable String id) { return R.ok(erpGoodsService.removeById(id)); TErpGoods goods = erpGoodsService.getById(id); SysUser user = tokenService.getLoginUser().getUser(); String cid = null; if(user.getRoleType() == 5){ // 诊所 TCrmClinic crmClinic = crmClinicService.getOne(Wrappers.lambdaQuery(TCrmClinic.class) .eq(TCrmClinic::getUserId, user.getUserId()) .last("LIMIT 1")); cid = crmClinic.getId(); if(goods.getGoodsSource()==1){ String clinicIds = goods.getClinicIds(); String[] split = clinicIds.split(","); // clinicIds 移除cid ArrayList<String> strings = new ArrayList<>(); for (String s : split) { if(!s.equals(cid)){ strings.add(s); } } goods.setClinicIds(String.join(",",strings)); erpGoodsService.updateById(goods); }else { erpGoodsService.removeById(id); } return R.ok(); } erpGoodsService.removeById(id); return R.ok(); } @ApiOperation(value = "诊所 一键添加商品") @PostMapping(value = "/addSupplierGoods") public R<Boolean> addSupplierGoods(String goodsIds) { List<String> split = Arrays.asList(goodsIds.split(",")); List<TErpGoods> list = erpGoodsService.list(new LambdaQueryWrapper<TErpGoods>().in(TErpGoods::getId, split)); SysUser user = tokenService.getLoginUser().getUser(); String cid = null; if(user.getRoleType() == 5){ TCrmClinic crmClinic = crmClinicService.getOne(Wrappers.lambdaQuery(TCrmClinic.class) .eq(TCrmClinic::getUserId, user.getUserId()) .last("LIMIT 1")); cid = crmClinic.getId(); for (TErpGoods goods : list) { String clinicIds = goods.getClinicIds(); List<String> split1 = Arrays.asList(clinicIds.split(",")); if(!split1.contains(cid)){ split1.add(cid); goods.setClinicIds(String.join(",",split1)); } } erpGoodsService.updateBatchById(list); } return R.ok(); } ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpProcurementController.java
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.lkl.laop.sdk.request.V3LabsTransPreorderRequest; import com.ruoyi.common.basic.PageInfo; import com.ruoyi.common.core.domain.BaseModel; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.utils.DateUtils; @@ -16,18 +17,17 @@ import com.ruoyi.system.query.TErpGoodsQuery; import com.ruoyi.system.query.TErpProcurementQuery; import com.ruoyi.system.service.*; import com.ruoyi.system.vo.DetailProcurementVO; import com.ruoyi.system.vo.TErpGoodsVO; import com.ruoyi.system.vo.TErpProcurementDetailVo; import com.ruoyi.system.vo.TErpProcurementVo; import com.ruoyi.system.vo.*; import com.ruoyi.web.core.config.LakalaConfig; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.poi.ss.formula.functions.T; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -151,6 +151,43 @@ return R.ok( erpProcurementService.detailProcurement(clinicSupplierId, user, id)); } @ApiOperation(value = "采购草稿") @GetMapping(value = "/getProcurementDraft") public R<ArrayList<DetailProcurementNextVO>> getProcurementDraft() { SysUser user = tokenService.getLoginUser().getUser(); Integer roleType = user.getRoleType(); String clinicSupplierId=null; if(roleType == 5){ // 诊所 TCrmClinic crmClinic = crmClinicService.getOne(Wrappers.lambdaQuery(TCrmClinic.class) .eq(TCrmClinic::getUserId, user.getUserId()) .last("LIMIT 1")); clinicSupplierId = crmClinic.getId(); } ArrayList<DetailProcurementNextVO> detailProcurementNextVOS = new ArrayList<>(); List<TErpProcurement> list1 = erpProcurementService.list(new LambdaQueryWrapper<TErpProcurement>().eq(TErpProcurement::getStatus, 1).orderByDesc(BaseModel::getCreateTime)); if(list1.isEmpty()){ return R.ok(detailProcurementNextVOS); } String id = list1.get(0).getId(); List<TErpProcurementGoods> list = erpProcurementGoodsService.list(new LambdaQueryWrapper<TErpProcurementGoods>().eq(TErpProcurementGoods::getProcurementId, id)); for (TErpProcurementGoods tErpProcurementGoods : list) { DetailProcurementNextVO detailProcurementNextVO = new DetailProcurementNextVO(); detailProcurementNextVO.setId(tErpProcurementGoods.getId()); detailProcurementNextVO.setGoodsName(tErpProcurementGoods.getGoodsName()); detailProcurementNextVO.setQuasiNumber(tErpProcurementGoods.getQuasiNumber()); detailProcurementNextVO.setPackingUnitName(tErpProcurementGoods.getUnitName()); detailProcurementNextVO.setSalesAmount(tErpProcurementGoods.getSalesAmount()); detailProcurementNextVO.setNum(tErpProcurementGoods.getPurchaseCount()); detailProcurementNextVO.setTotalPrice(tErpProcurementGoods.getTotalPrice()); detailProcurementNextVO.setSupplierName(tErpProcurementGoods.getSupplierName()); detailProcurementNextVO.setUnitName(tErpProcurementGoods.getUnitName()); detailProcurementNextVO.setPurchasePrice(tErpProcurementGoods.getPurchasePrice()); detailProcurementNextVOS.add(detailProcurementNextVO); } return R.ok(detailProcurementNextVOS); } @ApiOperation(value = "采购详情入库") @PostMapping(value = "/updateStatusProcurement") ruoyi-system/src/main/java/com/ruoyi/system/dto/TErpClinicGoodsUpdateDto.java
New file @@ -0,0 +1,133 @@ 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; @Data @ApiModel(value = "erp诊所商品编辑DTO") public class TErpClinicGoodsUpdateDto { @ApiModelProperty(value = "商品id") @NotNull(message = "商品id不能为空") private String id; @ApiModelProperty(value = "商品名称") @NotBlank ( message = "商品名称不能为空") private String goodsName; @ApiModelProperty(value = "供应商名称") @NotBlank ( message = "供应商名称不能为空") private String supplierName; @ApiModelProperty(value = "国药准字号") @NotBlank ( message = "国药准字号不能为空") private String quasiNumber; @ApiModelProperty(value = "生产厂家") @NotBlank ( message = "生产厂家不能为空") private String manufacturer; @ApiModelProperty(value = "制剂规格") @NotBlank ( message = "制剂规格不能为空") private String formulationSpec; @ApiModelProperty(value = "包装规格") @NotBlank ( message = "包装规格不能为空") private String packingSpec; @ApiModelProperty(value = "商品类型id") @NotBlank ( message = "商品类型id不能为空") private String typeId; @ApiModelProperty(value = "商品条码") @NotBlank ( message = "商品条码不能为空") private String goodsIdCode; @ApiModelProperty(value = "保养周期") private String maintenanceInterval; @ApiModelProperty(value = "保养周期单位") private String maintenanceIntervalUnit; @ApiModelProperty(value = "是否为处方药 1=是 2=否") private Integer isPrescriptionDrug; @ApiModelProperty(value = "商品规格") @NotBlank ( message = "商品规格不能为空") private String goodsSpec; @ApiModelProperty(value = "预警库存") @NotNull(message = "预警库存不能为空") private Integer warningInventory; @ApiModelProperty(value = "包装单位,单位id") @NotBlank ( message = "包装单位,单位id不能为空") private String packingUnitId; @ApiModelProperty(value = "商品售价") @NotNull(message = "商品售价不能为空") private BigDecimal salesAmount; @ApiModelProperty(value = "使用说明") private String instructionsUse; @ApiModelProperty(value = "副作用") private String sideEffect; @ApiModelProperty(value = "拼音简码") private String simplifiedCode; @ApiModelProperty(value = "剂型") private String dosageForm; @ApiModelProperty(value = "用途分类") private String usageClassification; @ApiModelProperty(value = "商品品牌名") private String productBrand; @ApiModelProperty(value = "产地") private String placeOfOrigin; @ApiModelProperty(value = "成分") private String ingredient; @ApiModelProperty(value = "性状") private String trait; @ApiModelProperty(value = "适应症") private String indication; @ApiModelProperty(value = "禁忌") private String taboo; @ApiModelProperty(value = "注意事项") private String precautions; @ApiModelProperty(value = "相互作用") private String interaction; } ruoyi-system/src/main/java/com/ruoyi/system/model/TErpGoods.java
@@ -230,5 +230,9 @@ private String supplierName; @ApiModelProperty(value = "诊所id") @TableField("clinic_ids") private String clinicIds; } ruoyi-system/src/main/java/com/ruoyi/system/query/TClinicOutboundQuery.java
@@ -6,7 +6,7 @@ import lombok.Data; @Data @ApiModel(value = "erp诊所入库查询参数query") @ApiModel(value = "erp诊所出库查询参数query") public class TClinicOutboundQuery extends BasePage { @ApiModelProperty(value = "出库单号") ruoyi-system/src/main/java/com/ruoyi/system/service/TErpGoodsService.java
@@ -44,7 +44,7 @@ */ List<TErpGoodsVO> listExport(TErpGoodsQuery query, SysUser user); boolean isExit(String goodsIdCode,String quasiNumber); boolean isExit(String goodsIdCode,String quasiNumber,String id); PageInfo<TErpGoodsInventoryVO> pageInventoryGoodsPageList(@Valid TErpGoodsInventoryQuery query, SysUser user); ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpGoodsServiceImpl.java
@@ -138,12 +138,11 @@ } @Override public boolean isExit(String goodsIdCode, String quasiNumber) { Long size = this.baseMapper.selectCount(new LambdaQueryWrapper<>(TErpGoods.class).eq(TErpGoods::getGoodsIdCode, goodsIdCode).or().eq(TErpGoods::getQuasiNumber, quasiNumber)); public boolean isExit(String goodsIdCode, String quasiNumber,String id) { Long size = this.baseMapper.selectCount(new LambdaQueryWrapper<>(TErpGoods.class).ne(id!=null,TErpGoods::getId, id).eq(TErpGoods::getGoodsIdCode, goodsIdCode).or().eq(TErpGoods::getQuasiNumber, quasiNumber)); if (size > 0) { return true; } return false; } ruoyi-system/src/main/java/com/ruoyi/system/vo/DetailProcurementNextVO.java
@@ -16,6 +16,10 @@ @ApiModelProperty(value = "采购二级id") private String id; @ApiModelProperty("商品id") private String goodsId; @ApiModelProperty(value = "商品名称") private String goodsName; @ApiModelProperty(value = "国药准字号") @@ -24,7 +28,7 @@ @ApiModelProperty(value = "单位") private String packingUnitName; @ApiModelProperty(value = "商品售价") @ApiModelProperty(value = "售价") private BigDecimal salesAmount; @ApiModelProperty(value = "数量") @@ -33,6 +37,16 @@ @ApiModelProperty(value = "状态") private BigDecimal totalPrice=BigDecimal.ZERO; @ApiModelProperty(value = "供应商名称") private String supplierName; @ApiModelProperty(value = "单位名称") private String unitName; @ApiModelProperty(value = "采购价") private BigDecimal purchasePrice; ruoyi-system/src/main/resources/mapper/system/TErpClinicWarehousingMapper.xml
@@ -123,7 +123,7 @@ 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} where t1.disabled = 0 and t1.clinic_id = #{supplierClinicId} <if test="query.warehouseNo != null and query.warehouseNo != ''"> and t1.warehouse_no like concat('%',#{query.warehouseNo},'%') </if> ruoyi-system/src/main/resources/mapper/system/TErpGoodsMapper.xml
@@ -76,7 +76,7 @@ and goods_source =1 and supplier_clinic_id = #{query.supplierClinicId} </if> <if test="user.roleType != null and user.roleType == 5 "> and ( (goods_source =2 and supplier_clinic_id = #{query.supplierClinicId} ) or FIND_IN_SET(#{query.supplierClinicId},clinic_ids) ) and ( (goods_source =2 and supplier_clinic_id = #{query.supplierClinicId} ) or (FIND_IN_SET(#{query.supplierClinicId},clinic_ids) and state =1)) </if> order by create_time desc </select>