src/main/java/com/ruoyi/basic/controller/BusinessDescriptionController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,18 @@ package com.ruoyi.basic.controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * <p> * åæºå®¢æ·æè¿° å端æ§å¶å¨ * </p> * * @author è¯å¯¼è½¯ä»¶ï¼æ±èï¼æéå ¬å¸ * @since 2026-05-07 04:46:21 */ @RestController @RequestMapping("/businessDescription") public class BusinessDescriptionController { } src/main/java/com/ruoyi/basic/controller/BusinessOpportunityController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,88 @@ package com.ruoyi.basic.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.basic.dto.BusinessDescriptionDto; import com.ruoyi.basic.dto.BusinessOpportunityDto; import com.ruoyi.basic.service.BusinessOpportunityService; import com.ruoyi.framework.aspectj.lang.annotation.Log; import com.ruoyi.framework.aspectj.lang.enums.BusinessType; import com.ruoyi.framework.web.domain.R; import io.jsonwebtoken.lang.Collections; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.AllArgsConstructor; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import java.util.List; /** * <p> * åæºç®¡ç å端æ§å¶å¨ * </p> * * @author è¯å¯¼è½¯ä»¶ï¼æ±èï¼æéå ¬å¸ * @since 2026-05-07 04:46:10 */ @RestController @RequestMapping("/businessOpportunity") @AllArgsConstructor @Tag(name = "åæºç®¡ç") public class BusinessOpportunityController { private final BusinessOpportunityService businessOpportunityService; @Operation(summary = "è·åç级å表") @GetMapping("/getProvinceList") public R getProvinceList() { return R.ok(businessOpportunityService.getProvinceList()); } @Operation(summary = "éè¿ç级idè·ååå¸å表") @GetMapping("/getCityList") public R getCityList(@RequestParam("provinceId") Integer provinceId) { return R.ok(businessOpportunityService.getCityList(provinceId)); } @GetMapping("/listPage") @Operation(summary = "åæºå表") public R listPage(Page page, BusinessOpportunityDto businessOpportunityDto) { IPage<BusinessOpportunityDto> businessOpportunityIPage = businessOpportunityService.listPage(page, businessOpportunityDto); return R.ok(businessOpportunityIPage); } @PostMapping("/add") @Operation(summary = "æ·»å åæº") @Log(title = "åæºç®¡ç-æ·»å åæº", businessType = BusinessType.INSERT) @Transactional(rollbackFor = Exception.class) public R add(@RequestBody BusinessOpportunityDto businessOpportunity) throws Exception{ return businessOpportunityService.add(businessOpportunity); } @PostMapping("/addDescription") @Operation(summary = "æ·»å åæºæè¿°") @Log(title = "åæºç®¡ç-æ·»å åæºæè¿°", businessType = BusinessType.INSERT) @Transactional(rollbackFor = Exception.class) public R addDescription(@RequestBody BusinessDescriptionDto businessDescription) throws Exception{ return businessOpportunityService.addDescription(businessDescription); } @PutMapping("/update") @Operation( summary = "ä¿®æ¹åæº") @Log(title = "åæºç®¡ç-ä¿®æ¹åæº", businessType = BusinessType.UPDATE) @Transactional(rollbackFor = Exception.class) public R update(@RequestBody BusinessOpportunityDto businessOpportunity) throws Exception{ return businessOpportunityService.updateBusinessOpportunityById(businessOpportunity) ? R.ok() : R.fail(); } @DeleteMapping("/delete") @Operation( summary = "å é¤åæº") @Log(title = "åæºç®¡ç-å é¤åæº", businessType = BusinessType.DELETE) public R delete(@RequestBody List<Long> ids) { if(Collections.isEmpty(ids)) return R.fail("è¯·éæ©è¦å é¤çåæº"); return businessOpportunityService.delete(ids) ? R.ok() : R.fail(); } } src/main/java/com/ruoyi/basic/dto/AreaDto.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,14 @@ package com.ruoyi.basic.dto; import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.v3.oas.annotations.media.Schema; import java.awt.geom.Area; import java.util.List; public class AreaDto extends Area { @TableField(exist = false) @Schema(hidden = true) // éè䏿¾ç¤ºå¨ææ¡£ä¸ private List<Area> children; } src/main/java/com/ruoyi/basic/dto/BusinessDescriptionDto.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,15 @@ package com.ruoyi.basic.dto; import com.ruoyi.basic.pojo.BusinessDescription; import lombok.Data; import java.util.List; @Data public class BusinessDescriptionDto extends BusinessDescription { private List<StorageBlobDTO> storageBlobDTOS; private List<StorageBlobVO> storageBlobVO; } src/main/java/com/ruoyi/basic/dto/BusinessOpportunityDto.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,31 @@ package com.ruoyi.basic.dto; import com.ruoyi.basic.pojo.BusinessDescription; import com.ruoyi.basic.pojo.BusinessOpportunity; import io.swagger.annotations.ApiModelProperty; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; import java.util.List; @EqualsAndHashCode(callSuper = true) @Data public class BusinessOpportunityDto extends BusinessOpportunity { @Schema(description = "æä»¶id") private List<Long> FileIds; @Schema(description = "åæºæè¿°") private List<BusinessDescription> businessDescription; @ApiModelProperty(value = "å¼å§æ¶é´") private String entryDateStart; @ApiModelProperty(value = "ç»ææ¶é´") private String entryDateEnd; private List<StorageBlobDTO> storageBlobDTOS; private List<StorageBlobVO> businessCommonFiles; } src/main/java/com/ruoyi/basic/enums/RecordTypeEnum.java
@@ -208,6 +208,8 @@ SALES_REFUND_AMOUNT_ORDER("sales_refund_amount_order"), SALES_RECEIPT_RETURN("sales_receipt_return"), ACCOUNT_EXPENSE("account_expense"), BUSINESS_OPPORTUNITY("business_opportunity"), BUSINESS_DESCRIPTION("business_description"), ACCOUNT_FILE("account_file"); private final String type; src/main/java/com/ruoyi/basic/mapper/AreaMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,9 @@ package com.ruoyi.basic.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.basic.pojo.Area; import org.apache.ibatis.annotations.Mapper; @Mapper public interface AreaMapper extends BaseMapper<Area> { } src/main/java/com/ruoyi/basic/mapper/BusinessDescriptionMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,18 @@ package com.ruoyi.basic.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.basic.pojo.BusinessDescription; import org.apache.ibatis.annotations.Mapper; /** * <p> * åæºå®¢æ·æè¿° Mapper æ¥å£ * </p> * * @author è¯å¯¼è½¯ä»¶ï¼æ±èï¼æéå ¬å¸ * @since 2026-05-07 04:46:21 */ @Mapper public interface BusinessDescriptionMapper extends BaseMapper<BusinessDescription> { } src/main/java/com/ruoyi/basic/mapper/BusinessOpportunityMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,23 @@ package com.ruoyi.basic.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.basic.dto.BusinessOpportunityDto; import com.ruoyi.basic.pojo.BusinessOpportunity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; /** * <p> * åæºç®¡ç Mapper æ¥å£ * </p> * * @author è¯å¯¼è½¯ä»¶ï¼æ±èï¼æéå ¬å¸ * @since 2026-05-07 04:46:10 */ @Mapper public interface BusinessOpportunityMapper extends BaseMapper<BusinessOpportunity> { IPage<BusinessOpportunityDto> listPage(Page page, @Param("businessOpportunityDto") BusinessOpportunityDto businessOpportunityDto); } src/main/java/com/ruoyi/basic/pojo/Area.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,32 @@ package com.ruoyi.basic.pojo; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.io.Serializable; @Data @TableName("area") @Schema(description = "åºå表") public class Area implements Serializable { private static final long serialVersionUID = 1L; @TableId(type = IdType.AUTO) @Schema(description = "åºå·", example = "1") private Long id; @Schema(description = "ç¶çº§IDï¼0=çï¼å ¶ä»=对åºä¸çº§ID", example = "0") private Integer parentId; @Schema(description = "åºååç§°ï¼ç/å¸/åºå¿ï¼", example = "å京å¸") private String name; @Schema(description = "å±çº§ï¼1=çï¼2=å¸ï¼3=åºå¿", minimum = "1", maximum = "3") private Integer level; } src/main/java/com/ruoyi/basic/pojo/BusinessDescription.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,81 @@ package com.ruoyi.basic.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.LocalDate; import java.time.LocalDateTime; /** * <p> * åæºå®¢æ·æè¿° * </p> * * @author è¯å¯¼è½¯ä»¶ï¼æ±èï¼æéå ¬å¸ * @since 2026-05-07 04:46:21 */ @Getter @Setter @ToString @TableName("business_description") @ApiModel(value = "BusinessDescription对象", description = "åæºå®¢æ·æè¿°") public class BusinessDescription implements Serializable { private static final long serialVersionUID = 1L; @TableId(value = "id", type = IdType.AUTO) private Integer id; /** * åæºä¸»è¡¨id */ @ApiModelProperty("åæºä¸»è¡¨id") private Long businessOpportunityId; /** * æè¿° */ @ApiModelProperty("æè¿°") private String description; /** * å½å ¥äºº */ @ApiModelProperty("å½å ¥äºº") private String entryPerson; /** * å½å ¥æ¶é´ */ @ApiModelProperty("å½å ¥æ¶é´") private LocalDate entryDate; /** * ç¶æ */ @ApiModelProperty("ç¶æ") private String status; private Integer tenantId; @TableField(fill = FieldFill.INSERT) private Integer createUser; @TableField(fill = FieldFill.INSERT) private LocalDateTime createTime; @TableField(fill = FieldFill.INSERT_UPDATE) private Integer updateUser; @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updateTime; } src/main/java/com/ruoyi/basic/pojo/BusinessOpportunity.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,147 @@ package com.ruoyi.basic.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 io.swagger.v3.oas.annotations.media.Schema; import lombok.Getter; import lombok.Setter; import lombok.ToString; import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; /** * <p> * åæºç®¡ç * </p> * * @author è¯å¯¼è½¯ä»¶ï¼æ±èï¼æéå ¬å¸ * @since 2026-05-07 04:46:10 */ @Getter @Setter @ToString @TableName("business_opportunity") @ApiModel(value = "BusinessOpportunity对象", description = "åæºç®¡ç") public class BusinessOpportunity implements Serializable { private static final long serialVersionUID = 1L; @TableId(value = "id", type = IdType.AUTO) private Long id; /** * ç¶æ */ @ApiModelProperty("ç¶æ") private String status; /** * ç份 */ @ApiModelProperty("ç份") private String province; /** * åå¸ */ @ApiModelProperty("åå¸") private String city; /** * 客æ·åç§° */ @ApiModelProperty("客æ·åç§°") private String customerName; /** * åæºæ¥æº */ @ApiModelProperty("åæºæ¥æº") private String businessSource; /** * å½å ¥æ¥æ */ @ApiModelProperty("å½å ¥æ¥æ") private LocalDate entryDate; /** * å½å ¥äºº */ @ApiModelProperty("å½å ¥äºº") private String entryPerson; private Integer tenantId; @TableField(fill = FieldFill.INSERT) private Integer createUser; @TableField(fill = FieldFill.INSERT) private LocalDateTime createTime; @TableField(fill = FieldFill.INSERT_UPDATE) private Integer updateUser; @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updateTime; /** * ä¿¡æ¯åç°ç¶ */ @ApiModelProperty("ä¿¡æ¯åç°ç¶") private String informationState; /** * 主è¥ä¸å¡æ¶å ¥ */ @ApiModelProperty("主è¥ä¸å¡æ¶å ¥") private String mainBusinessRevenue; /** * 主è¥äº§å */ @ApiModelProperty("主è¥äº§å") private String mainProducts; /** * 客æ·è§æ¨¡ */ @ApiModelProperty("客æ·è§æ¨¡") private String customerScale; /** * è¡ä¸ */ @ApiModelProperty("è¡ä¸") private String industry; /** * ååéé¢ */ @ApiModelProperty("ååéé¢") private BigDecimal contractAmount; /** * 仿¬¾æè¿° */ @ApiModelProperty("仿¬¾æè¿°") private String paymentDescription; /** * æ¹é å 容 */ @ApiModelProperty("æ¹é å 容") private String renContent; @Schema(description = "é¨é¨id") @TableField(fill = FieldFill.INSERT) private Long deptId; } src/main/java/com/ruoyi/basic/service/BusinessDescriptionService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,16 @@ package com.ruoyi.basic.service; import com.ruoyi.basic.pojo.BusinessDescription; import com.baomidou.mybatisplus.extension.service.IService; /** * <p> * åæºå®¢æ·æè¿° æå¡ç±» * </p> * * @author è¯å¯¼è½¯ä»¶ï¼æ±èï¼æéå ¬å¸ * @since 2026-05-07 04:46:21 */ public interface BusinessDescriptionService extends IService<BusinessDescription> { } src/main/java/com/ruoyi/basic/service/BusinessOpportunityService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,37 @@ package com.ruoyi.basic.service; 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.basic.dto.BusinessDescriptionDto; import com.ruoyi.basic.dto.BusinessOpportunityDto; import com.ruoyi.basic.pojo.Area; import com.ruoyi.basic.pojo.BusinessOpportunity; import com.ruoyi.framework.web.domain.R; import java.util.List; /** * <p> * åæºç®¡ç æå¡ç±» * </p> * * @author è¯å¯¼è½¯ä»¶ï¼æ±èï¼æéå ¬å¸ * @since 2026-05-07 04:46:10 */ public interface BusinessOpportunityService extends IService<BusinessOpportunity> { IPage<BusinessOpportunityDto> listPage(Page page, BusinessOpportunityDto businessOpportunityDto); List<Area> getProvinceList(); List<Area> getCityList(Integer provinceId); R add(BusinessOpportunityDto businessOpportunity); R addDescription(BusinessDescriptionDto businessDescription); boolean updateBusinessOpportunityById(BusinessOpportunityDto businessOpportunity); boolean delete(List<Long> ids); } src/main/java/com/ruoyi/basic/service/impl/BusinessDescriptionServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,20 @@ package com.ruoyi.basic.service.impl; import com.ruoyi.basic.pojo.BusinessDescription; import com.ruoyi.basic.mapper.BusinessDescriptionMapper; import com.ruoyi.basic.service.BusinessDescriptionService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** * <p> * åæºå®¢æ·æè¿° æå¡å®ç°ç±» * </p> * * @author è¯å¯¼è½¯ä»¶ï¼æ±èï¼æéå ¬å¸ * @since 2026-05-07 04:46:21 */ @Service public class BusinessDescriptionServiceImpl extends ServiceImpl<BusinessDescriptionMapper, BusinessDescription> implements BusinessDescriptionService { } src/main/java/com/ruoyi/basic/service/impl/BusinessOpportunityServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,157 @@ package com.ruoyi.basic.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; 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.basic.dto.BusinessDescriptionDto; import com.ruoyi.basic.dto.BusinessOpportunityDto; import com.ruoyi.basic.dto.StorageBlobDTO; import com.ruoyi.basic.dto.StorageBlobVO; import com.ruoyi.basic.enums.ApplicationTypeEnum; import com.ruoyi.basic.enums.RecordTypeEnum; import com.ruoyi.basic.mapper.AreaMapper; import com.ruoyi.basic.mapper.BusinessDescriptionMapper; import com.ruoyi.basic.mapper.BusinessOpportunityMapper; import com.ruoyi.basic.pojo.Area; import com.ruoyi.basic.pojo.BusinessDescription; import com.ruoyi.basic.pojo.BusinessOpportunity; import com.ruoyi.basic.service.BusinessOpportunityService; import com.ruoyi.basic.utils.FileUtil; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.framework.security.LoginUser; import com.ruoyi.framework.web.domain.R; import com.ruoyi.project.system.domain.SysNotice; import com.ruoyi.project.system.mapper.SysNoticeMapper; import com.ruoyi.project.system.service.impl.UnipushService; import lombok.RequiredArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; /** * <p> * åæºç®¡ç æå¡å®ç°ç±» * </p> * * @author è¯å¯¼è½¯ä»¶ï¼æ±èï¼æéå ¬å¸ * @since 2026-05-07 04:46:10 */ @Service @RequiredArgsConstructor public class BusinessOpportunityServiceImpl extends ServiceImpl<BusinessOpportunityMapper, BusinessOpportunity> implements BusinessOpportunityService { private final BusinessOpportunityMapper businessOpportunityMapper; private final AreaMapper areaMapper; private final BusinessDescriptionMapper businessDescriptionMapper; private final UnipushService unipushService; private final SysNoticeMapper sysNoticeMapper; private final FileUtil fileUtil; @Override public IPage<BusinessOpportunityDto> listPage(Page page, BusinessOpportunityDto businessOpportunityDto) { LoginUser loginUser = SecurityUtils.getLoginUser(); IPage<BusinessOpportunityDto> businessOpportunityDtoIPage = businessOpportunityMapper.listPage(page, businessOpportunityDto); businessOpportunityDtoIPage.getRecords().forEach(item -> { item.setBusinessCommonFiles(fileUtil.getStorageBlobVOsByApplicationAndRecordTypeAndRecordId(ApplicationTypeEnum.FILE, RecordTypeEnum.BUSINESS_OPPORTUNITY, item.getId())); item.setBusinessDescription(businessDescriptionMapper.selectList(Wrappers.lambdaQuery(BusinessDescription.class) .eq(BusinessDescription::getBusinessOpportunityId, item.getId()) .orderByDesc(BusinessDescription::getCreateTime))); }); return businessOpportunityDtoIPage; } @Override public List<Area> getProvinceList() { return areaMapper.selectList(new LambdaQueryWrapper<Area>().eq(Area::getLevel,1).eq(Area::getParentId,0)); } @Override public List<Area> getCityList(Integer provinceId) { return areaMapper.selectList(new LambdaQueryWrapper<Area>().eq(Area::getLevel,2).eq(Area::getParentId,provinceId)); } @Override public R add(BusinessOpportunityDto businessOpportunity) { this.save(businessOpportunity); BusinessDescription businessDescription = new BusinessDescription(); BeanUtils.copyProperties(businessOpportunity, businessDescription); businessDescription.setBusinessOpportunityId(businessOpportunity.getId()); // è¿ç§»ä¸´æ¶æä»¶å°æ£å¼æä»¶ // commonFileService.migrateTempFilesToFormal(businessOpportunity.getId(), businessOpportunity.getTempFileIds()); ArrayList<StorageBlobDTO> storageBlobDTOS = new ArrayList<>(); for (StorageBlobVO businessCommonFile : businessOpportunity.getBusinessCommonFiles()) { StorageBlobDTO storageBlobDTO = new StorageBlobDTO(); BeanUtils.copyProperties(businessCommonFile, storageBlobDTO); storageBlobDTOS.add(storageBlobDTO); } fileUtil.saveStorageAttachment(ApplicationTypeEnum.FILE, RecordTypeEnum.BUSINESS_OPPORTUNITY, businessOpportunity.getId(), storageBlobDTOS); // æ¨éæ¶æ¯ List<SysNotice> sysNoticeList = new ArrayList<>(); SysNotice sysNotice = new SysNotice(); sysNotice.setNoticeTitle("ä¸å¡å "+ businessOpportunity.getEntryPerson()); sysNotice.setNoticeContent("æ°å¢å®¢æ· " + businessOpportunity.getCustomerName() + " éé¢ "+ businessOpportunity.getContractAmount()); sysNotice.setNoticeType("1"); sysNotice.setStatus("0"); sysNotice.setSenderId(SecurityUtils.getUserId()); // æ¨éç»è° éè¦å¾ å® sysNotice.setConsigneeId(105L); sysNotice.setAppJumpPath("pages/opportunityManagement/index"); sysNoticeMapper.insert(sysNotice); sysNoticeList.add(sysNotice); unipushService.sendClientMessage(sysNoticeList); return businessDescriptionMapper.insert(businessDescription) > 0 ? R.ok() : R.fail(); } @Override public R addDescription(BusinessDescriptionDto businessDescription) { // è¿ç§»ä¸´æ¶æä»¶å°æ£å¼æä»¶ BusinessOpportunity byId = this.getById(businessDescription.getBusinessOpportunityId()); if(byId != null){ byId.setStatus(businessDescription.getStatus()); this.updateById(byId); // æ¨éæ¶æ¯ List<SysNotice> sysNoticeList = new ArrayList<>(); SysNotice sysNotice = new SysNotice(); sysNotice.setNoticeTitle("ä¸å¡å "+ businessDescription.getEntryPerson()); sysNotice.setNoticeContent("å®¢æ· " + byId.getCustomerName() + " éé¢ "+ byId.getContractAmount() + " ç¶æ " + businessDescription.getStatus()); sysNotice.setNoticeType("1"); sysNotice.setStatus("0"); sysNotice.setSenderId(SecurityUtils.getUserId()); sysNotice.setConsigneeId(105L); sysNotice.setAppJumpPath("pages/opportunityManagement/index"); sysNoticeMapper.insert(sysNotice); sysNoticeList.add(sysNotice); unipushService.sendClientMessage(sysNoticeList); } int insert = businessDescriptionMapper.insert(businessDescription); fileUtil.saveStorageAttachment(ApplicationTypeEnum.FILE, RecordTypeEnum.BUSINESS_DESCRIPTION, businessDescription.getBusinessOpportunityId(), businessDescription.getStorageBlobDTOS()); return insert > 0 ? R.ok() : R.fail(); } @Override public boolean updateBusinessOpportunityById(BusinessOpportunityDto businessOpportunity) { ArrayList<StorageBlobDTO> storageBlobDTOS = new ArrayList<>(); for (StorageBlobVO businessCommonFile : businessOpportunity.getBusinessCommonFiles()) { StorageBlobDTO storageBlobDTO = new StorageBlobDTO(); BeanUtils.copyProperties(businessCommonFile, storageBlobDTO); storageBlobDTOS.add(storageBlobDTO); } fileUtil.saveStorageAttachment(ApplicationTypeEnum.FILE, RecordTypeEnum.BUSINESS_OPPORTUNITY, businessOpportunity.getId(), storageBlobDTOS); return this.updateById(businessOpportunity); } @Override public boolean delete(List<Long> ids) { for (Long id : ids) { fileUtil.deleteStorageAttachmentsByApplicationAndRecordTypeAndRecordId(ApplicationTypeEnum.FILE, RecordTypeEnum.BUSINESS_OPPORTUNITY, id); } return this.removeBatchByIds(ids); } } src/main/java/com/ruoyi/common/enums/FileNameType.java
@@ -17,7 +17,8 @@ INSPECTION_PRODUCTION_BEFORE(10), INSPECTION_PRODUCTION_AFTER(11), INSPECTION(12),//å·¡æ£ ç产å APP(13); APP(13), BUSINESS_OPPORTUNITY(14); private final int value; src/main/resources/mapper/basic/BusinessDescriptionMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,20 @@ <?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.basic.mapper.BusinessDescriptionMapper"> <!-- éç¨æ¥è¯¢æ å°ç»æ --> <resultMap id="BaseResultMap" type="com.ruoyi.basic.pojo.BusinessDescription"> <id column="id" property="id" /> <result column="business_opportunity_id" property="businessOpportunityId" /> <result column="description" property="description" /> <result column="entry_person" property="entryPerson" /> <result column="entry_date" property="entryDate" /> <result column="status" property="status" /> <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" /> </resultMap> </mapper> src/main/resources/mapper/basic/BusinessOpportunityMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,58 @@ <?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.basic.mapper.BusinessOpportunityMapper"> <!-- éç¨æ¥è¯¢æ å°ç»æ --> <resultMap id="BaseResultMap" type="com.ruoyi.basic.pojo.BusinessOpportunity"> <id column="id" property="id" /> <result column="status" property="status" /> <result column="province" property="province" /> <result column="city" property="city" /> <result column="customer_name" property="customerName" /> <result column="business_source" property="businessSource" /> <result column="entry_date" property="entryDate" /> <result column="entry_person" property="entryPerson" /> <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="information_state" property="informationState" /> <result column="main_business_revenue" property="mainBusinessRevenue" /> <result column="main_products" property="mainProducts" /> <result column="customer_scale" property="customerScale" /> <result column="industry" property="industry" /> <result column="contract_amount" property="contractAmount" /> <result column="payment_description" property="paymentDescription" /> <result column="ren_content" property="renContent" /> </resultMap> <select id="listPage" resultType="com.ruoyi.basic.dto.BusinessOpportunityDto"> select * from business_opportunity bo <where> <if test="businessOpportunityDto.customerName != null"> and bo.customer_name = #{businessOpportunityDto.customerName} </if> <if test="businessOpportunityDto.city != null"> and bo.city = #{businessOpportunityDto.city} </if> <if test="businessOpportunityDto.entryPerson != null"> and bo.entry_person = #{businessOpportunityDto.entryPerson} </if> <if test="businessOpportunityDto.status != null"> and bo.status = #{businessOpportunityDto.status} </if> <if test="businessOpportunityDto.customerName != null"> and bo.customer_name = #{businessOpportunityDto.customerName} </if> <if test="businessOpportunityDto.entryDateStart != null"> and bo.entry_date >= STR_TO_DATE(#{businessOpportunityDto.entryDateStart}, '%Y-%m-%d') </if> <if test="businessOpportunityDto.entryDateEnd != null"> and bo.entry_date <= STR_TO_DATE(#{businessOpportunityDto.entryDateEnd}, '%Y-%m-%d') </if> </where> order by bo.entry_date desc </select> </mapper>