ljw 2026-03-03 11:36:25 +08:00
commit 234d780e92
22 changed files with 462 additions and 35 deletions

View File

@ -46,7 +46,6 @@ const props = withDefaults(defineProps<{
const formPanelIns = useTemplateRef<AFormPanelInstance>('formPanel') const formPanelIns = useTemplateRef<AFormPanelInstance>('formPanel')
const status = ref<'add' | 'modify'>('add') const status = ref<'add' | 'modify'>('add')
const formPanelProps = buildFormPanelProps<${ucc}Types.Search${ucc}Result>({ const formPanelProps = buildFormPanelProps<${ucc}Types.Search${ucc}Result>({
title: status.value === 'add' ? '新建${table.comment}' : '修改${table.comment}信息',
detailsLoader(id?: string) { detailsLoader(id?: string) {
if (Strings.isBlank(id)) { if (Strings.isBlank(id)) {
status.value = 'add' status.value = 'add'
@ -77,7 +76,9 @@ const formPanelProps = buildFormPanelProps<${ucc}Types.Search${ucc}Result>({
<%}%> <%}%>
}, },
}) })
watchEffect(() => {
formPanelProps.title = status.value === 'add' ? '新建${table.comment}' : '修改${table.comment}信息'
})
defineExpose({ defineExpose({
open(data?: ${ucc}Types.Search${ucc}Result) { open(data?: ${ucc}Types.Search${ucc}Result) {
formPanelIns.value?.open(data?.id) formPanelIns.value?.open(data?.id)

View File

@ -132,11 +132,11 @@ public class CustomerService extends ServiceImpl<CustomerMapper, CustomerEntity>
Assert.isTrue(identityInfo.isPresent(), () -> Exceptions.exception("目标身份不存在,无法切换")); Assert.isTrue(identityInfo.isPresent(), () -> Exceptions.exception("目标身份不存在,无法切换"));
Long currentCustomerId = myResult.getCurrentCustomerId(); Long currentCustomerId = myResult.getCurrentCustomerId();
IdentityInfo currentIdentity = myResult.currentIdentity(); IdentityInfo currentIdentity = myResult.currentIdentity();
Assert.isTrue(Objects.equals(currentCustomerId, targetCustomerId), () -> Exceptions.exception("已是【{}】身份,无需切换", currentIdentity.getIdentityCategory().getTxt())); Assert.isFalse(Objects.equals(currentCustomerId, targetCustomerId), () -> Exceptions.exception("已是【{}】身份,无需切换", currentIdentity.getIdentityCategory().getTxt()));
myResult.setCurrentCustomerId(targetCustomerId); myResult.setCurrentCustomerId(targetCustomerId);
SecurityUtil.updateUser(myResult); SecurityUtil.updateUser(myResult);
Long userId = myResult.getUserId(); Long userId = myResult.getUserId();
Integer client = myResult.getClient(); Integer client = myResult.getClient();
return (MyResult) authService.my(userId, client); return (MyResult) authService.my(userId, client, currentCustomerId);
} }
} }

View File

@ -1,6 +1,7 @@
package com.njzscloud.dispose.cst.order.service; package com.njzscloud.dispose.cst.order.service;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.Assert; import cn.hutool.core.lang.Assert;
import cn.hutool.core.map.MapUtil; import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
@ -34,6 +35,8 @@ import com.njzscloud.dispose.cst.project.pojo.entity.ProjectEntity;
import com.njzscloud.dispose.cst.project.service.ProjectService; import com.njzscloud.dispose.cst.project.service.ProjectService;
import com.njzscloud.dispose.cst.station.mapper.StationMapper; import com.njzscloud.dispose.cst.station.mapper.StationMapper;
import com.njzscloud.dispose.cst.station.pojo.entity.StationEntity; import com.njzscloud.dispose.cst.station.pojo.entity.StationEntity;
import com.njzscloud.dispose.cst.station.pojo.result.StationResult;
import com.njzscloud.dispose.cst.station.service.StationService;
import com.njzscloud.dispose.cst.truck.mapper.TruckMapper; import com.njzscloud.dispose.cst.truck.mapper.TruckMapper;
import com.njzscloud.dispose.cst.truck.pojo.entity.TruckEntity; import com.njzscloud.dispose.cst.truck.pojo.entity.TruckEntity;
import com.njzscloud.dispose.finance.constant.ExpenseItemCategory; import com.njzscloud.dispose.finance.constant.ExpenseItemCategory;
@ -80,6 +83,7 @@ public class OrderService extends ServiceImpl<OrderMapper, OrderEntity> {
private final StationMapper stationMapper; private final StationMapper stationMapper;
private final PaymentRecordHelper paymentRecordHelper; private final PaymentRecordHelper paymentRecordHelper;
private final ProjectService projectService; private final ProjectService projectService;
private final StationService stationService;
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void add(CreateOrderParam param) { public void add(CreateOrderParam param) {
@ -228,6 +232,27 @@ public class OrderService extends ServiceImpl<OrderMapper, OrderEntity> {
String keywords = searchOrderParam.getKeywords(); String keywords = searchOrderParam.getKeywords();
LocalDateTime orderTimeStart = searchOrderParam.getOrderTimeStart(); LocalDateTime orderTimeStart = searchOrderParam.getOrderTimeStart();
LocalDateTime orderTimeEnd = searchOrderParam.getOrderTimeEnd(); LocalDateTime orderTimeEnd = searchOrderParam.getOrderTimeEnd();
Page<SearchOrderResult> page = pageParam.toPage();
MyResult myResult = SecurityUtil.loginUser();
IdentityCategory identityCategory = myResult.currentIdentity().getIdentityCategory();
Long userId = null;
Long driverIdUserId = null;
Long transOrgId = null;
List<Long> stationIds = null;
if (myResult.isXiaoNa() && identityCategory == IdentityCategory.XiaoNa) {
List<StationResult> stationResults = stationService.listAll();
if (CollUtil.isEmpty(stationResults)) return PageResult.of(page);
stationIds = stationResults.stream().map(StationResult::getId).toList();
} else if ((myResult.isCaiGou() || myResult.isChanFei()) && (identityCategory == IdentityCategory.CaiGou || identityCategory == IdentityCategory.ChanFei)) {
userId = myResult.getUserId();
} else if (myResult.isYunShu() && identityCategory == IdentityCategory.YunShu) {
transOrgId = myResult.getCurrentOrgId();
} else if (myResult.isSiJi() && identityCategory == IdentityCategory.SiJi) {
driverIdUserId = myResult.getUserId();
} else {
throw Exceptions.exception("无访问权限");
}
QueryWrapper<Object> ew = Wrappers.query() QueryWrapper<Object> ew = Wrappers.query()
.exists("YuYue".equals(orderType), "SELECT 1 FROM cst_order_trans b WHERE b.order_id = a.id AND b.trans_status IN ('DaiPaiDan','DaiJieDan')") .exists("YuYue".equals(orderType), "SELECT 1 FROM cst_order_trans b WHERE b.order_id = a.id AND b.trans_status IN ('DaiPaiDan','DaiJieDan')")
@ -235,6 +260,10 @@ public class OrderService extends ServiceImpl<OrderMapper, OrderEntity> {
.exists("LiShi".equals(orderType), "SELECT 1 FROM cst_order_trans b WHERE b.order_id = a.id AND b.trans_status = 'YiWanCheng'") .exists("LiShi".equals(orderType), "SELECT 1 FROM cst_order_trans b WHERE b.order_id = a.id AND b.trans_status = 'YiWanCheng'")
.exists("QuXiao".equals(orderType), "SELECT 1 FROM cst_order_trans b WHERE b.order_id = a.id AND b.trans_status = 'YiQuXiao'") .exists("QuXiao".equals(orderType), "SELECT 1 FROM cst_order_trans b WHERE b.order_id = a.id AND b.trans_status = 'YiQuXiao'")
.in("DuanBo".equals(bizType), "a.order_category", OrderCategory.DuanBoChu, OrderCategory.DuanBoRu) .in("DuanBo".equals(bizType), "a.order_category", OrderCategory.DuanBoChu, OrderCategory.DuanBoRu)
.in(CollUtil.isNotEmpty(stationIds), "a.station_id", stationIds)
.eq(userId != null, "a.user_id", userId)
.eq(transOrgId != null, "a.trans_org_id", transOrgId)
.eq(driverIdUserId != null, "b.driver_user_id", driverIdUserId)
.eq("HuiShou".equals(bizType), "a.order_category", OrderCategory.HuiShouYuYue) .eq("HuiShou".equals(bizType), "a.order_category", OrderCategory.HuiShouYuYue)
.eq("XiaoShou".equals(bizType), "a.order_category", OrderCategory.XiaoShouYuYue) .eq("XiaoShou".equals(bizType), "a.order_category", OrderCategory.XiaoShouYuYue)
.like(StrUtil.isNotBlank(sn), "a.sn", sn) .like(StrUtil.isNotBlank(sn), "a.sn", sn)
@ -254,7 +283,6 @@ public class OrderService extends ServiceImpl<OrderMapper, OrderEntity> {
.or().like("j.org_name", keywords) .or().like("j.org_name", keywords)
.or().like("f.project_name", keywords) .or().like("f.project_name", keywords)
); );
Page<SearchOrderResult> page = pageParam.toPage();
page.addOrder(OrderItem.desc("a.create_time")); page.addOrder(OrderItem.desc("a.create_time"));
IPage<SearchOrderResult> resultPage = baseMapper.paging(page, ew); IPage<SearchOrderResult> resultPage = baseMapper.paging(page, ew);
List<SearchOrderResult> results = resultPage.getRecords(); List<SearchOrderResult> results = resultPage.getRecords();

View File

@ -12,8 +12,11 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List;
/** /**
* *
*
* @author ljw * @author ljw
*/ */
@Slf4j @Slf4j
@ -57,6 +60,17 @@ public class StationController {
public R<PageResult<StationResult>> paging(PageParam pageParam, StationQueryParam queryParam) { public R<PageResult<StationResult>> paging(PageParam pageParam, StationQueryParam queryParam) {
return R.success(stationService.paging(pageParam, queryParam)); return R.success(stationService.paging(pageParam, queryParam));
} }
/**
*
*/
@GetMapping("/list_all")
public R<List<StationResult>> listAll() {
return R.success(stationService.listAll());
}
} }

View File

@ -0,0 +1,66 @@
package com.njzscloud.dispose.cst.station.controller;
import com.njzscloud.common.core.utils.R;
import com.njzscloud.common.mp.support.PageParam;
import com.njzscloud.common.mp.support.PageResult;
import com.njzscloud.dispose.cst.station.pojo.entity.StationMemberEntity;
import com.njzscloud.dispose.cst.station.service.StationMemberService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
*
*/
@Slf4j
@RestController
@RequestMapping("/station_member")
@RequiredArgsConstructor
public class StationMemberController {
private final StationMemberService stationMemberService;
/**
*
*/
@PostMapping("/add")
public R<?> add(@RequestBody StationMemberEntity stationMemberEntity) {
stationMemberService.add(stationMemberEntity);
return R.success();
}
/**
*
*/
@PostMapping("/modify")
public R<?> modify(@RequestBody StationMemberEntity stationMemberEntity) {
stationMemberService.modify(stationMemberEntity);
return R.success();
}
/**
*
*/
@PostMapping("/del")
public R<?> del(@RequestBody List<Long> ids) {
stationMemberService.del(ids);
return R.success();
}
/**
*
*/
@GetMapping("/detail")
public R<StationMemberEntity> detail(@RequestParam("id") Long id) {
return R.success(stationMemberService.detail(id));
}
/**
*
*/
@GetMapping("/paging")
public R<PageResult<StationMemberEntity>> paging(PageParam pageParam, StationMemberEntity stationMemberEntity) {
return R.success(stationMemberService.paging(pageParam, stationMemberEntity));
}
}

View File

@ -8,6 +8,8 @@ import com.njzscloud.dispose.cst.station.pojo.result.StationResult;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List;
/** /**
* *
* @author ljw * @author ljw
@ -18,6 +20,10 @@ public interface StationMapper extends BaseMapper<StationEntity> {
IPage<StationResult> paging(IPage<StationResult> page, @Param("ew") QueryWrapper<?> ew); IPage<StationResult> paging(IPage<StationResult> page, @Param("ew") QueryWrapper<?> ew);
StationResult detail(@Param("id") Long id); StationResult detail(@Param("id") Long id);
List<StationResult> listAll(@Param("ew") QueryWrapper<?> ew);
boolean isManager(@Param("userId") Long userId);
} }

View File

@ -0,0 +1,12 @@
package com.njzscloud.dispose.cst.station.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njzscloud.dispose.cst.station.pojo.entity.StationMemberEntity;
import org.apache.ibatis.annotations.Mapper;
/**
*
*/
@Mapper
public interface StationMemberMapper extends BaseMapper<StationMemberEntity> {
}

View File

@ -0,0 +1,47 @@
package com.njzscloud.dispose.cst.station.pojo.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;
/**
*
*/
@Getter
@Setter
@ToString
@Accessors(chain = true)
@TableName("cst_station_member")
public class StationMemberEntity {
/**
* Id
*/
@TableId(type = IdType.ASSIGN_ID)
private Long id;
/**
* Id
*/
private Long userId;
/**
* Id
*/
private Long customerId;
/**
* Id
*/
private Long orgId;
/**
* Id
*/
private Long stationId;
}

View File

@ -0,0 +1,60 @@
package com.njzscloud.dispose.cst.station.service;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njzscloud.common.mp.support.PageParam;
import com.njzscloud.common.mp.support.PageResult;
import com.njzscloud.dispose.cst.station.mapper.StationMemberMapper;
import com.njzscloud.dispose.cst.station.pojo.entity.StationMemberEntity;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
*
*/
@Slf4j
@Service
@RequiredArgsConstructor
public class StationMemberService extends ServiceImpl<StationMemberMapper, StationMemberEntity> implements IService<StationMemberEntity> {
/**
*
*/
public void add(StationMemberEntity stationMemberEntity) {
this.save(stationMemberEntity);
}
/**
*
*/
public void modify(StationMemberEntity stationMemberEntity) {
this.updateById(stationMemberEntity);
}
/**
*
*/
@Transactional(rollbackFor = Exception.class)
public void del(List<Long> ids) {
this.removeBatchByIds(ids);
}
/**
*
*/
public StationMemberEntity detail(Long id) {
return this.getById(id);
}
/**
*
*/
public PageResult<StationMemberEntity> paging(PageParam pageParam, StationMemberEntity stationMemberEntity) {
return PageResult.of(this.page(pageParam.toPage(), Wrappers.<StationMemberEntity>query(stationMemberEntity)));
}
}

View File

@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njzscloud.common.mp.support.PageParam; import com.njzscloud.common.mp.support.PageParam;
import com.njzscloud.common.mp.support.PageResult; import com.njzscloud.common.mp.support.PageResult;
import com.njzscloud.common.security.util.SecurityUtil;
import com.njzscloud.dispose.cst.customer.constant.IdentityCategory; import com.njzscloud.dispose.cst.customer.constant.IdentityCategory;
import com.njzscloud.dispose.cst.customer.pojo.param.AddCustomerParam; import com.njzscloud.dispose.cst.customer.pojo.param.AddCustomerParam;
import com.njzscloud.dispose.cst.customer.pojo.result.AddCustomerResult; import com.njzscloud.dispose.cst.customer.pojo.result.AddCustomerResult;
@ -18,6 +19,7 @@ import com.njzscloud.dispose.cst.org.constant.OrgCategory;
import com.njzscloud.dispose.cst.org.pojo.param.AddOrgParam; import com.njzscloud.dispose.cst.org.pojo.param.AddOrgParam;
import com.njzscloud.dispose.cst.station.mapper.StationMapper; import com.njzscloud.dispose.cst.station.mapper.StationMapper;
import com.njzscloud.dispose.cst.station.pojo.entity.StationEntity; import com.njzscloud.dispose.cst.station.pojo.entity.StationEntity;
import com.njzscloud.dispose.cst.station.pojo.entity.StationMemberEntity;
import com.njzscloud.dispose.cst.station.pojo.param.AddStationParam; import com.njzscloud.dispose.cst.station.pojo.param.AddStationParam;
import com.njzscloud.dispose.cst.station.pojo.param.ModifyStationParam; import com.njzscloud.dispose.cst.station.pojo.param.ModifyStationParam;
import com.njzscloud.dispose.cst.station.pojo.param.StationQueryParam; import com.njzscloud.dispose.cst.station.pojo.param.StationQueryParam;
@ -27,6 +29,8 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/** /**
* *
* *
@ -38,6 +42,7 @@ import org.springframework.transaction.annotation.Transactional;
public class StationService extends ServiceImpl<StationMapper, StationEntity> implements IService<StationEntity> { public class StationService extends ServiceImpl<StationMapper, StationEntity> implements IService<StationEntity> {
private final CustomerService customerService; private final CustomerService customerService;
private final StationMemberService stationMemberService;
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void add(AddStationParam addStationParam) { public void add(AddStationParam addStationParam) {
@ -54,9 +59,18 @@ public class StationService extends ServiceImpl<StationMapper, StationEntity> im
.setOrgCategory(OrgCategory.QiYe) .setOrgCategory(OrgCategory.QiYe)
); );
AddCustomerResult customerResult = customerService.add(customer); AddCustomerResult customerResult = customerService.add(customer);
Long orgId = customerResult.getOrgId();
StationEntity stationEntity = BeanUtil.copyProperties(addStationParam, StationEntity.class) StationEntity stationEntity = BeanUtil.copyProperties(addStationParam, StationEntity.class)
.setOrgId(customerResult.getOrgId()); .setOrgId(orgId);
this.save(stationEntity); this.save(stationEntity);
stationMemberService.add(new StationMemberEntity()
.setStationId(stationEntity.getId())
.setUserId(userId)
.setOrgId(orgId)
.setCustomerId(customerResult.getCustomerId())
);
} }
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@ -86,6 +100,17 @@ public class StationService extends ServiceImpl<StationMapper, StationEntity> im
return PageResult.of(baseMapper.paging(page, ew)); return PageResult.of(baseMapper.paging(page, ew));
} }
public List<StationResult> listAll() {
Long userId = SecurityUtil.currentUserId();
List<StationMemberEntity> memberEntityList = stationMemberService.list(Wrappers.lambdaQuery(StationMemberEntity.class).eq(StationMemberEntity::getUserId, userId));
List<Long> stationIds = memberEntityList.stream().map(StationMemberEntity::getStationId).toList();
return baseMapper.listAll(Wrappers.query().in("a.id", stationIds));
}
public boolean isManager() {
Long userId = SecurityUtil.currentUserId();
return baseMapper.isManager(userId);
}
} }

View File

@ -1,9 +1,6 @@
package com.njzscloud.dispose.finance.pojo.entity; package com.njzscloud.dispose.finance.pojo.entity;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.njzscloud.dispose.common.pojo.entity.BaseEntity;
import com.njzscloud.dispose.finance.constant.ExpenseItemCategory; import com.njzscloud.dispose.finance.constant.ExpenseItemCategory;
import com.njzscloud.dispose.finance.constant.ExpenseStrategy; import com.njzscloud.dispose.finance.constant.ExpenseStrategy;
import com.njzscloud.dispose.finance.constant.Unit; import com.njzscloud.dispose.finance.constant.Unit;
@ -13,6 +10,7 @@ import lombok.ToString;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime;
/** /**
* *
@ -24,7 +22,7 @@ import java.math.BigDecimal;
@ToString @ToString
@Accessors(chain = true) @Accessors(chain = true)
@TableName(value = "fin_expense_item", autoResultMap = true) @TableName(value = "fin_expense_item", autoResultMap = true)
public class ExpenseItemEntity extends BaseEntity { public class ExpenseItemEntity {
/** /**
* Id * Id
@ -95,6 +93,7 @@ public class ExpenseItemEntity extends BaseEntity {
/** /**
* Id * Id
*/ */
@TableField(updateStrategy = FieldStrategy.ALWAYS)
private Long stationId; private Long stationId;
/** /**
@ -109,5 +108,34 @@ public class ExpenseItemEntity extends BaseEntity {
private Long goodsId; private Long goodsId;
/**
* Idsys_user.id
*/
@TableField(fill = FieldFill.INSERT)
private Long creatorId;
/**
* Id sys_user.id
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long modifierId;
/**
*
*/
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/**
*
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime modifyTime;
/**
* 0-->1-->
*/
@TableLogic
private Boolean deleted;
} }

View File

@ -15,7 +15,10 @@ import java.math.BigDecimal;
@ToString @ToString
@Accessors(chain = true) @Accessors(chain = true)
public class AddExpenseItemParam { public class AddExpenseItemParam {
private Long userId;
private Long customerId;
private Long orgId;
private Long stationId;
/** /**
* QiTa-->ChanPin-->YunFei--> * QiTa-->ChanPin-->YunFei-->
*/ */

View File

@ -19,6 +19,7 @@ public class ModifyExpenseItemParam {
* Id * Id
*/ */
private Long id; private Long id;
private Long stationId;
/** /**
* QiTa-->ChanPin-->YunFei--> * QiTa-->ChanPin-->YunFei-->

View File

@ -1,6 +1,8 @@
package com.njzscloud.dispose.finance.service; package com.njzscloud.dispose.finance.service;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njzscloud.common.mp.support.PageParam; import com.njzscloud.common.mp.support.PageParam;
@ -10,6 +12,7 @@ import com.njzscloud.dispose.finance.mapper.ExpenseItemMapper;
import com.njzscloud.dispose.finance.pojo.entity.ExpenseItemEntity; import com.njzscloud.dispose.finance.pojo.entity.ExpenseItemEntity;
import com.njzscloud.dispose.finance.pojo.param.AddExpenseItemParam; import com.njzscloud.dispose.finance.pojo.param.AddExpenseItemParam;
import com.njzscloud.dispose.finance.pojo.param.ModifyExpenseItemParam; import com.njzscloud.dispose.finance.pojo.param.ModifyExpenseItemParam;
import com.njzscloud.dispose.sys.auth.pojo.result.IdentityInfo;
import com.njzscloud.dispose.sys.auth.pojo.result.MyResult; import com.njzscloud.dispose.sys.auth.pojo.result.MyResult;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -65,6 +68,16 @@ public class ExpenseItemService extends ServiceImpl<ExpenseItemMapper, ExpenseIt
* *
*/ */
public PageResult<ExpenseItemEntity> paging(PageParam pageParam, ExpenseItemEntity expenseItemEntity) { public PageResult<ExpenseItemEntity> paging(PageParam pageParam, ExpenseItemEntity expenseItemEntity) {
return PageResult.of(this.page(pageParam.toPage(), Wrappers.query(expenseItemEntity))); String expenseItemName = expenseItemEntity.getExpenseItemName();
MyResult userDetail = SecurityUtil.loginUser();
List<IdentityInfo> identities = userDetail.getIdentities();
List<Long> orgIds = null;
if (CollUtil.isNotEmpty(identities)) {
orgIds = identities.stream().map(IdentityInfo::getOrgId).toList();
}
return PageResult.of(this.page(pageParam.toPage(), Wrappers.<ExpenseItemEntity>lambdaQuery()
.like(StrUtil.isNotBlank(expenseItemName), ExpenseItemEntity::getExpenseItemName, expenseItemName)
.in(CollUtil.isNotEmpty(orgIds), ExpenseItemEntity::getOrgId, orgIds)
));
} }
} }

View File

@ -6,7 +6,10 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njzscloud.common.mp.support.PageParam; import com.njzscloud.common.mp.support.PageParam;
import com.njzscloud.common.mp.support.PageResult; import com.njzscloud.common.mp.support.PageResult;
import com.njzscloud.common.security.util.SecurityUtil;
import com.njzscloud.common.sn.support.SnUtil; import com.njzscloud.common.sn.support.SnUtil;
import com.njzscloud.dispose.cst.station.pojo.result.StationResult;
import com.njzscloud.dispose.cst.station.service.StationService;
import com.njzscloud.dispose.finance.constant.ExpenseItemCategory; import com.njzscloud.dispose.finance.constant.ExpenseItemCategory;
import com.njzscloud.dispose.finance.pojo.entity.ExpenseItemEntity; import com.njzscloud.dispose.finance.pojo.entity.ExpenseItemEntity;
import com.njzscloud.dispose.finance.pojo.param.AddExpenseItemParam; import com.njzscloud.dispose.finance.pojo.param.AddExpenseItemParam;
@ -25,6 +28,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.List; import java.util.List;
import java.util.Optional;
/** /**
* *
@ -37,6 +41,7 @@ import java.util.List;
public class GoodsService extends ServiceImpl<GoodsMapper, GoodsEntity> { public class GoodsService extends ServiceImpl<GoodsMapper, GoodsEntity> {
private final ExpenseItemService expenseItemService; private final ExpenseItemService expenseItemService;
private final StationService stationService;
/** /**
* *
@ -69,12 +74,36 @@ public class GoodsService extends ServiceImpl<GoodsMapper, GoodsEntity> {
this.updateById(goodsEntity); this.updateById(goodsEntity);
// 付费项 // 付费项
ModifyGoodsParam.ExpenseItem expenseItem = modifyGoodsParam.getExpenseItem(); ModifyGoodsParam.ExpenseItem expenseItem = modifyGoodsParam.getExpenseItem();
if (expenseItem == null) return;
Long userId = SecurityUtil.currentUserId();
List<StationResult> stationResults = stationService.listAll();
Optional<StationResult> stationResultOpt = stationResults.stream().filter(it -> it.getCustomer().getManager()).findFirst();
if (stationResultOpt.isEmpty()) return;
StationResult stationResult = stationResultOpt.get();
Long customerId = stationResult.getCustomer().getId();
Long orgId = stationResult.getOrgId();
Long stationId = stationResult.getId();
Long goodsId = goodsEntity.getId();
String goodsName = modifyGoodsParam.getGoodsName(); String goodsName = modifyGoodsParam.getGoodsName();
ModifyExpenseItemParam modifyExpenseItemParam = BeanUtil.copyProperties(expenseItem, ModifyExpenseItemParam.class) ExpenseItemEntity expenseItemEntity = expenseItemService.getOne(Wrappers.<ExpenseItemEntity>lambdaQuery().eq(ExpenseItemEntity::getStationId, stationId).eq(ExpenseItemEntity::getGoodsId, goodsId));
.setExpenseItemName(goodsName) if (expenseItemEntity == null) {
.setMemo(goodsName + "费用配置"); AddExpenseItemParam addExpenseItemParam = BeanUtil.copyProperties(expenseItem, AddExpenseItemParam.class)
expenseItemService.modify(modifyExpenseItemParam); .setUserId(userId)
.setCustomerId(customerId)
.setOrgId(orgId)
.setStationId(stationId)
.setGoodsId(goodsId)
.setExpenseItemName(goodsName)
.setExpenseItemCategory(ExpenseItemCategory.ChanPin)
.setMemo(goodsName + "费用配置");
expenseItemService.add(addExpenseItemParam);
} else {
ModifyExpenseItemParam modifyExpenseItemParam = BeanUtil.copyProperties(expenseItem, ModifyExpenseItemParam.class)
.setId(expenseItemEntity.getId())
.setExpenseItemName(goodsName)
.setMemo(goodsName + "费用配置");
expenseItemService.modify(modifyExpenseItemParam);
}
} }
/** /**

View File

@ -5,6 +5,7 @@ import com.njzscloud.common.core.ex.Exceptions;
import com.njzscloud.common.core.utils.R; import com.njzscloud.common.core.utils.R;
import com.njzscloud.common.security.support.UserDetail; import com.njzscloud.common.security.support.UserDetail;
import com.njzscloud.common.security.util.SecurityUtil; import com.njzscloud.common.security.util.SecurityUtil;
import com.njzscloud.dispose.sys.auth.pojo.result.MyResult;
import com.njzscloud.dispose.sys.auth.service.AuthService; import com.njzscloud.dispose.sys.auth.service.AuthService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -27,12 +28,14 @@ public class AuthController {
*/ */
@GetMapping("/my") @GetMapping("/my")
public R<UserDetail> my() { public R<UserDetail> my() {
UserDetail userDetail = SecurityUtil.loginUser(); MyResult userDetail = SecurityUtil.loginUser();
Long userId = userDetail.getUserId(); Long userId = userDetail.getUserId();
Integer client = userDetail.getClient(); Integer client = userDetail.getClient();
Assert.notNull(client, () -> Exceptions.exception("客户端信息错误")); Assert.notNull(client, () -> Exceptions.exception("客户端信息错误"));
return R.success(authService.my(userId, client)); UserDetail my = authService.my(userId, client, userDetail.getCurrentCustomerId());
return R.success(my);
} }
} }

View File

@ -1,8 +1,8 @@
package com.njzscloud.dispose.sys.auth.pojo.result; package com.njzscloud.dispose.sys.auth.pojo.result;
import cn.hutool.core.lang.Assert; import com.fasterxml.jackson.annotation.JsonProperty;
import com.njzscloud.common.core.ex.Exceptions;
import com.njzscloud.common.security.support.UserDetail; import com.njzscloud.common.security.support.UserDetail;
import com.njzscloud.dispose.cst.customer.constant.IdentityCategory;
import com.njzscloud.dispose.sys.user.constant.Gender; import com.njzscloud.dispose.sys.user.constant.Gender;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@ -12,7 +12,8 @@ import java.math.BigDecimal;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.Optional;
import static com.njzscloud.common.security.contant.Constants.ROLE_ADMIN;
@Getter @Getter
@Setter @Setter
@ -20,6 +21,11 @@ import java.util.Optional;
public class MyResult extends UserDetail { public class MyResult extends UserDetail {
public static final String ROLE_KANLIAO = "ROLE_KANLIAO"; public static final String ROLE_KANLIAO = "ROLE_KANLIAO";
public static final String ROLE_XiaoNa = "ROLE_XiaoNa";
public static final String ROLE_ChanFei = "ROLE_ChanFei";
public static final String ROLE_YunShu = "ROLE_YunShu";
public static final String ROLE_CaiGou = "ROLE_CaiGou";
public static final String ROLE_SiJi = "ROLE_SiJi";
/** /**
* *
@ -77,12 +83,12 @@ public class MyResult extends UserDetail {
*/ */
private BigDecimal revenue; private BigDecimal revenue;
@JsonProperty("currentIdentity")
public IdentityInfo currentIdentity() { public IdentityInfo currentIdentity() {
Optional<IdentityInfo> identityInfo = identities.stream().filter(it -> Objects.equals(it.getCustomerId(), currentCustomerId)).findFirst(); return identities.stream()
.filter(it -> Objects.equals(it.getCustomerId(), currentCustomerId))
Assert.isTrue(identityInfo.isPresent(), () -> Exceptions.error("无身份信息")); .findFirst()
// noinspection OptionalGetWithoutIsPresent .orElseGet(IdentityInfo::new);
return identityInfo.get();
} }
/** /**
@ -90,8 +96,64 @@ public class MyResult extends UserDetail {
* *
* @return true/false * @return true/false
*/ */
@JsonProperty("isKanLiao")
public boolean isKanLiao() { public boolean isKanLiao() {
return this.getRoles().contains(ROLE_KANLIAO); return this.getRoles().contains(ROLE_KANLIAO);
} }
@JsonProperty("isXiaoNa")
public boolean isXiaoNa() {
return this.currentIdentity().getIdentityCategory() == IdentityCategory.XiaoNa;
}
@JsonProperty("isChanFei")
public boolean isChanFei() {
return this.currentIdentity().getIdentityCategory() == IdentityCategory.ChanFei;
}
@JsonProperty("isCaiGou")
public boolean isCaiGou() {
return this.currentIdentity().getIdentityCategory() == IdentityCategory.CaiGou;
}
@JsonProperty("isYunShu")
public boolean isYunShu() {
return this.currentIdentity().getIdentityCategory() == IdentityCategory.YunShu;
}
@JsonProperty("isSiJi")
public boolean isSiJi() {
return this.currentIdentity().getIdentityCategory() == IdentityCategory.SiJi;
}
@JsonProperty("isAdmin")
public boolean isAdmin() {
return this.getRoles().contains(ROLE_ADMIN);
}
@JsonProperty("hasXiaoNa")
public boolean hasXiaoNa() {
return this.getRoles().contains(ROLE_XiaoNa);
}
@JsonProperty("hasChanFei")
public boolean hasChanFei() {
return this.getRoles().contains(ROLE_ChanFei);
}
@JsonProperty("hasCaiGou")
public boolean hasCaiGou() {
return this.getRoles().contains(ROLE_CaiGou);
}
@JsonProperty("hasYunShu")
public boolean hasYunShu() {
return this.getRoles().contains(ROLE_YunShu);
}
@JsonProperty("hasSiJi")
public boolean hasSiJi() {
return this.getRoles().contains(ROLE_SiJi);
}
} }

View File

@ -75,20 +75,29 @@ public class AuthService implements IAuthService {
return my(userDetail, client); return my(userDetail, client);
} }
public UserDetail my(Long userId, Integer client, Long currentCustomerId) {
UserDetail userDetail = authMapper.selectUser(Wrappers.query().eq("b.id", userId).eq("a.deleted", 0));
Assert.notNull(userDetail, () -> Exceptions.exception("未查询到用户信息"));
return my(userDetail, client, currentCustomerId);
}
private UserDetail my(UserDetail userDetail, Integer client) { private UserDetail my(UserDetail userDetail, Integer client) {
return my(userDetail, client, null);
}
private UserDetail my(UserDetail userDetail, Integer client, Long currentCustomerId) {
if (userDetail == null) return null; if (userDetail == null) return null;
Long userId = userDetail.getUserId(); Long userId = userDetail.getUserId();
Assert.notNull(userDetail, () -> Exceptions.exception("未查询到用户信息")); Assert.notNull(userDetail, () -> Exceptions.exception("未查询到用户信息"));
List<MenuResource> menuResources = authMapper.selectUserMenu(userId, client); List<MenuResource> menuResources = authMapper.selectUserMenu(userId, client);
List<EndpointResource> endpointResources = authMapper.selectUserEndpoint(userId); List<EndpointResource> endpointResources = authMapper.selectUserEndpoint(userId);
List<IdentityInfo> identityInfoList = authMapper.selectUserIdentity(userId); List<IdentityInfo> identityInfoList = authMapper.selectUserIdentity(userId);
Long currentCustomerId = null;
Long currentOrgId = null; Long currentOrgId = null;
MoneyAccountEntity moneyAccount = moneyAccountMapper.selectOne(Wrappers.<MoneyAccountEntity>lambdaQuery() MoneyAccountEntity moneyAccount = moneyAccountMapper.selectOne(Wrappers.<MoneyAccountEntity>lambdaQuery()
.eq(MoneyAccountEntity::getUserId, userId) .eq(MoneyAccountEntity::getUserId, userId)
.eq(MoneyAccountEntity::getDeleted, Boolean.FALSE)); .eq(MoneyAccountEntity::getDeleted, Boolean.FALSE));
if (CollUtil.isNotEmpty(identityInfoList)) { if (CollUtil.isNotEmpty(identityInfoList) && currentCustomerId == null) {
IdentityInfo identityInfo = identityInfoList.getFirst(); IdentityInfo identityInfo = identityInfoList.getFirst();
currentCustomerId = identityInfo.getCustomerId(); currentCustomerId = identityInfo.getCustomerId();
currentOrgId = identityInfo.getOrgId(); currentOrgId = identityInfo.getOrgId();

View File

@ -70,6 +70,9 @@ FROM (SELECT a.id
a.create_time a.create_time
FROM (SELECT a.id FROM (SELECT a.id
FROM cst_order a FROM cst_order a
INNER JOIN cst_order_trans b ON b.order_id = a.id
LEFT JOIN cst_project f ON f.id = a.project_id
INNER JOIN cst_org j ON j.id = a.trans_org_id
<if test="ew.customSqlSegment != null and ew.customSqlSegment != ''"> <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
${ew.customSqlSegment} ${ew.customSqlSegment}
</if> </if>

View File

@ -59,7 +59,8 @@
e.idcard_front, e.idcard_front,
e.idcard_back e.idcard_back
FROM cst_station a FROM cst_station a
INNER JOIN cst_customer b ON b.org_id = a.org_id AND b.manager = 1 AND b.deleted = 0 INNER JOIN cst_station_member f ON f.station_id = a.id
INNER JOIN cst_customer b ON b.org_id = a.org_id AND b.id = f.customer_id AND b.deleted = 0
INNER JOIN sys_user c ON c.id = b.user_id AND c.deleted = 0 INNER JOIN sys_user c ON c.id = b.user_id AND c.deleted = 0
INNER JOIN sys_user_account d ON d.user_id = c.id AND d.deleted = 0 INNER JOIN sys_user_account d ON d.user_id = c.id AND d.deleted = 0
INNER JOIN cst_org e ON e.id = a.org_id AND e.deleted = 0 INNER JOIN cst_org e ON e.id = a.org_id AND e.deleted = 0
@ -74,4 +75,16 @@
<include refid="searchStation"/> <include refid="searchStation"/>
WHERE a.id = #{id} WHERE a.id = #{id}
</select> </select>
<select id="listAll" resultMap="StationResultPagingMap">
<include refid="searchStation"/>
<if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
${ew.customSqlSegment}
</if>
</select>
<select id="isManager" resultType="java.lang.Boolean">
SELECT *
FROM cst_station_member a
INNER JOIN cst_customer b ON b.id = a.customer_id AND b.deleted = 0 AND b.manager = 1 AND b.org_id = a.org_id
WHERE a.user_id = #{userId}
</select>
</mapper> </mapper>

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.njzscloud.dispose.cst.station.mapper.StationMemberMapper">
</mapper>

View File

@ -22567,7 +22567,7 @@
"dataLen": "", "dataLen": "",
"numScale": "", "numScale": "",
"primaryKey": 0, "primaryKey": 0,
"notNull": 0, "notNull": 1,
"autoIncrement": 0, "autoIncrement": 0,
"defaultValue": "", "defaultValue": "",
"stndDictId": "", "stndDictId": "",
@ -22707,7 +22707,7 @@
"primaryKey": 0, "primaryKey": 0,
"notNull": 1, "notNull": 1,
"autoIncrement": 0, "autoIncrement": 0,
"defaultValue": "'XianFu'", "defaultValue": "'Wu'",
"stndDictId": "settlement_way", "stndDictId": "settlement_way",
"stndFieldId": "", "stndFieldId": "",
"stndDictKey": "settlement_way", "stndDictKey": "settlement_way",
@ -41858,7 +41858,7 @@
"readonly": false, "readonly": false,
"allowWs": false "allowWs": false
}, },
"updateTime": 1772157612371, "updateTime": 1772414968697,
"signature": "1d75ec8e295700be8f58198dab84523e", "signature": "65777342475351a9f31d7b9e1e5d4087",
"branchId": "1111" "branchId": "1111"
} }