| src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/common/enums/FileNameType.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/sales/dto/ShippingInfoDto.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/sales/pojo/ShippingInfo.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/sales/service/impl/CommonFileServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/resources/mapper/sales/SalesLedgerProductMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/resources/mapper/sales/ShippingInfoMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
@@ -22,8 +22,10 @@ import com.ruoyi.sales.mapper.CommonFileMapper; import com.ruoyi.sales.mapper.SalesQuotationMapper; import com.ruoyi.sales.mapper.SalesQuotationProductMapper; import com.ruoyi.sales.mapper.ShippingInfoMapper; import com.ruoyi.sales.pojo.CommonFile; import com.ruoyi.sales.pojo.SalesQuotation; import com.ruoyi.sales.pojo.ShippingInfo; import com.ruoyi.sales.service.impl.CommonFileServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; @@ -60,6 +62,9 @@ @Autowired private SalesQuotationMapper salesQuotationMapper; @Autowired private ShippingInfoMapper shippingInfoMapper; @@ -176,9 +181,27 @@ }else if(status.equals(1) && salesQuote != null){ salesQuote.setStatus("å®¡æ ¸ä¸"); } salesQuotationMapper.updateById(salesQuote); } // åºåºå®¡æ¹ä¿®æ¹ if(approveProcess.getApproveType().equals(7)){ String[] split = approveProcess.getApproveReason().split(":"); ShippingInfo shippingInfo = shippingInfoMapper.selectOne(new LambdaQueryWrapper<ShippingInfo>() .eq(ShippingInfo::getShippingNo, split[1]) .orderByDesc(ShippingInfo::getCreateTime) .last("limit 1")); if(shippingInfo != null){ if(status.equals(2)){ shippingInfo.setStatus("å®¡æ ¸éè¿"); }else if(status.equals(3)){ shippingInfo.setType("å®¡æ ¸æç»"); }else if(status.equals(1)){ shippingInfo.setStatus("å®¡æ ¸ä¸"); } shippingInfoMapper.updateById(shippingInfo); } } // ç»å®éä»¶ if(!CollectionUtils.isEmpty(approveNode.getTempFileIds()) && approveNode.getApproveNodeStatus() == 1){ tempFileService.migrateTempFilesToFormal(approveNode.getId(), approveNode.getTempFileIds(), FileNameType.ApproveNode.getValue()); src/main/java/com/ruoyi/common/enums/FileNameType.java
@@ -1,6 +1,5 @@ package com.ruoyi.common.enums; import com.ruoyi.approve.pojo.ApproveProcess; public enum FileNameType { @@ -11,7 +10,11 @@ MEASURING(5), //计éå¨å ·å°è´¦ MEASURINGRecord(6),//计éå¨å ·å°è´¦è®°å½ ApproveNode(7), //åå审æ¹èç¹å®¡æ ¸ ApproveProcess(8); //åå审æ¹ä¸»æ°æ® ApproveProcess(8),//åå审æ¹ä¸»æ°æ® SHIP(9),//åè´§å°è´¦ INSPECTION_PRODUCTION_BEFORE(10), INSPECTION_PRODUCTION_AFTER(11), INSPECTION(12);//å·¡æ£ ç产å private final int value; src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java
@@ -3,11 +3,20 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.approve.mapper.ApproveProcessMapper; import com.ruoyi.approve.service.impl.ApproveProcessServiceImpl; 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.common.utils.poi.ExcelUtil; import com.ruoyi.framework.aspectj.lang.annotation.Log; import com.ruoyi.framework.aspectj.lang.enums.BusinessType; import com.ruoyi.framework.security.LoginUser; import com.ruoyi.framework.web.controller.BaseController; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.other.service.impl.TempFileServiceImpl; import com.ruoyi.sales.dto.ShippingInfoDto; import com.ruoyi.sales.mapper.ShipmentApprovalMapper; import com.ruoyi.sales.mapper.ShippingInfoMapper; import com.ruoyi.sales.pojo.SalesLedger; @@ -17,6 +26,7 @@ import com.ruoyi.sales.service.ISalesLedgerProductService; import com.ruoyi.sales.service.ISalesLedgerService; import com.ruoyi.sales.service.ShippingInfoService; import com.ruoyi.sales.service.impl.CommonFileServiceImpl; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.commons.collections4.CollectionUtils; @@ -25,6 +35,8 @@ import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.time.LocalDate; import java.util.List; /** @@ -43,6 +55,15 @@ @Autowired private ISalesLedgerProductService salesLedgerProductService; @Autowired private TempFileServiceImpl tempFileService; @Autowired private CommonFileServiceImpl commonFileService; @Autowired private ApproveProcessServiceImpl approveProcessService; @GetMapping("/listPage") @ApiOperation("åè´§ä¿¡æ¯å表") @@ -54,45 +75,54 @@ @PostMapping("/add") @ApiOperation("æ·»å åè´§ä¿¡æ¯") @Transactional(rollbackFor = Exception.class) public AjaxResult add(@RequestBody ShippingInfo req) { LambdaQueryWrapper<ShippingInfo> wrapper = new LambdaQueryWrapper<>(); wrapper.eq(ShippingInfo::getSalesLedgerId, req.getSalesLedgerId()); wrapper.eq(ShippingInfo::getSalesLedgerProductId, req.getSalesLedgerProductId()); List<ShippingInfo> list = shippingInfoService.list(wrapper); if(!CollectionUtils.isEmpty(list)){ return AjaxResult.error("åè´§ä¿¡æ¯å·²åå¨"); } @Log(title = "åè´§ä¿¡æ¯ç®¡ç", businessType = BusinessType.INSERT) public AjaxResult add(@RequestBody ShippingInfoDto req) throws Exception { LoginUser loginUser = SecurityUtils.getLoginUser(); String sh = OrderUtils.countTodayByCreateTime(shippingInfoMapper, "SH"); // åè´§å®¡æ¹ ApproveProcessVO approveProcessVO = new ApproveProcessVO(); approveProcessVO.setApproveType(7); approveProcessVO.setApproveDeptId(loginUser.getTenantId()); approveProcessVO.setApproveReason(req.getType() + ":" +sh); approveProcessVO.setApproveUserIds(req.getApproveUserIds()); approveProcessVO.setApproveUser(loginUser.getUserId()); approveProcessVO.setApproveTime(LocalDate.now().toString()); approveProcessService.addApprove(approveProcessVO); // æ·»å åè´§æ¶æ¯ req.setShippingNo(sh); req.setStatus("å¾ å®¡æ ¸"); boolean save = shippingInfoService.save(req); if(save){ ShippingInfo shippingInfo = shippingInfoService.getOne(wrapper); ShipmentApproval shipmentApproval = new ShipmentApproval(); shipmentApproval.setSalesLedgerId(req.getSalesLedgerId()); shipmentApproval.setSalesLedgerProductId(req.getSalesLedgerProductId()); shipmentApproval.setApproveUserId(req.getApproverId()); shipmentApproval.setApproveStatus(2); shipmentApproval.setShippingInfoId(shippingInfo.getId()); shipmentApprovalMapper.insert(shipmentApproval); SalesLedgerProduct salesLedgerProduct = salesLedgerProductService.getById(req.getSalesLedgerProductId()); if(salesLedgerProduct != null){ salesLedgerProduct.setApproveStatus(2); salesLedgerProductService.updateById(salesLedgerProduct); } } return save ? AjaxResult.success() : AjaxResult.error(); } @PostMapping("/update") @ApiOperation("ä¿®æ¹åè´§ä¿¡æ¯") public AjaxResult update(@RequestBody ShippingInfo req) { @ApiOperation("åè´§æ£åºå") @PostMapping("/deductStock") @Transactional(rollbackFor = Exception.class) @Log(title = "åè´§ä¿¡æ¯ç®¡ç", businessType = BusinessType.UPDATE) public AjaxResult deductStock(@RequestBody ShippingInfoDto req) throws IOException { ShippingInfo byId = shippingInfoService.getById(req.getId()); if (byId == null) { return AjaxResult.error("åè´§ä¿¡æ¯ä¸åå¨"); } Long userId = getLoginUser().getUserId(); if(!userId.equals(Long.parseLong(byId.getCreateUser().toString()))){ return AjaxResult.error("æ¨æ²¡ææéä¿®æ¹æ¤åè´§ä¿¡æ¯"); byId.setExpressNumber(req.getExpressNumber()); byId.setExpressCompany(req.getExpressCompany()); byId.setShippingCarNumber(req.getShippingCarNumber()); boolean update = shippingInfoService.updateById(req); // è¿ç§»æä»¶ if(CollectionUtils.isNotEmpty(req.getTempFileIds())){ tempFileService.migrateTempFilesToFormal(req.getId(), req.getTempFileIds(), FileNameType.SHIP.getValue()); } return update ? AjaxResult.success() : AjaxResult.error(); } @PostMapping("/update") @ApiOperation("ä¿®æ¹åè´§ä¿¡æ¯") @Transactional(rollbackFor = Exception.class) @Log(title = "åè´§ä¿¡æ¯ç®¡ç", businessType = BusinessType.UPDATE) public AjaxResult update(@RequestBody ShippingInfo req) { ShippingInfo byId = shippingInfoService.getById(req.getId()); if (byId == null) { return AjaxResult.error("åè´§ä¿¡æ¯ä¸åå¨"); } boolean update = shippingInfoService.updateById(req); return update ? AjaxResult.success() : AjaxResult.error(); @@ -100,17 +130,10 @@ @DeleteMapping("/delete") @ApiOperation("å é¤åè´§ä¿¡æ¯") @Transactional(rollbackFor = Exception.class) @Log(title = "åè´§ä¿¡æ¯ç®¡ç", businessType = BusinessType.DELETE) public AjaxResult delete(@RequestBody List<Long> ids) { Long userId = getLoginUser().getUserId(); ids.forEach(id -> { ShippingInfo byId = shippingInfoService.getById(id); if (byId == null) { throw new RuntimeException("åè´§ä¿¡æ¯ä¸åå¨"); } if(!userId.equals(Long.parseLong(byId.getCreateUser().toString()))){ throw new RuntimeException("æ¨æ²¡ææéå 餿¤åè´§ä¿¡æ¯"); } }); commonFileService.deleteByBusinessIds(ids, FileNameType.SHIP.getValue()); boolean delete = shippingInfoService.removeBatchByIds(ids); return delete ? AjaxResult.success("å 餿å") : AjaxResult.error("å é¤å¤±è´¥"); } src/main/java/com/ruoyi/sales/dto/ShippingInfoDto.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,32 @@ package com.ruoyi.sales.dto; import com.baomidou.mybatisplus.annotation.TableField; import com.ruoyi.framework.aspectj.lang.annotation.Excel; import com.ruoyi.sales.pojo.CommonFile; import com.ruoyi.sales.pojo.ShippingInfo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; /** * @author :yys * @date : 2026/1/23 16:35 */ @Data public class ShippingInfoDto extends ShippingInfo { /** * 审æ¹äººidå表 */ // 审æ¹äºº private String approveUserIds; private String type; // åè´§ç±»å @TableField(exist = false) private List<String> tempFileIds; @TableField(exist = false) private List<CommonFile> commonFileList; } src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java
@@ -200,14 +200,14 @@ @JsonFormat(pattern = "yyyy-MM-dd") private Date shippingDate; // @TableField(exist = false) // @ApiModelProperty(value = "çäº§ç¶æ") // private String productionStatus = "æªå¼å§"; @TableField(exist = false) @ApiModelProperty(value = "åè´§ç¶æ") private String shippingStatus; /** * å货审æ¹ç¶æ * 产åç¶æ */ // @TableField(exist = false) @ApiModelProperty(value = "审æ¹ç¶æï¼0åè´§å¾ ç³è¯·,1åè´§å¯ç³è¯·,2å货审æ¹ä¸(å¾ å®¡æ¹),3å货审æ¹éè¿ï¼4å货审æ¹éå") @ApiModelProperty(value = "产åç¶æï¼1-å è¶³") private Integer approveStatus; @ApiModelProperty(value = "å¾ åæ¬¾æ»éé¢") src/main/java/com/ruoyi/sales/pojo/ShippingInfo.java
@@ -18,13 +18,6 @@ @TableName("shipping_info") public class ShippingInfo { @TableId(value = "id", type = IdType.AUTO) private Long id; @ApiModelProperty(value = "éå®å°è´¦id") private Long salesLedgerId; @ApiModelProperty(value = "é宿¥ä»·äº§å表id") private Long salesLedgerProductId; @TableField(exist = false) @ApiModelProperty(value = "éå®ååå·") @Excel(name = "éå®ååå·") @@ -35,11 +28,40 @@ @Excel(name = "客æ·åç§°") private String customerName; @TableId(value = "id", type = IdType.AUTO) private Long id; @ApiModelProperty(value = "éå®å°è´¦id") private Long salesLedgerId; @ApiModelProperty(value = "é宿¥ä»·äº§å表id") private Long salesLedgerProductId; @ApiModelProperty(value = "ç¶æ") @Excel(name = "ç¶æ") private String status; @ApiModelProperty(value = "åè´§æ¥æ") @JsonFormat(pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd") @Excel(name = "åè´§æ¥æ", width = 30, dateFormat = "yyyy-MM-dd") private Date shippingDate; @ApiModelProperty(value = "åè´§ç¼å·") @Excel(name = "åè´§ç¼å·") private String shippingNo; @ApiModelProperty(value = "å¿«éåå·") @Excel(name = "å¿«éåå·") private String expressNumber; @ApiModelProperty(value = "å¿«éå ¬å¸") @Excel(name = "å¿«éå ¬å¸") private String expressCompany; @ApiModelProperty(value = "åè´§ç±»å") @Excel(name = "åè´§ç±»å") private String type; @ApiModelProperty(value = "å货车çå·") @Excel(name = "å货车çå·") @@ -65,8 +87,5 @@ @ApiModelProperty(value = "ç§æ·ID") @TableField(fill = FieldFill.INSERT) private Long tenantId; @ApiModelProperty(value = "审æ¹äººid") @TableField(exist = false) private Integer approverId; } src/main/java/com/ruoyi/sales/service/impl/CommonFileServiceImpl.java
@@ -1,5 +1,6 @@ package com.ruoyi.sales.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.other.mapper.TempFileMapper; @@ -39,6 +40,16 @@ @Value("${file.upload-dir}") private String uploadDir; public void deleteByBusinessId(Long businessId,Integer type) { commonFileMapper.delete(new LambdaQueryWrapper<CommonFile>().eq(CommonFile::getCommonId, businessId) .eq(CommonFile::getType, type)); } public void deleteByBusinessIds(List<Long> businessId,Integer type) { commonFileMapper.delete(new LambdaQueryWrapper<CommonFile>().in(CommonFile::getCommonId, businessId) .eq(CommonFile::getType, type)); } @Override public int deleteSalesLedgerByIds(Long[] ids) { src/main/resources/mapper/sales/SalesLedgerProductMapper.xml
@@ -9,6 +9,8 @@ T1.*, t3.shipping_car_number, t3.shipping_date, t3.status as shippingStatus t3.shipping_date, CASE WHEN t2.qualitity > T1.quantity THEN 1 ELSE 0 src/main/resources/mapper/sales/ShippingInfoMapper.xml
@@ -8,6 +8,11 @@ s.sales_ledger_id, s.shipping_date, s.shipping_car_number, s.express_number, s.express_company, s.shipping_no, s.type, s.status, s.create_time, s.update_time, s.create_user,