功能开发

master
sunjianxi 2 months ago
parent 871e66e24a
commit 86c9d710a8
  1. 10
      src/main/java/org/springblade/modules/jinchao/controller/ExchangeRateController.java
  2. 3
      src/main/java/org/springblade/modules/jinchao/controller/OrderController.java
  3. 1
      src/main/java/org/springblade/modules/jinchao/mapper/OrderMapper.xml
  4. 8
      src/main/java/org/springblade/modules/jinchao/mapper/WaterBillMapper.xml
  5. 6
      src/main/java/org/springblade/modules/jinchao/pojo/entity/ExchangeRateEntity.java
  6. 6
      src/main/java/org/springblade/modules/jinchao/pojo/entity/ExchangeRateHistoryEntity.java
  7. 2
      src/main/java/org/springblade/modules/jinchao/service/IBizPriceService.java
  8. 19
      src/main/java/org/springblade/modules/jinchao/service/impl/BizPriceServiceImpl.java
  9. 4
      src/main/java/org/springblade/modules/jinchao/service/impl/ExchangeRateServiceImpl.java
  10. 43
      src/main/java/org/springblade/modules/jinchao/service/impl/OrderServiceImpl.java
  11. 49
      src/main/java/org/springblade/modules/jinchao/service/impl/ProductServiceImpl.java

