From 72aaf45389cd09c206ee1b90f0c7f5bf59782930 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期三, 22 十月 2025 18:27:49 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpProcurementController.java | 232 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 224 insertions(+), 8 deletions(-)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpProcurementController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpProcurementController.java
index 1cf9c4e..08ad50e 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpProcurementController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpProcurementController.java
@@ -11,6 +11,7 @@
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.framework.web.service.TokenService;
import com.ruoyi.system.dto.AddProcurementDto;
+import com.ruoyi.system.dto.DetailProcurementSendDto;
import com.ruoyi.system.dto.UpdateStatusProcurementDto;
import com.ruoyi.system.dto.UpdateStatusProcurementLastDto;
import com.ruoyi.system.model.*;
@@ -23,10 +24,13 @@
import io.swagger.annotations.ApiOperation;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -54,12 +58,21 @@
private final TErpClinicWarehousingService erpClinicWarehousingService;
private final TErpClinicWarehousingBatchService erpClinicWarehousingBatchService;
private final TCrmSupplierService crmSupplierService;
+ private final TErpMaintenanceReminderService erpMaintenanceReminderService;
+ private final TSysOtherConfigService sysOtherConfigService;
+ private final TCrmClinicPointsService crmClinicPointsService;
+ private final TCrmChangePointsService crmChangePointsService;
+ private final TCrmBranchService crmBranchService;
+ private final TCrmSalespersonService crmSalespersonService;
+ private final TErpProcurementCommissionService erpProcurementCommissionService;
+ private final TCrmWarehouseService crmWarehouseService;
+
@Autowired
- public TErpProcurementController(TErpProcurementService erpProcurementService, TokenService tokenService,TCrmClinicService crmClinicService,TErpProcurementGoodsService erpProcurementGoodsService
- , TErpGoodsService erpGoodsService,TErpClinicWarehousingService erpClinicWarehousingService,TErpClinicWarehousingBatchService erpClinicWarehousingBatchService,
- TCrmSupplierService crmSupplierService) {
+ public TErpProcurementController(TErpProcurementService erpProcurementService, TokenService tokenService, TCrmClinicService crmClinicService, TErpProcurementGoodsService erpProcurementGoodsService
+ , TErpGoodsService erpGoodsService, TErpClinicWarehousingService erpClinicWarehousingService, TErpClinicWarehousingBatchService erpClinicWarehousingBatchService,
+ TCrmSupplierService crmSupplierService, TErpMaintenanceReminderService erpMaintenanceReminderService, TSysOtherConfigService sysOtherConfigService, TCrmClinicPointsService crmClinicPointsService, TCrmChangePointsService crmChangePointsService, TCrmBranchService crmBranchService, TCrmSalespersonService crmSalespersonService, TErpProcurementCommissionService erpProcurementCommissionService, TCrmWarehouseService crmWarehouseService) {
this.erpProcurementService = erpProcurementService;
this.tokenService = tokenService;
this.crmClinicService = crmClinicService;
@@ -68,6 +81,16 @@
this.erpClinicWarehousingService = erpClinicWarehousingService;
this.erpClinicWarehousingBatchService = erpClinicWarehousingBatchService;
this.crmSupplierService = crmSupplierService;
+ this.erpMaintenanceReminderService = erpMaintenanceReminderService;
+ this.sysOtherConfigService = sysOtherConfigService;
+ this.crmClinicPointsService = crmClinicPointsService;
+ this.crmChangePointsService = crmChangePointsService;
+ this.crmBranchService = crmBranchService;
+ this.crmSalespersonService = crmSalespersonService;
+ this.erpProcurementCommissionService = erpProcurementCommissionService;
+
+ this.crmWarehouseService = crmWarehouseService;
+
}
@@ -81,6 +104,18 @@
SysUser user = tokenService.getLoginUser().getUser();
return R.ok(erpProcurementService.pageList(query,user));
}
+
+
+ /**
+ * erp采购管理分页列表
+ */
+ @ApiOperation(value = "erp采购管理分页列表--仓库专用")
+ @PostMapping(value = "/pageListWarehouse")
+ public R<PageInfo<TErpProcurementVo>> pageListWarehouse(@RequestBody TErpProcurementQuery query) {
+ SysUser user = tokenService.getLoginUser().getUser();
+ return R.ok(erpProcurementService.pageListWarehouse(query,user));
+ }
+
@@ -151,6 +186,48 @@
return R.ok( erpProcurementService.detailProcurement(clinicSupplierId, user, id));
}
+
+
+ @ApiOperation(value = "采购详情--发货(仓库角色)")
+ @PostMapping(value = "/detailProcurementSend")
+ public R<?> detailProcurementSend(@RequestBody DetailProcurementSendDto dto) {
+ SysUser user = tokenService.getLoginUser().getUser();
+ Integer roleType = user.getRoleType();
+ List<String> clinicSupplierId=null;
+ if(roleType == 6){
+
+ TCrmWarehouse warehouse = crmWarehouseService.getOne(Wrappers.lambdaQuery(TCrmWarehouse.class)
+ .eq(TCrmWarehouse::getUserId, user.getUserId())
+ .last("LIMIT 1"));
+
+ // 供应商
+ clinicSupplierId = crmSupplierService.list(Wrappers.lambdaQuery(TCrmSupplier.class)
+ .eq(TCrmSupplier::getWarehouseId, warehouse.getId())).stream().map(TCrmSupplier::getId).collect(Collectors.toList());
+ }
+ erpProcurementService.detailProcurementSend(clinicSupplierId, user, dto.getId(),dto.getLogisticsNumber());
+ return R.ok();
+ }
+
+// @ApiOperation(value = "采购详情--仓库角色专用")
+// @GetMapping(value = "/detailProcurementWarehouse/{id}")
+// public R<DetailProcurementVO> detailProcurementWarehouse(@PathVariable String id) {
+// 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();
+// }
+//
+// return R.ok( erpProcurementService.detailProcurementWarehouse(clinicSupplierId, user, id));
+// }
+
+
+
+
@ApiOperation(value = "采购草稿")
@GetMapping(value = "/getProcurementDraft")
public R<ArrayList<DetailProcurementNextVO>> getProcurementDraft() {
@@ -165,7 +242,7 @@
clinicSupplierId = crmClinic.getId();
}
ArrayList<DetailProcurementNextVO> detailProcurementNextVOS = new ArrayList<>();
- List<TErpProcurement> list1 = erpProcurementService.list(new LambdaQueryWrapper<TErpProcurement>().eq(TErpProcurement::getStatus, 1).orderByDesc(BaseModel::getCreateTime));
+ List<TErpProcurement> list1 = erpProcurementService.list(new LambdaQueryWrapper<TErpProcurement>().eq(TErpProcurement::getClinicId, clinicSupplierId).eq(TErpProcurement::getStatus, 1).orderByDesc(TErpProcurement::getCreateTime));
if(list1.isEmpty()){
return R.ok(detailProcurementNextVOS);
}
@@ -191,13 +268,15 @@
@ApiOperation(value = "采购详情入库")
@PostMapping(value = "/updateStatusProcurement")
- public R<DetailProcurementVO> updateStatusProcurement(@RequestParam @Valid UpdateStatusProcurementLastDto dto) {
+ @Transactional(rollbackFor = Exception.class)
+ public R<DetailProcurementVO> updateStatusProcurement(@RequestBody @Valid UpdateStatusProcurementLastDto dto) {
SysUser user = tokenService.getLoginUser().getUser();
Integer roleType = user.getRoleType();
String clinicSupplierId=null;
+ TCrmClinic crmClinic = null;
if(roleType == 5){
// 诊所
- TCrmClinic crmClinic = crmClinicService.getOne(Wrappers.lambdaQuery(TCrmClinic.class)
+ crmClinic = crmClinicService.getOne(Wrappers.lambdaQuery(TCrmClinic.class)
.eq(TCrmClinic::getUserId, user.getUserId())
.last("LIMIT 1"));
clinicSupplierId = crmClinic.getId();
@@ -210,6 +289,8 @@
return R.fail("目前状态无法入库");
}
erpProcurement.setStatus(5);
+ erpProcurement.setWarehousingUserId(user.getUserId().toString());
+ erpProcurement.setWarehousingTime(LocalDateTime.now());
erpProcurementService.updateById(erpProcurement);
List<String> collect = dto.getList().stream().map(UpdateStatusProcurementDto::getId).collect(Collectors.toList());
@@ -229,8 +310,35 @@
// tErpClinicWarehousing.setUnitAmount(tErpProcurementGoods.getSalesAmount());
tErpClinicWarehousing.setWarehousingType(1);
tErpClinicWarehousing.setType(1);
- tErpClinicWarehousing.setWarehouseNo("G"+ DateUtils.dateTimeNow());
- erpClinicWarehousingService.save(tErpClinicWarehousing);
+
+ TErpClinicWarehousing last = erpClinicWarehousingService.getOne(new LambdaQueryWrapper<TErpClinicWarehousing>().orderByDesc(BaseModel::getCreateTime).orderByDesc(TErpClinicWarehousing::getWarehouseNo).last("LIMIT 1"));
+ if(last==null){
+ tErpClinicWarehousing.setWarehouseNo("G"+ DateUtils.dateTimeNow()+"00001");
+ }else {
+ String lastProcurementCode = last.getWarehouseNo();
+ String datePart = "G" + DateUtils.dateTimeNow();
+
+ // 直接获取后五位数字并+1,不考虑是否同一天
+ try {
+ String numberPart = lastProcurementCode.substring(Math.max(0, lastProcurementCode.length() - 5));
+ int number = Integer.parseInt(numberPart);
+ if (number < 99999) {
+ number++;
+ } else {
+ number = 2; // 达到99999后重置为00002
+ }
+ tErpClinicWarehousing.setWarehouseNo(datePart + String.format("%05d", number));
+ } catch (NumberFormatException e) {
+ // 如果解析失败,默认从00001开始
+ tErpClinicWarehousing.setWarehouseNo(datePart + "00001");
+ }
+ }
+ tErpClinicWarehousing.setProcurementId(erpProcurement.getId());
+ try {
+ erpClinicWarehousingService.save(tErpClinicWarehousing);
+ }catch (Exception e){
+ throw new RuntimeException("网络繁忙,请重试");
+ }
// goodsId分组
for (UpdateStatusProcurementDto updateStatusProcurementDto : dto.getList()) {
TErpProcurementGoods tErpProcurementGoods = list.stream().filter(t -> t.getId().equals(updateStatusProcurementDto.getId())).findFirst().get();
@@ -248,7 +356,114 @@
tErpClinicWarehousingGoods.setSalesAmount(tErpProcurementGoods.getSalesAmount());
erpClinicWarehousingBatchService.save(tErpClinicWarehousingGoods);
+
+ if(erpGoods.getMaintenanceInterval()!=null){
+ TErpMaintenanceReminder tErpMaintenanceReminder = new TErpMaintenanceReminder();
+ tErpMaintenanceReminder.setClinicSupplierId(clinicSupplierId);
+ tErpMaintenanceReminder.setMaintenanceType(2);
+ tErpMaintenanceReminder.setWarehousingBatchId(tErpClinicWarehousingGoods.getId());
+ Integer day = Integer.valueOf(erpGoods.getMaintenanceInterval());
+ // 当前时间+day天
+ LocalDateTime time1 = LocalDateTime.now().plusDays(day);
+ tErpMaintenanceReminder.setMaintenanceTime(time1);
+ erpMaintenanceReminderService.save(tErpMaintenanceReminder);
+ }
+
+
}
+
+ BigDecimal payMoney = erpProcurement.getPayMoney();
+ // 诊所添加积分 分公司添加积分 业务员添加积分 分公司添加分佣记录 业务员添加分佣记录
+ TSysOtherConfig sysOtherConfig= sysOtherConfigService.getById(1);
+ if(sysOtherConfig!=null && sysOtherConfig.getPointsExpiration()!=null){
+ Integer pointsExpiration = sysOtherConfig.getPointsExpiration();
+ if(sysOtherConfig.getExpireUnit().equals(2)){
+ pointsExpiration = pointsExpiration * 31;
+ }
+ if(sysOtherConfig.getExpireUnit().equals(3)){
+ pointsExpiration = pointsExpiration * 365;
+ }
+ Double procurementConditions = sysOtherConfig.getProcurementConditions();
+
+ // 积分数
+ int points = payMoney.divide(BigDecimal.valueOf(procurementConditions), 2, RoundingMode.HALF_DOWN).intValue();
+ TCrmClinicPoints tCrmClinicPoints = new TCrmClinicPoints();
+ tCrmClinicPoints.setClinicId(erpProcurement.getClinicId());
+ tCrmClinicPoints.setPoints(points);
+ tCrmClinicPoints.setExpireTime(LocalDateTime.now().plusDays(pointsExpiration));
+ crmClinicPointsService.save(tCrmClinicPoints);
+
+ TCrmChangePoints tCrmChangePoints = new TCrmChangePoints();
+ tCrmChangePoints.setProcurementId(erpProcurement.getId());
+ tCrmChangePoints.setBranchSalespersonId(erpProcurement.getClinicId());
+ tCrmChangePoints.setUserType(3);
+ tCrmChangePoints.setChangeType(1);
+ tCrmChangePoints.setChangeReason(1);
+ tCrmChangePoints.setChangeValue(points);
+ crmChangePointsService.save(tCrmChangePoints);
+
+ }
+
+ String branchId = crmClinic.getBranchId();
+ TCrmBranch branch = crmBranchService.getById(branchId);
+ if(branch!=null){
+
+ // 积分数
+ int points = payMoney.divide(branch.getPointsCommission(), 2, RoundingMode.HALF_DOWN).intValue();
+
+ TCrmChangePoints tCrmChangePoints = new TCrmChangePoints();
+ tCrmChangePoints.setProcurementId(erpProcurement.getId());
+ tCrmChangePoints.setBranchSalespersonId(branchId);
+ tCrmChangePoints.setUserType(1);
+ tCrmChangePoints.setChangeType(1);
+ tCrmChangePoints.setChangeReason(1);
+ tCrmChangePoints.setChangeValue(points);
+ crmChangePointsService.save(tCrmChangePoints);
+
+ branch.setUserPoints(branch.getUserPoints()+points);
+ crmBranchService.updateById(branch);
+
+
+ // 分佣
+ BigDecimal commission = branch.getMoneyCommission().divide(BigDecimal.valueOf(100), 4, RoundingMode.HALF_DOWN).multiply(payMoney).setScale(2, RoundingMode.HALF_UP);
+ TErpProcurementCommission tErpProcurementCommission = new TErpProcurementCommission();
+ tErpProcurementCommission.setProcurementId(erpProcurement.getId());
+ tErpProcurementCommission.setCommissionType(1);
+ tErpProcurementCommission.setBranchSalespersonId(branchId);
+ tErpProcurementCommission.setMoney(commission);
+ erpProcurementCommissionService.save(tErpProcurementCommission);
+
+ }
+
+ String salespersonId = crmClinic.getSalespersonId();
+ TCrmSalesperson salesperson = crmSalespersonService.getById(salespersonId);
+ if(salesperson!=null){
+ // 积分数
+ int points = payMoney.divide(salesperson.getPointsCommission(), 2, RoundingMode.HALF_DOWN).intValue();
+ TCrmChangePoints tCrmChangePoints = new TCrmChangePoints();
+ tCrmChangePoints.setProcurementId(erpProcurement.getId());
+ tCrmChangePoints.setBranchSalespersonId(salespersonId);
+ tCrmChangePoints.setUserType(2);
+ tCrmChangePoints.setChangeType(1);
+ tCrmChangePoints.setChangeReason(1);
+ tCrmChangePoints.setChangeValue(points);
+ crmChangePointsService.save(tCrmChangePoints);
+ salesperson.setUserPoints(salesperson.getUserPoints()+points);
+ crmSalespersonService.updateById(salesperson);
+
+
+
+ // 分佣
+ BigDecimal commission = salesperson.getMoneyCommission().divide(BigDecimal.valueOf(100), 4, RoundingMode.HALF_DOWN).multiply(payMoney).setScale(2, RoundingMode.HALF_UP);
+ TErpProcurementCommission tErpProcurementCommission = new TErpProcurementCommission();
+ tErpProcurementCommission.setProcurementId(erpProcurement.getId());
+ tErpProcurementCommission.setCommissionType(2);
+ tErpProcurementCommission.setBranchSalespersonId(salespersonId);
+ tErpProcurementCommission.setMoney(commission);
+ erpProcurementCommissionService.save(tErpProcurementCommission);
+ }
+
+
return R.ok();
}
@@ -259,5 +474,6 @@
+
}
--
Gitblit v1.7.1