src/main/java/com/ruoyi/approve/bean/dto/ApproveProcessConfigNodeDto.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,12 @@ package com.ruoyi.approve.bean.dto; import com.ruoyi.approve.pojo.ApproveProcessConfigNode; import lombok.Data; import java.util.List; @Data public class ApproveProcessConfigNodeDto extends ApproveProcessConfigNode { private List<ApproveProcessConfigNode> approveProcessConfigNodes; } src/main/java/com/ruoyi/approve/bean/vo/ApproveGetAndUpdateVo.java
ÎļþÃû´Ó src/main/java/com/ruoyi/approve/vo/ApproveGetAndUpdateVo.java ÐÞ¸Ä @@ -1,7 +1,8 @@ package com.ruoyi.approve.vo; package com.ruoyi.approve.bean.vo; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.framework.aspectj.lang.annotation.Excel; import io.swagger.annotations.ApiModelProperty; import com.ruoyi.sales.pojo.CommonFile; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; src/main/java/com/ruoyi/approve/bean/vo/ApproveProcessConfigNodeVo.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,9 @@ package com.ruoyi.approve.bean.vo; import com.ruoyi.approve.pojo.ApproveProcessConfigNode; import lombok.Data; @Data public class ApproveProcessConfigNodeVo extends ApproveProcessConfigNode { } src/main/java/com/ruoyi/approve/bean/vo/ApproveProcessVO.java
ÎļþÃû´Ó src/main/java/com/ruoyi/approve/vo/ApproveProcessVO.java ÐÞ¸Ä @@ -1,13 +1,13 @@ package com.ruoyi.approve.vo; package com.ruoyi.approve.bean.vo; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.framework.aspectj.lang.annotation.Excel; import io.swagger.annotations.ApiModelProperty; import com.ruoyi.sales.pojo.CommonFile; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import jakarta.validation.constraints.NotBlank; import java.math.BigDecimal; import java.util.Date; import java.util.List; src/main/java/com/ruoyi/approve/controller/ApproveProcessConfigNodeController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,49 @@ package com.ruoyi.approve.controller; import com.ruoyi.approve.pojo.ApproveProcessConfigNode; import com.ruoyi.approve.service.ApproveProcessConfigNodeService; import com.ruoyi.framework.web.domain.R; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.*; import java.util.List; /** * <p> * å®¡æ¹æµç¨é ç½®èç¹è¡¨ å端æ§å¶å¨ * </p> * * @author è¯å¯¼è½¯ä»¶ï¼æ±èï¼æéå ¬å¸ * @since 2026-04-23 10:21:41 */ @RestController @RequestMapping("/approveProcessConfigNode") @AllArgsConstructor public class ApproveProcessConfigNodeController { private final ApproveProcessConfigNodeService approveProcessConfigNodeService; /** * æ¥è¯¢å®¡æ¹ä¸é¢çèç¹ * @param type * @return */ @GetMapping("/list") public R listNode(Integer type) { return R.ok(approveProcessConfigNodeService.listNode(type)); } /** * æ·»å 审æ¹èç¹ * @param approveProcessConfigNodes * @return */ @ApiOperation("æ·»å 审æ¹èç¹") @PostMapping("/add") public R addApproveProcessConfigNodes(@RequestBody List<ApproveProcessConfigNode> approveProcessConfigNodes) { return R.ok(approveProcessConfigNodeService.addApproveProcessConfigNodes(approveProcessConfigNodes)); } } src/main/java/com/ruoyi/approve/controller/ApproveProcessController.java
@@ -4,8 +4,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.approve.pojo.ApproveProcess; import com.ruoyi.approve.service.IApproveProcessService; import com.ruoyi.approve.vo.ApproveGetAndUpdateVo; import com.ruoyi.approve.vo.ApproveProcessVO; import com.ruoyi.approve.bean.vo.ApproveGetAndUpdateVo; import com.ruoyi.approve.bean.vo.ApproveProcessVO; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.framework.security.LoginUser; src/main/java/com/ruoyi/approve/mapper/ApproveProcessConfigNodeMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,18 @@ package com.ruoyi.approve.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.approve.pojo.ApproveProcessConfigNode; import org.apache.ibatis.annotations.Mapper; /** * <p> * å®¡æ¹æµç¨é ç½®èç¹è¡¨ Mapper æ¥å£ * </p> * * @author è¯å¯¼è½¯ä»¶ï¼æ±èï¼æéå ¬å¸ * @since 2026-04-23 10:21:41 */ @Mapper public interface ApproveProcessConfigNodeMapper extends BaseMapper<ApproveProcessConfigNode> { } src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java
@@ -1,11 +1,5 @@ package com.ruoyi.approve.pojo; import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.Date; import java.util.List; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.framework.aspectj.lang.annotation.Excel; @@ -14,6 +8,11 @@ import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.Date; import java.util.List; /** * å®¡æ¹æµç¨è¡¨ * @TableName approve_process src/main/java/com/ruoyi/approve/pojo/ApproveProcessConfigNode.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,118 @@ package com.ruoyi.approve.pojo; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import lombok.ToString; import java.io.Serializable; import java.time.LocalDateTime; /** * <p> * å®¡æ¹æµç¨é ç½®èç¹è¡¨ * </p> * * @author è¯å¯¼è½¯ä»¶ï¼æ±èï¼æéå ¬å¸ * @since 2026-04-23 10:21:41 */ @Getter @Setter @ToString @TableName("approve_process_config_node") @ApiModel(value = "ApproveProcessConfigNode对象", description = "å®¡æ¹æµç¨é ç½®èç¹è¡¨") public class ApproveProcessConfigNode implements Serializable { private static final long serialVersionUID = 1L; /** * 主é®ID */ @ApiModelProperty("主é®ID") @TableId(value = "id", type = IdType.AUTO) private Long id; // '审æ¹ç±»åï¼1å ¬åºç®¡çï¼2请å管çï¼3åºå·®ç®¡çï¼4æ¥é管çï¼5éè´å®¡æ¹ï¼6æ¥ä»·å®¡æ¹ï¼7å货审æ¹ï¼8å±é©ä½ä¸å®¡æ¹', @ApiModelProperty("审æ¹ç±»åï¼1å ¬åºç®¡çï¼2请å管çï¼3åºå·®ç®¡çï¼4æ¥é管çï¼5éè´å®¡æ¹ï¼6æ¥ä»·å®¡æ¹ï¼7å货审æ¹ï¼8å±é©ä½ä¸å®¡æ¹") private Integer approveType; /** * èç¹é¡ºåº */ @ApiModelProperty("èç¹é¡ºåº") private Integer nodeOrder; /** * 审æ¹äººIDsï¼å¤ä¸ªç¨éå·åéï¼ */ @ApiModelProperty("审æ¹äººID") private Long approverId; /** * 审æ¹äººåç§° */ @ApiModelProperty("审æ¹äººåç§°") private String approverName; /** * è¶ æ¶æ¶é¿ï¼å°æ¶ï¼ */ @ApiModelProperty("è¶ æ¶æ¶é¿ï¼å°æ¶ï¼") private Integer timeoutHours; /** * ç§æ·ID */ @ApiModelProperty("ç§æ·ID") private Long tenantId; /** * åå»ºç¨æ·ID */ @ApiModelProperty("åå»ºç¨æ·ID") @TableField(fill = FieldFill.INSERT) private Long createUser; /** * å建æ¶é´ */ @ApiModelProperty("å建æ¶é´") @TableField(fill = FieldFill.INSERT) private LocalDateTime createTime; /** * ä¿®æ¹ç¨æ·ID */ @ApiModelProperty("ä¿®æ¹ç¨æ·ID") @TableField(fill = FieldFill.INSERT_UPDATE) private Long updateUser; /** * ä¿®æ¹æ¶é´ */ @ApiModelProperty("ä¿®æ¹æ¶é´") @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updateTime; /** * å 餿 è®°ï¼0æ£å¸¸ï¼1å é¤ */ @ApiModelProperty("å 餿 è®°ï¼0æ£å¸¸ï¼1å é¤") private Boolean deleteFlag; /** * é¨é¨ID */ @ApiModelProperty("é¨é¨ID") @TableField(fill = FieldFill.INSERT) private Long deptId; } src/main/java/com/ruoyi/approve/service/ApproveProcessConfigNodeService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,22 @@ package com.ruoyi.approve.service; import com.ruoyi.approve.bean.vo.ApproveProcessConfigNodeVo; import com.ruoyi.approve.pojo.ApproveProcessConfigNode; import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; /** * <p> * å®¡æ¹æµç¨é ç½®èç¹è¡¨ æå¡ç±» * </p> * * @author è¯å¯¼è½¯ä»¶ï¼æ±èï¼æéå ¬å¸ * @since 2026-04-23 10:21:41 */ public interface ApproveProcessConfigNodeService extends IService<ApproveProcessConfigNode> { List<ApproveProcessConfigNodeVo> listNode(Integer type); Boolean addApproveProcessConfigNodes(List<ApproveProcessConfigNode> approveProcessConfigNodes); } src/main/java/com/ruoyi/approve/service/IApproveProcessService.java
@@ -3,14 +3,12 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.approve.pojo.ApproveNode; import com.ruoyi.approve.pojo.ApproveProcess; import com.ruoyi.approve.vo.ApproveGetAndUpdateVo; import com.ruoyi.approve.vo.ApproveProcessVO; import com.ruoyi.approve.bean.vo.ApproveGetAndUpdateVo; import com.ruoyi.approve.bean.vo.ApproveProcessVO; import com.ruoyi.project.system.domain.SysDept; import java.io.IOException; import java.text.ParseException; import java.util.List; public interface IApproveProcessService extends IService<ApproveProcess> { src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
@@ -166,18 +166,6 @@ } approveProcessMapper.updateById(approveProcess); DeviceRepair deviceRepair = deviceRepairMapper.selectById(approveProcess.getDeviceRepairId()); if (ObjectUtils.isNotNull(deviceRepair)) { if (approveProcess.getApproveStatus().equals(2)) { // åæ deviceRepair.setStatus(1); } else if (approveProcess.getApproveStatus().equals(3)) { // æç» deviceRepair.setStatus(2); } deviceRepairMapper.updateById(deviceRepair); } //éè´å®¡æ ¸ if (approveProcess.getApproveType().equals(5)) { PurchaseLedger purchaseLedger = purchaseLedgerMapper.selectOne(new LambdaQueryWrapper<PurchaseLedger>() src/main/java/com/ruoyi/approve/service/impl/ApproveProcessConfigNodeServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,48 @@ package com.ruoyi.approve.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.approve.bean.vo.ApproveProcessConfigNodeVo; import com.ruoyi.approve.mapper.ApproveProcessConfigNodeMapper; import com.ruoyi.approve.pojo.ApproveProcessConfigNode; import com.ruoyi.approve.service.ApproveProcessConfigNodeService; import lombok.RequiredArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import java.util.List; /** * <p> * å®¡æ¹æµç¨é ç½®èç¹è¡¨ æå¡å®ç°ç±» * </p> * * @author è¯å¯¼è½¯ä»¶ï¼æ±èï¼æéå ¬å¸ * @since 2026-04-23 10:21:41 */ @Service @RequiredArgsConstructor public class ApproveProcessConfigNodeServiceImpl extends ServiceImpl<ApproveProcessConfigNodeMapper, ApproveProcessConfigNode> implements ApproveProcessConfigNodeService { private final ApproveProcessConfigNodeMapper approveProcessConfigNodeMapper; @Override public List<ApproveProcessConfigNodeVo> listNode(Integer type) { List<ApproveProcessConfigNode> approveProcessConfigNodes = approveProcessConfigNodeMapper.selectList(new QueryWrapper<ApproveProcessConfigNode>().lambda().eq(ApproveProcessConfigNode::getApproveType, type).orderByAsc(ApproveProcessConfigNode::getNodeOrder)); return approveProcessConfigNodes.stream() .map(node -> { ApproveProcessConfigNodeVo vo = new ApproveProcessConfigNodeVo(); BeanUtils.copyProperties(node, vo); return vo; }) .collect(java.util.stream.Collectors.toList()); } @Override public Boolean addApproveProcessConfigNodes(List<ApproveProcessConfigNode> approveProcessConfigNodes) { //å 餿§æ°æ® approveProcessConfigNodeMapper.delete(new QueryWrapper<ApproveProcessConfigNode>().lambda().eq(ApproveProcessConfigNode::getApproveType, approveProcessConfigNodes.get(0).getApproveType())); //æ°å¢ æ°æ® approveProcessConfigNodeMapper.insert(approveProcessConfigNodes); return true; } } src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java
@@ -6,16 +6,19 @@ 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.approve.bean.vo.ApproveGetAndUpdateVo; import com.ruoyi.approve.bean.vo.ApproveProcessConfigNodeVo; import com.ruoyi.approve.bean.vo.ApproveProcessVO; import com.ruoyi.approve.mapper.ApproveNodeMapper; import com.ruoyi.approve.mapper.ApproveProcessMapper; import com.ruoyi.approve.pojo.ApproveNode; import com.ruoyi.approve.pojo.ApproveProcess; import com.ruoyi.approve.service.ApproveProcessConfigNodeService; import com.ruoyi.approve.service.IApproveNodeService; import com.ruoyi.approve.service.IApproveProcessService; import com.ruoyi.approve.vo.ApproveGetAndUpdateVo; import com.ruoyi.approve.vo.ApproveProcessVO; import com.ruoyi.common.enums.FileNameType; import com.ruoyi.common.utils.OrderUtils; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.other.service.impl.TempFileServiceImpl; import com.ruoyi.project.system.domain.SysDept; import com.ruoyi.project.system.domain.SysNotice; @@ -40,9 +43,7 @@ import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.*; import java.util.stream.Collectors; @Service @@ -61,16 +62,17 @@ private final PurchaseLedgerMapper purchaseLedgerMapper; private final ShippingInfoMapper shippingInfoMapper; private final ApproveNodeMapper approveNodeMapper; private final ApproveProcessConfigNodeService approveProcessConfigNodeService; @Override public void addApprove(ApproveProcessVO approveProcessVO) throws Exception { SysUser sysUser = sysUserMapper.selectUserById(approveProcessVO.getApproveUser()); SysDept sysDept = sysDeptMapper.selectDeptById(approveProcessVO.getApproveDeptId()); String[] split = approveProcessVO.getApproveUserIds().split(","); List<Long> longList = Arrays.stream(split) .map(Long::valueOf) // å°æ¯ä¸ª String 转æ¢ä¸º Long SysUser sysUser = SecurityUtils.getLoginUser().getUser(); SysDept sysDept = sysDeptMapper.selectDeptById(SecurityUtils.getLoginUser().getCurrentDeptId()); List<ApproveProcessConfigNodeVo> list = approveProcessConfigNodeService.listNode( approveProcessVO.getApproveType()); List<Long> nodeIds = list.stream() .map(ApproveProcessConfigNodeVo::getApproverId) .collect(Collectors.toList()); List<SysUser> sysUsers = sysUserMapper.selectUserByIds(longList); List<SysUser> sysUsers = sysUserMapper.selectUserByIds(nodeIds); if (CollectionUtils.isEmpty(sysUsers)) throw new RuntimeException("å®¡æ ¸ç¨æ·ä¸åå¨"); if (sysDept == null) throw new RuntimeException("é¨é¨ä¸åå¨"); if (sysUser == null) throw new RuntimeException("ç³è¯·äººä¸åå¨"); @@ -83,12 +85,13 @@ ApproveProcess approveProcess = new ApproveProcess(); String no = OrderUtils.countTodayByCreateTime(approveProcessMapper, "","approve_id"); approveProcess.setApproveId(no); approveProcess.setApproveUser(approveProcessVO.getApproveUser()); approveProcess.setApproveUser(sysUser.getUserId()); approveProcess.setApproveUserName(sysUser.getNickName()); approveProcess.setApproveDeptId(approveProcessVO.getApproveDeptId()); approveProcess.setApproveDeptId(sysDept.getDeptId()); approveProcess.setApproveUserIds(nodeIds.stream().map(String::valueOf).collect(Collectors.joining(","))); approveProcess.setApproveDeptName(sysDept.getDeptName()); approveProcess.setApproveUserNames(sysUsers.stream().map(SysUser::getNickName).collect(Collectors.joining(","))); approveProcess.setApproveTime(StringUtils.isEmpty(approveProcessVO.getApproveTime()) ? null : dateFormat.parse(approveProcessVO.getApproveTime())); approveProcess.setApproveTime(StringUtils.isEmpty(approveProcessVO.getApproveTime()) ? new Date(): dateFormat.parse(approveProcessVO.getApproveTime())); approveProcess.setApproveReason(approveProcessVO.getApproveReason()); approveProcess.setDeviceRepairId(approveProcessVO.getDeviceRepairId()); approveProcess.setMaintenancePrice(approveProcessVO.getMaintenancePrice()); @@ -100,11 +103,10 @@ approveProcess.setApproveType(approveProcessVO.getApproveType()); approveProcess.setCreateTime(LocalDateTime.now()); approveProcess.setTenantId(approveProcessVO.getApproveDeptId()); approveProcess.setApproveUserIds(approveProcessVO.getApproveUserIds()); approveProcess.setApproveUserCurrentId(longList.get(0)); approveProcess.setApproveUserCurrentId(nodeIds.get(0)); approveProcess.setApproveUserCurrentName(sysUsers .stream() .filter(SysUser -> SysUser.getUserId().equals(longList.get(0))) .filter(SysUser -> SysUser.getUserId().equals(nodeIds.get(0))) .collect(Collectors.toList()) .get(0) .getNickName()); @@ -116,20 +118,23 @@ } save(approveProcess); //åå§å审æ¹èç¹ approveNodeService.initApproveNodes(approveProcessVO.getApproveUserIds(), no, approveProcessVO.getApproveDeptId()); String nodeIdStr = nodeIds.stream() .map(String::valueOf) .collect(Collectors.joining(",")); approveNodeService.initApproveNodes(nodeIdStr, no, approveProcessVO.getApproveDeptId()); // éä»¶ç»å® tempFileService.migrateTempFilesToFormal(approveProcess.getId(), approveProcessVO.getTempFileIds(), FileNameType.ApproveProcess.getValue()); /*æ¶æ¯éç¥*/ String id = approveProcessVO.getApproveUserIds().split(",")[0]; Long id = nodeIds.getFirst(); if (approveProcess.getApproveType()==8){ sysNoticeService.simpleNoticeByUser(approveProcessType(approveProcess.getApproveType()), approveProcess.getApproveId() + "æµç¨ç¼å·ç审æ¹éè¦æ¨å®¡æ ¸!!!!!", Arrays.asList(Long.valueOf(id)), Collections.singletonList(id), "/safeProduction/safeWorkApproval?approveType=" + approveProcess.getApproveType() + "&approveId=" + approveProcess.getApproveId()); }else { sysNoticeService.simpleNoticeByUser(approveProcessType(approveProcess.getApproveType()), approveProcess.getApproveId() + "æµç¨ç¼å·ç审æ¹éè¦æ¨å®¡æ ¸!!!!!", Arrays.asList(Long.valueOf(id)), Collections.singletonList(id), "/collaborativeApproval/approvalProcess?approveType=" + approveProcess.getApproveType() + "&approveId=" + approveProcess.getApproveId()); } } @@ -289,7 +294,7 @@ .eq(ApproveProcess::getApproveReason, approveGetAndUpdateVo.getApproveReason()) .last("limit 1"); ApproveProcess approveProcess = approveProcessMapper.selectOne(approveProcessLambdaQueryWrapper); if (approveProcess == null) throw new RuntimeException("è¯·éæ©å®¡æ¹äºº"); if (approveProcess == null) throw new RuntimeException("â"); String[] split = approveGetAndUpdateVo.getApproveUserIds().split(","); if (split.length == 0) { throw new RuntimeException("è¯·éæ©å®¡æ¹äºº"); src/main/java/com/ruoyi/approve/utils/ApproveProcessConfigNodeUtils.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,9 @@ package com.ruoyi.approve.utils; import lombok.RequiredArgsConstructor; @RequiredArgsConstructor public class ApproveProcessConfigNodeUtils { } src/main/java/com/ruoyi/collaborativeApproval/service/impl/MeetingServiceImpl.java
@@ -3,7 +3,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; src/main/java/com/ruoyi/framework/security/handle/LogoutSuccessHandlerImpl.java
@@ -1,14 +1,5 @@ package com.ruoyi.framework.security.handle; import java.io.IOException; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.security.core.Authentication; import org.springframework.security.web.authentication.logout.LogoutSuccessHandler; import com.alibaba.fastjson2.JSON; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.utils.ServletUtils; @@ -18,21 +9,30 @@ import com.ruoyi.framework.security.LoginUser; import com.ruoyi.framework.security.service.TokenService; import com.ruoyi.framework.web.domain.AjaxResult; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import org.springframework.context.annotation.Configuration; import org.springframework.security.core.Authentication; import org.springframework.security.web.authentication.logout.LogoutSuccessHandler; import java.io.IOException; /** * èªå®ä¹éåºå¤çç±» è¿åæå * * * @author ruoyi */ @Configuration @RequiredArgsConstructor public class LogoutSuccessHandlerImpl implements LogoutSuccessHandler { private TokenService tokenService; private final TokenService tokenService; /** * éåºå¤ç * * * @return */ @Override src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
@@ -8,7 +8,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.approve.pojo.ApproveProcess; import com.ruoyi.approve.service.impl.ApproveProcessServiceImpl; import com.ruoyi.approve.vo.ApproveProcessVO; import com.ruoyi.approve.bean.vo.ApproveProcessVO; import com.ruoyi.basic.mapper.ProductMapper; import com.ruoyi.basic.mapper.ProductModelMapper; import com.ruoyi.basic.mapper.SupplierManageMapper; @@ -138,15 +138,23 @@ @Override @Transactional(rollbackFor = Exception.class) public int addOrEditPurchase(PurchaseLedgerDto purchaseLedgerDto) throws Exception { PurchaseLedger purchaseLedger = new PurchaseLedger(); SalesLedger salesLedger = salesLedgerMapper.selectById(purchaseLedgerDto.getSalesLedgerId()); //å½å ¥äºº SysUser sysUser = userMapper.selectUserById(purchaseLedgerDto.getRecorderId()); if (ObjectUtils.isNotEmpty(sysUser)) { purchaseLedger.setRecorderName(sysUser.getNickName()); purchaseLedger.setPhoneNumber(sysUser.getPhonenumber()); }else { purchaseLedger.setRecorderName(SecurityUtils.getLoginUser().getNickName()); SysUser sysUser1 = userMapper.selectUserById(SecurityUtils.getUserId()); purchaseLedger.setPhoneNumber(sysUser1.getPhonenumber()); } SupplierManage supplierManage = supplierManageMapper.selectById(purchaseLedgerDto.getSupplierId()); // DTO转Entity PurchaseLedger purchaseLedger = new PurchaseLedger(); BeanUtils.copyProperties(purchaseLedgerDto, purchaseLedger); LoginUser loginUser = SecurityUtils.getLoginUser(); if (ObjectUtils.isNotEmpty(loginUser) && null != loginUser.getTenantId()) { @@ -156,8 +164,7 @@ purchaseLedger.setSalesLedgerId(ObjectUtils.isNotEmpty(salesLedger) ? salesLedger.getId() : -1); purchaseLedger.setSupplierName(supplierManage.getSupplierName()); purchaseLedger.setRecorderId(purchaseLedgerDto.getRecorderId()); purchaseLedger.setRecorderName(sysUser.getNickName()); purchaseLedger.setPhoneNumber(sysUser.getPhonenumber()); purchaseLedger.setApprovalStatus(1); // 3. æ°å¢ææ´æ°ä¸»è¡¨ if (purchaseLedger.getId() == null) { src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java
@@ -36,10 +36,10 @@ @RequestMapping("/sales/product") public class SalesLedgerProductController extends BaseController { private ISalesLedgerProductService salesLedgerProductService; private ProcurementRecordService procurementRecordService; private StockUtils stockUtils; private PurchaseReturnOrderProductsMapper purchaseReturnOrderProductsMapper; private final ISalesLedgerProductService salesLedgerProductService; private final ProcurementRecordService procurementRecordService; private final StockUtils stockUtils; private final PurchaseReturnOrderProductsMapper purchaseReturnOrderProductsMapper; /** src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java
@@ -3,7 +3,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.approve.service.impl.ApproveProcessServiceImpl; import com.ruoyi.approve.vo.ApproveProcessVO; import com.ruoyi.approve.bean.vo.ApproveProcessVO; import com.ruoyi.common.utils.OrderUtils; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.poi.ExcelUtil; src/main/java/com/ruoyi/sales/service/impl/SalesQuotationServiceImpl.java
@@ -4,12 +4,15 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.approve.pojo.ApproveProcess; import com.ruoyi.approve.service.impl.ApproveProcessServiceImpl; import com.ruoyi.approve.vo.ApproveGetAndUpdateVo; import com.ruoyi.approve.vo.ApproveProcessVO; import com.ruoyi.approve.bean.vo.ApproveGetAndUpdateVo; import com.ruoyi.approve.bean.vo.ApproveProcessVO; import com.ruoyi.basic.dto.CustomerPrivatePoolDto; import com.ruoyi.basic.mapper.CustomerPrivatePoolMapper; import com.ruoyi.common.utils.OrderUtils; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.bean.BeanUtils; @@ -39,6 +42,8 @@ private final SalesQuotationProductService salesQuotationProductService; private final ApproveProcessServiceImpl approveProcessService; private final CustomerPrivatePoolMapper customerPrivatePoolMapper; @Override public IPage<SalesQuotationDto> listPage(Page page, SalesQuotationDto salesQuotationDto) { IPage<SalesQuotationDto> salesQuotationDtoIPage = salesQuotationMapper.listPage(page, salesQuotationDto); @@ -56,7 +61,11 @@ public boolean add(SalesQuotationDto salesQuotationDto) { LoginUser loginUser = SecurityUtils.getLoginUser(); SalesQuotation salesQuotation = new SalesQuotation(); BeanUtils.copyProperties(salesQuotationDto, salesQuotation); CustomerPrivatePoolDto customerPrivatePoolDto = customerPrivatePoolMapper.selectInfo(Long.valueOf(salesQuotationDto.getCustomer())); if (ObjectUtils.isNotEmpty(customerPrivatePoolDto)) { BeanUtils.copyProperties(salesQuotationDto, salesQuotation); salesQuotation.setCustomer(customerPrivatePoolDto.getCustomerName()); } String quotationNo = OrderUtils.countTodayByCreateTime(salesQuotationMapper, "QT","quotation_no"); salesQuotation.setQuotationNo(quotationNo); salesQuotation.setStatus("å¾ å®¡æ¹"); src/main/resources/mapper/approve/ApproveProcessConfigNodeMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,21 @@ <?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.ruoyi.approve.mapper.ApproveProcessConfigNodeMapper"> <!-- éç¨æ¥è¯¢æ å°ç»æ --> <resultMap id="BaseResultMap" type="com.ruoyi.approve.pojo.ApproveProcessConfigNode"> <id column="id" property="id" /> <result column="node_order" property="nodeOrder" /> <result column="approver_type" property="approverType" /> <result column="is_required" property="isRequired" /> <result column="timeout_hours" property="timeoutHours" /> <result column="tenant_id" property="tenantId" /> <result column="create_user" property="createUser" /> <result column="create_time" property="createTime" /> <result column="update_user" property="updateUser" /> <result column="update_time" property="updateTime" /> <result column="delete_flag" property="deleteFlag" /> <result column="dept_id" property="deptId" /> </resultMap> </mapper> src/main/resources/mapper/basic/CustomerPrivatePoolMapper.xml
@@ -41,7 +41,7 @@ <if test="c.customerType != null"> and c.customer_type = #{c.customerType} </if> <if test="c.bound_id != null"> <if test="c.boundId != null"> and cpp.bound_id = #{c.boundId} </if> src/main/resources/mapper/sales/SalesLedgerMapper.xml
@@ -62,8 +62,7 @@ T1.payment_method, T1.delivery_date, DATEDIFF(T1.delivery_date, CURDATE()) AS delivery_days_diff, IFNULL(shipping_status_counts.is_all_shipped, FALSE) AS is_fh, IFNULL(production_exists.has_production, FALSE) AS has_production_record IFNULL(shipping_status_counts.is_all_shipped, FALSE) AS is_fh FROM sales_ledger T1 LEFT JOIN sys_user T2 ON T1.entry_person = T2.user_id LEFT JOIN ( @@ -75,13 +74,7 @@ FROM shipping_info GROUP BY sales_ledger_id ) shipping_status_counts ON T1.id = shipping_status_counts.sales_ledger_id LEFT JOIN ( SELECT DISTINCT po.sales_ledger_id, TRUE AS has_production FROM product_order po INNER JOIN product_work_order wo ON wo.product_order_id = po.id INNER JOIN production_product_main pm ON pm.work_order_id = wo.id ) production_exists ON T1.id = production_exists.sales_ledger_id <where> <if test="salesLedgerDto.customerName != null and salesLedgerDto.customerName != '' "> AND T1.customer_name LIKE CONCAT('%',#{salesLedgerDto.customerName},'%') @@ -129,4 +122,4 @@ order by sl.execution_date desc </select> </mapper> </mapper>