@ -25,6 +25,8 @@
*/ */
package org.springblade.modules.jinchao.controller; package org.springblade.modules.jinchao.controller;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
@ -110,6 +112,10 @@ public class ExchangeRateController extends BladeController {
@ApiOperationSupport(order = 4) @ApiOperationSupport(order = 4)
@Operation(summary = "新增", description = "传入exchangeRate") @Operation(summary = "新增", description = "传入exchangeRate")
public R save(@Valid @RequestBody ExchangeRateEntity exchangeRate) { public R save(@Valid @RequestBody ExchangeRateEntity exchangeRate) {
ExchangeRateEntity old = exchangeRateService.getOne(Wrappers.<ExchangeRateEntity>lambdaQuery().eq(ExchangeRateEntity::getBaseCurrency,exchangeRate.getBaseCurrency()).eq(ExchangeRateEntity::getTargetCurrency,exchangeRate.getTargetCurrency()));
if(old != null){
return R.fail("该汇率已存在");
}
BladeUser user = AuthUtil.getUser(); BladeUser user = AuthUtil.getUser();
exchangeRate.setUpdateUser(user.getUserId()); exchangeRate.setUpdateUser(user.getUserId());
exchangeRate.setUpdateUserName(user.getNickName()); exchangeRate.setUpdateUserName(user.getNickName());
@ -144,6 +150,10 @@ public class ExchangeRateController extends BladeController {
@ApiOperationSupport(order = 6) @ApiOperationSupport(order = 6)
@Operation(summary = "新增或修改", description = "传入exchangeRate") @Operation(summary = "新增或修改", description = "传入exchangeRate")
public R submit(@Valid @RequestBody ExchangeRateEntity exchangeRate) { public R submit(@Valid @RequestBody ExchangeRateEntity exchangeRate) {
ExchangeRateEntity old = exchangeRateService.getOne(Wrappers.<ExchangeRateEntity>lambdaQuery().eq(ExchangeRateEntity::getBaseCurrency,exchangeRate.getBaseCurrency()).eq(ExchangeRateEntity::getTargetCurrency,exchangeRate.getTargetCurrency()));
if(old != null && old.getId() != exchangeRate.getId()){
return R.fail("该汇率已存在");
}
return R.status(exchangeRateService.saveOrUpdate(exchangeRate)); return R.status(exchangeRateService.saveOrUpdate(exchangeRate));
} }

@ -239,7 +239,8 @@ public class OrderController extends BladeController {
@ApiOperationSupport(order = 5) @ApiOperationSupport(order = 5)
@Operation(summary = "获取模版年份", description = "获取模版") @Operation(summary = "获取模版年份", description = "获取模版")
public R selectTemplateYear() { public R selectTemplateYear() {
List<OrderEntity> orderList = orderService.list(); BladeUser user = AuthUtil.getUser();
List<OrderEntity> orderList = orderService.list(Wrappers.<OrderEntity>lambdaQuery().eq(BaseEntity::getCreateUser,user.getUserId()));
Set<String> yearSet = orderList.stream() Set<String> yearSet = orderList.stream()
.filter(order -> StringUtils.isNotEmpty(order.getOrderDate())) .filter(order -> StringUtils.isNotEmpty(order.getOrderDate()))
.map(order -> order.getOrderDate().substring(0,4)) .map(order -> order.getOrderDate().substring(0,4))

@ -59,6 +59,7 @@
</if> </if>
</where> </where>
order by create_time desc
</select> </select>

@ -20,7 +20,13 @@
<select id="selectWaterBillPage" resultMap="waterBillResultMap"> <select id="selectWaterBillPage" resultMap="waterBillResultMap">
select * from jc_water_bill where is_deleted = 0 select * from jc_water_bill
<where>
is_deleted = 0
<if test="param2.orderId != null and param2.orderId != ''">
AND order_id = #{param2.orderId}
</if>
</where>
</select> </select>

@ -75,4 +75,10 @@ public class ExchangeRateEntity extends TenantEntity {
@Schema(description = "修改人姓名") @Schema(description = "修改人姓名")
private String updateUserName; private String updateUserName;
/**
* 备注
*/
@Schema(description = "备注")
private String remarks;
} }

@ -93,4 +93,10 @@ public class ExchangeRateHistoryEntity extends TenantEntity {
@Schema(description = "修改人姓名") @Schema(description = "修改人姓名")
private String updateUserName; private String updateUserName;
/**
* 备注
*/
@Schema(description = "备注")
private String remarks;
} }

@ -62,7 +62,7 @@ public interface IBizPriceService extends BaseService<BizPriceEntity> {
R submit(BizPriceEntity e); R submit(BizPriceEntity e);
List<BizPriceEntity> listByProductId(Long productId); List<BizPriceEntity> listByProductId(Long productId,Long customerId);
Integer deleteByProductId(Long productId); Integer deleteByProductId(Long productId);
} }

@ -25,8 +25,11 @@
*/ */
package org.springblade.modules.jinchao.service.impl; package org.springblade.modules.jinchao.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import jakarta.validation.Valid; import jakarta.validation.Valid;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R; import org.springblade.core.tool.api.R;
import org.springblade.modules.jinchao.pojo.entity.BizPriceEntity; import org.springblade.modules.jinchao.pojo.entity.BizPriceEntity;
import org.springblade.modules.jinchao.pojo.vo.BizPriceVO; import org.springblade.modules.jinchao.pojo.vo.BizPriceVO;
@ -88,11 +91,17 @@ public class BizPriceServiceImpl extends BaseServiceImpl<BizPriceMapper, BizPric
} }
@Override @Override
public List<BizPriceEntity> listByProductId(Long productId) { public List<BizPriceEntity> listByProductId(Long productId,Long customerId) {
return baseMapper.selectList( BladeUser user = AuthUtil.getUser();
new QueryWrapper<BizPriceEntity>() LambdaQueryWrapper<BizPriceEntity> wrapper = new LambdaQueryWrapper<>();
.eq("product_id", productId) wrapper.eq(BizPriceEntity::getProductId,productId);
); if(user.getRoleName().equals("sale")){
wrapper.eq(BizPriceEntity::getSaleUserId,user.getUserId());
}
if(customerId != null){
wrapper.eq(BizPriceEntity::getCustomerId,customerId);
}
return baseMapper.selectList(wrapper);
} }
@Override @Override

@ -73,6 +73,7 @@ public class ExchangeRateServiceImpl extends BaseServiceImpl<ExchangeRateMapper,
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Boolean updateRate(ExchangeRateEntity entity) { public Boolean updateRate(ExchangeRateEntity entity) {
BladeUser user = AuthUtil.getUser();
ExchangeRateEntity old = this.getById(entity.getId()); ExchangeRateEntity old = this.getById(entity.getId());
ExchangeRateHistoryEntity history = new ExchangeRateHistoryEntity(); ExchangeRateHistoryEntity history = new ExchangeRateHistoryEntity();
history.setExchangeRateId(old.getId()); history.setExchangeRateId(old.getId());
@ -82,8 +83,9 @@ public class ExchangeRateServiceImpl extends BaseServiceImpl<ExchangeRateMapper,
history.setTargetCurrency(old.getTargetCurrency()); history.setTargetCurrency(old.getTargetCurrency());
history.setRateOld(old.getRate()); history.setRateOld(old.getRate());
history.setRate(entity.getRate()); history.setRate(entity.getRate());
history.setRemarks(entity.getRemarks());
history.setCreateUserName(user.getUserName());
exchangeRateHistoryService.save(history); exchangeRateHistoryService.save(history);
BladeUser user = AuthUtil.getUser();
entity.setUpdateUser(user.getUserId()); entity.setUpdateUser(user.getUserId());
entity.setUpdateUserName(user.getNickName()); entity.setUpdateUserName(user.getNickName());
entity.setUpdateTime(new Date()); entity.setUpdateTime(new Date());

@ -71,7 +71,7 @@ public class OrderServiceImpl extends BaseServiceImpl<OrderMapper, OrderEntity>
@Override @Override
public IPage<OrderVO> selectOrderPage(IPage<OrderVO> page, OrderVO order) { public IPage<OrderVO> selectOrderPage(IPage<OrderVO> page, OrderVO order) {
BladeUser user = AuthUtil.getUser(); BladeUser user = AuthUtil.getUser();
if(user.getRoleName().equals("业务员")){ if(user.getRoleName().equals("sale")){
order.setCreateUser(user.getUserId()); order.setCreateUser(user.getUserId());
} }
if(StringUtils.isNotEmpty(order.getStatusStr())){ if(StringUtils.isNotEmpty(order.getStatusStr())){
@ -98,8 +98,8 @@ public class OrderServiceImpl extends BaseServiceImpl<OrderMapper, OrderEntity>
order.setCode(generateOrderCode(order)); order.setCode(generateOrderCode(order));
order.setOrderDate(DateFormatUtils.format(new Date(),"yyyy-MM-dd")); order.setOrderDate(DateFormatUtils.format(new Date(),"yyyy-MM-dd"));
order.setRemittedAmount(new BigDecimal(0)); order.setRemittedAmount(new BigDecimal(0));
order.setUnremittedAmount(order.getSellingPrice()); order.setUnremittedAmount(order.getSellingPrice().subtract(order.getDiscountAmount()));
order.setCreateUserName(user.getNickName()); order.setCreateUserName(user.getUserName());
order.setCreateDeptName(SysCache.getDeptName(Long.parseLong(user.getDeptId()))); order.setCreateDeptName(SysCache.getDeptName(Long.parseLong(user.getDeptId())));
this.save(order); this.save(order);
List<OrderProjectEntity> orderProjectEntityList = order.getProjectList(); List<OrderProjectEntity> orderProjectEntityList = order.getProjectList();
@ -121,32 +121,37 @@ public class OrderServiceImpl extends BaseServiceImpl<OrderMapper, OrderEntity>
public Boolean updateOrder(OrderEntity order) { public Boolean updateOrder(OrderEntity order) {
Date date = new Date(); Date date = new Date();
//修改之前版本的状态 //修改之前版本的状态
int status = order.getStatus(); OrderEntity oldOrder = this.getById(order.getId());
order.setStatus(9999); oldOrder.setStatus(9999);
order.setUpdateTime(date); oldOrder.setUpdateTime(date);
this.updateById(order); this.updateById(oldOrder);
//添加新的版本 //添加新的版本
order.setCode(generateOrderCode(order)); order.setCode(generateOrderCode(order));
order.setStatus(status);
order.setId(null); order.setId(null);
this.save(order); this.save(order);
List<OrderProjectEntity> orderProjectEntityList = order.getProjectList(); List<OrderProjectEntity> orderProjectEntityList = order.getProjectList();
for(OrderProjectEntity project : orderProjectEntityList){ for(OrderProjectEntity project : orderProjectEntityList){
//修改之前版本的状态 //修改之前版本的状态
project.setStatus(9999); if(project.getId() != null){
project.setUpdateTime(date); OrderProjectEntity oldProject = orderProjectService.getById(project.getId());
orderProjectService.updateById(project); oldProject.setStatus(9999);
oldProject.setUpdateTime(date);
orderProjectService.updateById(oldProject);
}
//添加新的版本 //添加新的版本
project.setId(null); project.setId(null);
project.setOrderId(order.getId()); project.setOrderId(order.getId());
project.setStatus(1);
orderProjectService.save(project); orderProjectService.save(project);
List<OrderProjectProductEntity> orderProjectProductEntityList = project.getProductList(); List<OrderProjectProductEntity> orderProjectProductEntityList = project.getProductList();
for(OrderProjectProductEntity product : orderProjectProductEntityList){ for(OrderProjectProductEntity product : orderProjectProductEntityList){
if(product.getId() != null){
OrderProjectProductEntity oldProduct = orderProjectProductService.getById(product.getId());
//修改之前版本状态 //修改之前版本状态
product.setStatus(9999); oldProduct.setStatus(9999);
product.setUpdateTime(date); oldProduct.setUpdateTime(date);
orderProjectProductService.updateById(product); orderProjectProductService.updateById(oldProduct);
}
//添加新的版本 //添加新的版本
product.setId(null); product.setId(null);
product.setOrderId(order.getId()); product.setOrderId(order.getId());
@ -167,6 +172,8 @@ public class OrderServiceImpl extends BaseServiceImpl<OrderMapper, OrderEntity>
project.setProductList(productList); project.setProductList(productList);
}); });
order.setProjectList(projectList); order.setProjectList(projectList);
List<OrderExtraChargeEntity> chargeList = orderExtraChargeService.list(Wrappers.<OrderExtraChargeEntity>lambdaQuery().eq(OrderExtraChargeEntity::getOrderId,order.getId()));
order.setExtraChargeList(chargeList);
return order; return order;
} }
@ -239,7 +246,8 @@ public class OrderServiceImpl extends BaseServiceImpl<OrderMapper, OrderEntity>
} }
List<OrderEntity> list = this.list(wrapper); List<OrderEntity> list = this.list(wrapper);
list.forEach(item ->{ list.forEach(item ->{
item.setPaidRate(item.getRemittedAmount().divide(item.getRemittedAmount().add(item.getUnremittedAmount()),2, RoundingMode.HALF_UP).multiply(new BigDecimal(100)) + "%"); BigDecimal totalAmount = item.getRemittedAmount().add(item.getUnremittedAmount());
item.setPaidRate(totalAmount.compareTo(new BigDecimal(0)) == 0 ? "0" :item.getRemittedAmount().divide(item.getRemittedAmount().add(item.getUnremittedAmount()),2, RoundingMode.HALF_UP).multiply(new BigDecimal(100)) + "%");
List<WaterBillEntity> waterBillList = waterBillService.list(Wrappers.<WaterBillEntity>lambdaQuery().eq(WaterBillEntity::getOrderId,item.getId())); List<WaterBillEntity> waterBillList = waterBillService.list(Wrappers.<WaterBillEntity>lambdaQuery().eq(WaterBillEntity::getOrderId,item.getId()));
if(CollectionUtils.isNotEmpty(waterBillList)){ if(CollectionUtils.isNotEmpty(waterBillList)){
item.setIsWaterBill("1"); item.setIsWaterBill("1");
@ -281,8 +289,9 @@ public class OrderServiceImpl extends BaseServiceImpl<OrderMapper, OrderEntity>
@Override @Override
public Map<String,List<OrderProjectEntity>> selectTemplate(String year) { public Map<String,List<OrderProjectEntity>> selectTemplate(String year) {
BladeUser user = AuthUtil.getUser();
Map<String,List<OrderProjectEntity>> map = new HashMap<>(); Map<String,List<OrderProjectEntity>> map = new HashMap<>();
List<OrderEntity> orderList = this.list(Wrappers.<OrderEntity>lambdaQuery().like(OrderEntity::getOrderDate,year).eq(BaseEntity::getStatus,CommonEnum.STATUS_5.getCode())); List<OrderEntity> orderList = this.list(Wrappers.<OrderEntity>lambdaQuery().like(OrderEntity::getOrderDate,year).eq(BaseEntity::getStatus,CommonEnum.STATUS_5.getCode()).eq(BaseEntity::getCreateUser,user.getUserId()));
Map<String,List<OrderEntity>> orderMap = orderList.stream().collect(Collectors.groupingBy(item -> item.getOrderDate().substring(5,7))); Map<String,List<OrderEntity>> orderMap = orderList.stream().collect(Collectors.groupingBy(item -> item.getOrderDate().substring(5,7)));
Map<String, List<OrderEntity>> sortMap = orderMap.entrySet().stream() Map<String, List<OrderEntity>> sortMap = orderMap.entrySet().stream()
// 按 key(月份)倒序排序(Comparator.reverseOrder()) // 按 key(月份)倒序排序(Comparator.reverseOrder())

@ -39,6 +39,7 @@ import org.apache.velocity.runtime.directive.Break;
import org.springblade.core.mp.base.BaseEntity; import org.springblade.core.mp.base.BaseEntity;
import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query; import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R; import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.Func;
@ -122,15 +123,16 @@ public class ProductServiceImpl extends BaseServiceImpl<ProductMapper, ProductEn
@Override @Override
public R<IPage<ProductVO>> list(Map<String, Object> map, Query query) { public R<IPage<ProductVO>> list(Map<String, Object> map, Query query) {
Long customerId = map.get("customerId") == null ? null : Long.parseLong(map.get("customerId").toString());
Long catalogId = Long.parseLong((String) map.get("catalogId")); // 是Id [坏笑]。不是ld Long catalogId = Long.parseLong((String) map.get("catalogId")); // 是Id [坏笑]。不是ld
if (catalogId == null || catalogId == 0L) { if (catalogId == null || catalogId == 0L) {
return R.fail("catalogId error."); return R.fail("catalogId error.");
} }
IPage<RelCatalogProductEntity> pageRel = relCatalogProductService.page( IPage<RelCatalogProductEntity> pageRel = relCatalogProductService.page(
Condition.getPage(query), Condition.getPage(query),
Condition.getQueryWrapper(map, RelCatalogProductEntity.class) Wrappers.<RelCatalogProductEntity>lambdaQuery()
.eq("catalog_id", catalogId) .eq(RelCatalogProductEntity::getCatalogId,catalogId)
.orderByAsc("product_id") .orderByAsc(RelCatalogProductEntity::getProductId)
); );
List<ProductVO> listVO = new ArrayList<>(); List<ProductVO> listVO = new ArrayList<>();
pageRel.getRecords().forEach(rel -> { pageRel.getRecords().forEach(rel -> {
@ -156,11 +158,14 @@ public class ProductServiceImpl extends BaseServiceImpl<ProductMapper, ProductEn
// 默认 // 默认
vo1.setBizType(ProductConst.BIZ_TYPE_PRICE_STANDARD); vo1.setBizType(ProductConst.BIZ_TYPE_PRICE_STANDARD);
// TYPE_PRICE_CUSTOM 数据是拼接上的 // TYPE_PRICE_CUSTOM 数据是拼接上的
long count = bizPriceService.count( LambdaQueryWrapper<BizPriceEntity> wrapper = new LambdaQueryWrapper();
new QueryWrapper<BizPriceEntity>().eq(BizPriceEntity.COL_PRODUCT_ID, vo1.getId()) wrapper.eq(BizPriceEntity::getProductId,vo1.getId());
); if(customerId != null){
wrapper.eq(BizPriceEntity::getCustomerId,customerId);
}
long count = bizPriceService.count(wrapper);
if (count != 0L) { if (count != 0L) {
List<BizPriceEntity> listBP = bizPriceService.listByProductId(vo1.getId()); List<BizPriceEntity> listBP = bizPriceService.listByProductId(vo1.getId(),customerId);
listBP.forEach(bp -> { listBP.forEach(bp -> {
ProductVO vo2 = new ProductVO(); ProductVO vo2 = new ProductVO();
BeanUtils.copyProperties(vo1, vo2); BeanUtils.copyProperties(vo1, vo2);
@ -169,6 +174,7 @@ public class ProductServiceImpl extends BaseServiceImpl<ProductMapper, ProductEn
// 特定价 // 特定价
vo2.setBizType(ProductConst.BIZ_TYPE_PRICE_CUSTOM); vo2.setBizType(ProductConst.BIZ_TYPE_PRICE_CUSTOM);
vo2.setBizPriceId(bp.getId()); vo2.setBizPriceId(bp.getId());
vo2.setStandardPrice(bp.getBizPrice());
// //
CustomerEntity customer = customerService.getById(bp.getCustomerId()); CustomerEntity customer = customerService.getById(bp.getCustomerId());
if (customer != null) { if (customer != null) {
@ -192,6 +198,35 @@ public class ProductServiceImpl extends BaseServiceImpl<ProductMapper, ProductEn
log.info("not contain."); log.info("not contain.");
} }
} }
//筛选
if(map.get("nameCn") != null || map.get("bizRemark") != null){
IPage<ProductVO> pagesVO1 = Condition.getPage(query);
List<ProductVO> list = pagesVO.getRecords();
Iterator<ProductVO> iterator = list.iterator();
while (iterator.hasNext()) {
ProductVO vo = iterator.next();
// 提取字段并做空值处理
String nameCn = vo.getNameCn();
String bizRemark = vo.getBizRemark();
String nameCnFilter = map.get("nameCn") != null ? map.get("nameCn").toString() : null;
String bizRemarkFilter = map.get("bizRemark") != null ? map.get("bizRemark").toString() : null;
boolean needRemove = false;
if (nameCnFilter != null) {
// 字段为 null 时,默认不包含过滤值,需要移除
needRemove = (nameCn == null) || !nameCn.contains(nameCnFilter);
}
if (!needRemove && bizRemarkFilter != null) {
needRemove = (bizRemark == null) || !bizRemark.contains(bizRemarkFilter);
}
if (needRemove) {
iterator.remove(); // 使用迭代器安全移除
}
}
pagesVO1.setRecords(list);
pagesVO1.setSize(list.size());
return R.data(pagesVO1);
}
return R.data(pagesVO); return R.data(pagesVO);
} }

Loading…
Cancel
Save