springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/ComActWarehouseDonatesApi.java
New file @@ -0,0 +1,123 @@ package com.panzhihua.applets.api; import static java.util.Objects.isNull; import static java.util.Objects.nonNull; import javax.annotation.Resource; import javax.validation.Valid; import javax.validation.constraints.NotNull; import org.hibernate.validator.constraints.Length; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import com.panzhihua.common.constants.HttpStatus; import com.panzhihua.common.controller.BaseController; import com.panzhihua.common.model.dtos.community.warehouse.ComActWarehouseDonatesDTO; import com.panzhihua.common.model.dtos.community.warehouse.PageDonatesDTO; import com.panzhihua.common.model.vos.LoginUserInfoVO; import com.panzhihua.common.model.vos.R; import com.panzhihua.common.model.vos.community.warehouse.ComActWarehouseDonatesVO; import com.panzhihua.common.service.community.CommunityService; import com.panzhihua.common.validated.AddGroup; import com.panzhihua.common.validated.PutGroup; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; /** * @title: ComActWarehouseApi * @projectName: 成都呐喊信息技术有限公司-智慧社区项目 * @description: 爱心义仓捐赠小程序相关接口 * @author: hans * @date: 2021/10/11 15:45 */ @Slf4j @Api(tags = {"爱心义仓捐赠相关"}) @RestController @RequestMapping("/warehouse/donates") public class ComActWarehouseDonatesApi extends BaseController { @Resource private CommunityService communityService; @ApiOperation(value = "分页查询捐赠物品", response = ComActWarehouseDonatesVO.class) @PostMapping("/page") public R pageDonates(@RequestBody PageDonatesDTO pageDonatesDTO) { LoginUserInfoVO loginUserInfo = getLoginUserInfoSureNoLogin(); Integer isWhich = pageDonatesDTO.getIsWhich(); if (isNull(isWhich)) { return R.fail("缺少isWhich参数"); } if (isNull(pageDonatesDTO.getCommunityId())) { return R.fail("社区id不能为空"); } if (isNull(loginUserInfo) && isWhich.intValue() != 3) { return R.fail(HttpStatus.UNAUTHORIZED, "未登录"); } if (isWhich.intValue() == 2 && loginUserInfo.getIsCommunityWorker().intValue() != 1) { return R.fail("非社区工作人员"); } if (nonNull(loginUserInfo)) { pageDonatesDTO.setUserId(loginUserInfo.getUserId()); } return communityService.pageDonates(pageDonatesDTO); } @ApiOperation(value = "新增物品捐赠") @PostMapping("/add") public R addDonates(@RequestBody @Validated(AddGroup.class) ComActWarehouseDonatesDTO comActWarehouseDonatesDTO) { Long userId = getUserId(); comActWarehouseDonatesDTO.setCommunityId(getCommunityId()); comActWarehouseDonatesDTO.setRegisterBy(userId); comActWarehouseDonatesDTO.setUserId(userId); return communityService.addDonates(comActWarehouseDonatesDTO); } @ApiOperation(value = "查看物品捐赠详情", response = ComActWarehouseDonatesVO.class) @ApiImplicitParam(name = "isWhich", value = "1.个人中心捐赠详情 2.捐赠物品管理详情 3.爱心义仓捐赠列表详情", required = true) @GetMapping("/get") public R getDonates(@RequestParam("donatesId") Long donatesId, @RequestParam("isWhich") Integer isWhich) { LoginUserInfoVO loginUserInfo = getLoginUserInfoSureNoLogin(); if (isNull(isWhich)) { return R.fail("缺少isWhich参数"); } if (isNull(loginUserInfo) && isWhich.intValue() != 3) { return R.fail(HttpStatus.UNAUTHORIZED, "未登录"); } if (isWhich.intValue() == 2 && loginUserInfo.getIsCommunityWorker().intValue() != 1) { return R.fail("非社区工作人员"); } Long userId = null; if (nonNull(loginUserInfo)) { userId = loginUserInfo.getUserId(); } return communityService.getDonates(donatesId, isWhich, userId); } @ApiOperation(value = "捐赠物品签收") @PostMapping("/signing") public R signingDonates(@RequestBody @Validated(PutGroup.class) ComActWarehouseDonatesDTO comActWarehouseDonatesDTO) { LoginUserInfoVO loginUserInfo = getLoginUserInfo(); Integer isCommunityWorker = loginUserInfo.getIsCommunityWorker(); if (isCommunityWorker.intValue() == 2) { return R.fail("非社区工作人员"); } comActWarehouseDonatesDTO.setSigningBy(loginUserInfo.getUserId()); return communityService.signingDonates(comActWarehouseDonatesDTO); } @ApiOperation(value = "用户取消捐赠") @GetMapping("/cancel") public R cancelDonates(@RequestParam("donatesId") Long donatesId) { return communityService.cancelDonates(donatesId, getUserId()); } } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/listen/WarehouseDonatesExcelListen.java
New file @@ -0,0 +1,72 @@ package com.panzhihua.common.listen; import static java.util.Objects.isNull; import java.util.ArrayList; import java.util.List; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; import com.panzhihua.common.exceptions.ServiceException; import com.panzhihua.common.model.vos.R; import com.panzhihua.common.model.vos.community.warehouse.WarehouseDonatesExcelVO; import com.panzhihua.common.service.community.CommunityService; import com.panzhihua.common.utlis.StringUtils; import lombok.extern.slf4j.Slf4j; /** * @title: WarehouseDonatesExcelListen * @projectName: 成都呐喊信息技术有限公司-智慧社区项目 * @description: 爱心义仓物品捐赠导入监听 * @author: hans * @date: 2021/10/09 17:45 */ @Slf4j public class WarehouseDonatesExcelListen extends AnalysisEventListener<WarehouseDonatesExcelVO> { private static final int BATCH_COUNT = 3000; private CommunityService communityService; private Long communityId; private Long registerBy; private List<WarehouseDonatesExcelVO> list = new ArrayList<>(); public WarehouseDonatesExcelListen(CommunityService communityService, Long communityId, Long registerBy) { this.communityService = communityService; this.communityId = communityId; this.registerBy = registerBy; } @Override public void invoke(WarehouseDonatesExcelVO warehouseDonatesExcelVO, AnalysisContext analysisContext) { if (StringUtils.isEmpty(warehouseDonatesExcelVO.getItem())) { throw new ServiceException("捐赠物品名称不可为空"); } Integer quantity = warehouseDonatesExcelVO.getQuantity(); if (isNull(quantity) || quantity <= 0) { throw new ServiceException("捐赠数量有误"); } if (StringUtils.isEmpty(warehouseDonatesExcelVO.getName())) { warehouseDonatesExcelVO.setIsAnonymous("是"); } warehouseDonatesExcelVO.setCommunityId(this.communityId); warehouseDonatesExcelVO.setStatus(2); warehouseDonatesExcelVO.setSurplusQuantity(quantity); warehouseDonatesExcelVO.setRegisterBy(this.registerBy); warehouseDonatesExcelVO.setSigningBy(this.registerBy); list.add(warehouseDonatesExcelVO); // 达到BATCH_COUNT了,需要去存储一次数据库,防止数据几万条数据在内存,容易OOM if (list.size() >= BATCH_COUNT) { doAfterAllAnalysed(analysisContext); list.clear(); } } @Override public void doAfterAllAnalysed(AnalysisContext analysisContext) { R r = this.communityService.batchImportWarehouseDonates(list); if (!R.isOk(r)) { throw new ServiceException(r.getMsg()); } } } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/warehouse/ComActWarehouseDonatesDTO.java
New file @@ -0,0 +1,74 @@ package com.panzhihua.common.model.dtos.community.warehouse; import javax.validation.constraints.Min; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import javax.validation.constraints.Pattern; import org.hibernate.validator.constraints.Length; import com.panzhihua.common.validated.AddGroup; import com.panzhihua.common.validated.PutGroup; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * @title: ComActWarehouseDonatesDTO * @projectName: 成都呐喊信息技术有限公司-智慧社区项目 * @description: 新增/编辑物品捐赠 * @author: hans * @date: 2021/10/11 14:18 */ @Data @ApiModel("新增/编辑物品捐赠") public class ComActWarehouseDonatesDTO { @ApiModelProperty("捐赠物品ID") @NotNull(groups = {PutGroup.class}, message = "捐赠物品ID不能为空") private Long id; @ApiModelProperty("捐赠用户") @Length(groups = {AddGroup.class}, max = 10, message = "捐赠用户最多支持10个字符") private String name; @ApiModelProperty("联系电话") @Pattern(groups = {AddGroup.class}, message = "联系电话格式错误", regexp = "^(13[0-9]|14[01456879]|15[0-3,5-9]|16[2567]|17[0-8]|18[0-9]|19[0-3,5-9])\\d{8}$") private String phone; @ApiModelProperty("捐赠物品") @NotBlank(groups = {AddGroup.class}, message = "捐赠物品不能为空") @Length(groups = {AddGroup.class}, max = 10, message = "捐赠物品名称最多支持10个字符") private String item; @ApiModelProperty("捐赠数量") @NotNull(groups = {AddGroup.class}, message = "捐赠数量不能为空") @Min(1) private Integer quantity; @ApiModelProperty("物品图片") @NotBlank(groups = {AddGroup.class}, message = "物品图片不能为空") private String image; @ApiModelProperty("匿名捐赠(1.是 2.否)") @NotNull(groups = {AddGroup.class}, message = "是否匿名捐赠不能为空") @Length(groups = {AddGroup.class}, min = 1, max = 2, message = "匿名捐赠值只能为1or2") private Integer isAnonymous; @ApiModelProperty("留言信息") @Length(groups = {AddGroup.class}, max = 100, message = "留言信息最多支持100个字符") private String message; @ApiModelProperty(value = "社区id", hidden = true) private Long communityId; @ApiModelProperty(value = "登记人", hidden = true) private Long registerBy; @ApiModelProperty(value = "捐赠人用户绑定id", hidden = true) private Long userId; @ApiModelProperty(value = "签收人", hidden = true) private Long signingBy; } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/warehouse/ExportDonatesDTO.java
New file @@ -0,0 +1,41 @@ package com.panzhihua.common.model.dtos.community.warehouse; import java.util.Date; import java.util.List; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * @title: ExportDonatesDTO * @projectName: 成都呐喊信息技术有限公司-智慧社区项目 * @description: 捐赠物品导出请求参数 * @author: hans * @date: 2021/10/11 11:09 */ @Data @ApiModel("捐赠物品导出请求参数") public class ExportDonatesDTO { @ApiModelProperty(value = "批量勾选时传参数组") private List<Long> ids; @ApiModelProperty("关键词") private String keyword; @ApiModelProperty("捐赠状态(1.待签收 2.已签收 3.已取消)") private Integer status; @ApiModelProperty("是否匿名捐赠(1.是 2.否)") private Integer isAnonymous; @ApiModelProperty("签收时间-起") private Date signingAtBegin; @ApiModelProperty("签收时间-止") private Date signingAtEnd; @ApiModelProperty(value = "社区id", hidden = true) private Long communityId; } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/warehouse/PageDonatesDTO.java
New file @@ -0,0 +1,57 @@ package com.panzhihua.common.model.dtos.community.warehouse; import java.util.Date; import javax.validation.constraints.Min; import javax.validation.constraints.NotNull; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * @title: PageDonatesDTO * @projectName: 成都呐喊信息技术有限公司-智慧社区项目 * @description: 分页查询捐赠物品请求参数 * @author: hans * @date: 2021/10/11 13:56 */ @Data @ApiModel("分页查询捐赠物品请求参数") public class PageDonatesDTO { @ApiModelProperty("关键词") private String keyword; @ApiModelProperty("捐赠状态(1.待签收 2.已签收 3.已取消)") private Integer status; @ApiModelProperty("是否匿名捐赠(1.是 2.否)") private Integer isAnonymous; @ApiModelProperty("签收时间-起") private Date signingAtBegin; @ApiModelProperty("签收时间-止") private Date signingAtEnd; @ApiModelProperty("小程序使用,1.个人中心捐赠记录 2.捐赠物品管理 3.爱心义仓捐赠列表") private Integer isWhich; @ApiModelProperty(value = "社区id") private Long communityId; @ApiModelProperty(value = "分页-当前页数", example = "1") @NotNull(message = "分页参数不能为空") @Min(value = 1) private Long pageNum; @ApiModelProperty(value = "分页-每页记录数", example = "10") @NotNull(message = "分页参数不能为空") @Min(value = 1) private Long pageSize; @ApiModelProperty(value = "当前访问用户", hidden = true) private Long userId; } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/LoginUserInfoVO.java
@@ -181,4 +181,7 @@ @ApiModelProperty("是否四长四员 1.是 2.否") private Integer isFourMember; @ApiModelProperty("是否社区工作人员 1.是 2.否") private Integer isCommunityWorker; } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/warehouse/ComActWarehouseDonatesVO.java
New file @@ -0,0 +1,82 @@ package com.panzhihua.common.model.vos.community.warehouse; import java.util.Date; import java.util.List; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonIgnore; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * @title: ComActWarehouseDonatesVO * @projectName: 成都呐喊信息技术有限公司-智慧社区项目 * @description: 爱心义仓/物品捐赠信息 * @author: hans * @date: 2021/10/11 14:06 */ @Data @ApiModel("爱心义仓/物品捐赠信息") public class ComActWarehouseDonatesVO { @ApiModelProperty("捐赠物品id") private Long id; @ApiModelProperty("捐赠人") private String name; @ApiModelProperty("联系电话") private String phone; @ApiModelProperty("捐赠物品") private String item; @ApiModelProperty("物品图片") private String image; @ApiModelProperty("捐赠数量") private Integer quantity; @ApiModelProperty("剩余数量") private Integer surplusQuantity; @ApiModelProperty("是否匿名(1.是 2.否)") private Integer isAnonymous; @ApiModelProperty("留言信息") private String message; @ApiModelProperty("物品登记时间/捐赠时间") @JsonFormat(pattern = "HH:mm:ss", timezone = "GMT+8") private Date registerAt; @ApiModelProperty("物品签收时间") @JsonFormat(pattern = "HH:mm:ss", timezone = "GMT+8") private Date signingAt; @ApiModelProperty("捐赠状态(1.待签收 2.已签收 3.已取消)") private Integer status; @ApiModelProperty("签收人") private String signingBy; @ApiModelProperty("物品捐赠操作记录") private List<ComActWarehouseOperationVO> operationList; @ApiModelProperty("捐赠用户") @JsonIgnore private Long userId; public interface isAnonymous { int yes = 1; int no = 2; } public interface status { int dqs = 1; int yqs = 2; int yqx = 3; } } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/warehouse/ComActWarehouseOperationVO.java
New file @@ -0,0 +1,35 @@ package com.panzhihua.common.model.vos.community.warehouse; import java.util.Date; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * @title: ComActWarehouseOperationVO * @projectName: 成都呐喊信息技术有限公司-智慧社区项目 * @description: 爱心义仓操作记录vo * @author: hans * @date: 2021/10/11 16:32 */ @Data @ApiModel("爱心义仓操作记录vo") public class ComActWarehouseOperationVO { @ApiModelProperty(value = "操作记录id") private Integer id; @ApiModelProperty(value = "物品id") private Integer goodsId; @ApiModelProperty(value = "操作内容") private String content; @ApiModelProperty(value = "操作时间") private Date createTime; @ApiModelProperty(value = "操作人") private Integer userId; } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/warehouse/DonatesStatisticsVO.java
New file @@ -0,0 +1,44 @@ package com.panzhihua.common.model.vos.community.warehouse; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * @title: DonatesStatisticsVO * @projectName: 成都呐喊信息技术有限公司-智慧社区项目 * @description: 爱心义仓/物品捐赠统计信息 * @author: hans * @date: 2021/10/12 15:56 */ @Data @ApiModel("爱心义仓/物品捐赠统计信息") public class DonatesStatisticsVO { @ApiModelProperty("累计物品数量") private Integer totalInc; @ApiModelProperty("当前剩余物品") private Integer surplus; @ApiModelProperty("今日新增") private Integer dayInc; @ApiModelProperty("本月新增") private Integer mothInc; @ApiModelProperty("本年新增") private Integer yearInc; @ApiModelProperty("累计领用物品") private Integer totalDec; @ApiModelProperty("今日领用") private Integer dayDec; @ApiModelProperty("本月领用") private Integer mothDec; @ApiModelProperty("本年领用") private Integer yearDec; } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/warehouse/ExportDonatesVO.java
New file @@ -0,0 +1,72 @@ package com.panzhihua.common.model.vos.community.warehouse; import static java.util.Objects.nonNull; import java.util.Date; import com.alibaba.excel.annotation.ExcelProperty; import lombok.Data; /** * @title: ExportDonatesVO * @projectName: 成都呐喊信息技术有限公司-智慧社区项目 * @description: 爱心义仓捐赠物品导出VO * @author: hans * @date: 2021/10/11 11:20 */ @Data public class ExportDonatesVO { private Long id; @ExcelProperty("捐赠用户") private String name; @ExcelProperty("联系电话") private String phone; @ExcelProperty("捐赠物品") private String item; @ExcelProperty("捐赠数量") private Integer quantity; @ExcelProperty("剩余数量") private Integer surplusQuantity; @ExcelProperty("匿名捐赠") private String isAnonymous; @ExcelProperty("留言信息") private String message; @ExcelProperty("物品登记时间") private Date registerAt; @ExcelProperty("物品签收时间") private Date signingAt; @ExcelProperty("状态") private String status; public void setIsAnonymous(String isAnonymous) { this.isAnonymous = nonNull(isAnonymous) && isAnonymous.equals("1") ? "是" : "否"; } public void setStatus(String status) { if (nonNull(status)) { switch (status) { case "1": this.status = "待签收"; break; case "2": this.status = "已签收"; break; default: this.status = "已取消"; break; } } } } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/warehouse/WarehouseDonatesExcelVO.java
New file @@ -0,0 +1,71 @@ package com.panzhihua.common.model.vos.community.warehouse; import java.io.Serializable; import java.util.Date; import com.alibaba.excel.annotation.ExcelProperty; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * @title: WarehouseDonatesExcelVO * @projectName: 成都呐喊信息技术有限公司-智慧社区项目 * @description: 捐赠物品ExcelVO * @author: hans * @date: 2021/10/09 17:42 */ @Data public class WarehouseDonatesExcelVO implements Serializable { private static final long serialVersionUID = -7026869907781559301L; @ExcelProperty(value = "捐赠用户", index = 0) private String name; @ExcelProperty(value = "联系电话", index = 1) private String phone; @ExcelProperty(value = "捐赠物品", index = 2) private String item; @ExcelProperty(value = "捐赠数量", index = 3) private Integer quantity; @ExcelProperty(value = "匿名捐赠", index = 4) private String isAnonymous; @ExcelProperty(value = "留言信息", index = 5) private String message; @ExcelProperty(value = "物品签收时间", index = 6) @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date signingAt; /** * 剩余数量 */ private Integer surplusQuantity; /** * 捐赠状态 */ private Integer status; /** * 社区id */ private Long communityId; /** * 物品登记时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date registerAt; /** * 登记人 */ private Long registerBy; /** * 签收人 */ private Long signingBy; } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/community/CommunityService.java
@@ -2,25 +2,6 @@ import java.util.List; import com.panzhihua.common.model.dtos.community.GetIdentityEidTokenDTO; import com.panzhihua.common.model.dtos.community.*; import com.panzhihua.common.model.dtos.community.cluster.PageClusterMemberDto; import com.panzhihua.common.model.dtos.community.cluster.admin.*; import com.panzhihua.common.model.dtos.property.CommonPage; import com.panzhihua.common.model.dtos.community.discuss.ComActDiscussDetailDTO; import com.panzhihua.common.model.dtos.community.discuss.ComActDiscussPublishResultDTO; import com.panzhihua.common.model.dtos.community.elder.ElderAuthStatisticHeaderDTO; import com.panzhihua.common.model.dtos.community.elder.PageElderAuthStatisticDTO; import com.panzhihua.common.model.dtos.community.elder.PagePensionAuthStatisticDTO; import com.panzhihua.common.model.dtos.community.elder.SignElderAuthStatisticDTO; import com.panzhihua.common.model.dtos.neighbor.*; import com.panzhihua.common.model.vos.community.*; import com.panzhihua.common.model.vos.community.cluster.admin.ComClusterMemberExcelVO; import com.panzhihua.common.model.vos.community.warehouse.ComActWarehouseApplyVO; import com.panzhihua.common.model.vos.community.warehouse.ComActWarehouseBaseVO; import com.panzhihua.common.model.vos.community.warehouse.QRCodeVO; import io.swagger.annotations.ApiOperation; import com.panzhihua.common.model.vos.community.*; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; @@ -55,6 +36,8 @@ import com.panzhihua.common.model.dtos.community.ComMngPopulationEditDTO; import com.panzhihua.common.model.dtos.community.ComMngPopulationHouseAdminDTO; import com.panzhihua.common.model.dtos.community.ComMngPopulationHouseEditAdminDTO; import com.panzhihua.common.model.dtos.community.ComMngPopulationHouseInsertAdminDTO; import com.panzhihua.common.model.dtos.community.ComMngPopulationHouseUserVO; import com.panzhihua.common.model.dtos.community.ComMngPopulationTagDTO; import com.panzhihua.common.model.dtos.community.ComMngRealCompanyBelongsDTO; import com.panzhihua.common.model.dtos.community.ComOpsHouseDTO; @@ -119,6 +102,13 @@ import com.panzhihua.common.model.dtos.community.bigscreen.work.ScreenActActivityPeopleListDTO; import com.panzhihua.common.model.dtos.community.bigscreen.work.ScreenDiscussListDTO; import com.panzhihua.common.model.dtos.community.bigscreen.work.ScreenMicroListDTO; import com.panzhihua.common.model.dtos.community.cluster.PageClusterMemberDto; import com.panzhihua.common.model.dtos.community.cluster.admin.AddClusterAdminDto; import com.panzhihua.common.model.dtos.community.cluster.admin.AddClusterMemberAdminDto; import com.panzhihua.common.model.dtos.community.cluster.admin.EditClusterAdminDto; import com.panzhihua.common.model.dtos.community.cluster.admin.EditClusterMemberAdminDto; import com.panzhihua.common.model.dtos.community.cluster.admin.PageClusterAdminDto; import com.panzhihua.common.model.dtos.community.cluster.admin.PageClusterMemberAdminDto; import com.panzhihua.common.model.dtos.community.convenient.ConvenientMerchantDTO; import com.panzhihua.common.model.dtos.community.convenient.ConvenientProductCategoryDTO; import com.panzhihua.common.model.dtos.community.convenient.ConvenientProductDTO; @@ -171,6 +161,9 @@ import com.panzhihua.common.model.dtos.community.wallet.PageComActWalletAdminDTO; import com.panzhihua.common.model.dtos.community.wallet.PageComActWalletTradeAdminDTO; import com.panzhihua.common.model.dtos.community.wallet.PageComActWalletTradeDTO; import com.panzhihua.common.model.dtos.community.warehouse.ComActWarehouseDonatesDTO; import com.panzhihua.common.model.dtos.community.warehouse.ExportDonatesDTO; import com.panzhihua.common.model.dtos.community.warehouse.PageDonatesDTO; import com.panzhihua.common.model.dtos.elders.ComEldersAuthGetResultDTO; import com.panzhihua.common.model.dtos.elders.ComEldersAuthPageDTO; import com.panzhihua.common.model.dtos.elders.ComEldersAuthUserAddAppDTO; @@ -236,14 +229,77 @@ import com.panzhihua.common.model.vos.DictionaryVO; import com.panzhihua.common.model.vos.R; import com.panzhihua.common.model.vos.SystemmanagementConfigVO; import com.panzhihua.common.model.vos.community.ActivitySignVO; import com.panzhihua.common.model.vos.community.BatchhouseVO; import com.panzhihua.common.model.vos.community.ComActActEvaluateVO; import com.panzhihua.common.model.vos.community.ComActActRegistVO; import com.panzhihua.common.model.vos.community.ComActActivityVO; import com.panzhihua.common.model.vos.community.ComActCommiteeVO; import com.panzhihua.common.model.vos.community.ComActDynVO; import com.panzhihua.common.model.vos.community.ComActEasyPhotoVO; import com.panzhihua.common.model.vos.community.ComActFourMemberVO; import com.panzhihua.common.model.vos.community.ComActMessageBackVO; import com.panzhihua.common.model.vos.community.ComActMessageVO; import com.panzhihua.common.model.vos.community.ComActMicroWishVO; import com.panzhihua.common.model.vos.community.ComActReserveCommitVO; import com.panzhihua.common.model.vos.community.ComActSocialOrgVO; import com.panzhihua.common.model.vos.community.ComActVO; import com.panzhihua.common.model.vos.community.ComActWorkGuideClassifyVO; import com.panzhihua.common.model.vos.community.ComActWorkGuideVO; import com.panzhihua.common.model.vos.community.ComCvtServeExcelVO; import com.panzhihua.common.model.vos.community.ComElderAuthRecordImportExcelVO; import com.panzhihua.common.model.vos.community.ComElderAuthRecordVO; import com.panzhihua.common.model.vos.community.ComEldersAuthElderlyDetailsVO; import com.panzhihua.common.model.vos.community.ComMngBuildingExcelVO; import com.panzhihua.common.model.vos.community.ComMngCarExcelVO; import com.panzhihua.common.model.vos.community.ComMngPopulationCorrectExcelVO; import com.panzhihua.common.model.vos.community.ComMngPopulationCultExcelVO; import com.panzhihua.common.model.vos.community.ComMngPopulationDisabilityExcelVO; import com.panzhihua.common.model.vos.community.ComMngPopulationDrugExcelVO; import com.panzhihua.common.model.vos.community.ComMngPopulationElderExcelVO; import com.panzhihua.common.model.vos.community.ComMngPopulationKeyExcelVO; import com.panzhihua.common.model.vos.community.ComMngPopulationLowSecurityExcelVO; import com.panzhihua.common.model.vos.community.ComMngPopulationMajorExcelVO; import com.panzhihua.common.model.vos.community.ComMngPopulationPensionExcelVO; import com.panzhihua.common.model.vos.community.ComMngPopulationRehabilitationExcelVO; import com.panzhihua.common.model.vos.community.ComMngPopulationSentenceExcelVO; import com.panzhihua.common.model.vos.community.ComMngPopulationServeExcelVO; import com.panzhihua.common.model.vos.community.ComMngPopulationVO; import com.panzhihua.common.model.vos.community.ComMngPopulationVeteransExcelVO; import com.panzhihua.common.model.vos.community.ComMngRealAssetsExcelVO; import com.panzhihua.common.model.vos.community.ComMngRealAssetsVO; import com.panzhihua.common.model.vos.community.ComMngRealCompanyExcelVO; import com.panzhihua.common.model.vos.community.ComMngRealCompanyVO; import com.panzhihua.common.model.vos.community.ComMngStructAreaVO; import com.panzhihua.common.model.vos.community.ComMngStructHouseVO; import com.panzhihua.common.model.vos.community.ComMngStructOtherBuildVO; import com.panzhihua.common.model.vos.community.ComMngVillageServeExcelVO; import com.panzhihua.common.model.vos.community.ComMngVillageVO; import com.panzhihua.common.model.vos.community.ComMngVolunteerMngVO; import com.panzhihua.common.model.vos.community.ComOpsHouseUndercarriageVO; import com.panzhihua.common.model.vos.community.ComOpsHouseVO; import com.panzhihua.common.model.vos.community.ComPensionAuthRecordImportExcelVO; import com.panzhihua.common.model.vos.community.ComPensionAuthRecordVO; import com.panzhihua.common.model.vos.community.ComPropertyVO; import com.panzhihua.common.model.vos.community.ComStreetVO; import com.panzhihua.common.model.vos.community.ComSwRotaExcelVO; import com.panzhihua.common.model.vos.community.EldersAuthDetailsVO; import com.panzhihua.common.model.vos.community.EldersAuthElderlyExcelVO; import com.panzhihua.common.model.vos.community.ResetComActMessageVO; import com.panzhihua.common.model.vos.community.SignactivityVO; import com.panzhihua.common.model.vos.community.bigscreen.BigScreenStatisticAgeGender; import com.panzhihua.common.model.vos.community.bigscreen.BigScreenStatisticPartyActivity; import com.panzhihua.common.model.vos.community.bigscreen.BigScreenStatisticPartyBuild; import com.panzhihua.common.model.vos.community.bigscreen.PartyBuildingMemberVO; import com.panzhihua.common.model.vos.community.cluster.admin.ComClusterMemberExcelVO; import com.panzhihua.common.model.vos.community.convenient.ConvenientMerchantVO; import com.panzhihua.common.model.vos.community.questnaire.EditComActQuestnaireVo; import com.panzhihua.common.model.vos.community.questnaire.QuestnaireVO; import com.panzhihua.common.model.vos.community.questnaire.UsersAnswerQuestnaireVO; import com.panzhihua.common.model.vos.community.warehouse.ComActWarehouseApplyVO; import com.panzhihua.common.model.vos.community.warehouse.ComActWarehouseBaseVO; import com.panzhihua.common.model.vos.community.warehouse.QRCodeVO; import com.panzhihua.common.model.vos.community.warehouse.WarehouseDonatesExcelVO; import com.panzhihua.common.model.vos.neighbor.AddNeighborCircleAdminVO; import com.panzhihua.common.model.vos.neighbor.ChangeCommentReplyStatusByAdminVO; import com.panzhihua.common.model.vos.neighbor.ChangeCommentStatusByAdminVO; @@ -6723,4 +6779,71 @@ */ @PostMapping("/comActWarehouseApply/export") public R comActWarehouseApplyExport(@RequestBody CommonPage commonPage); /** * 后台导入捐赠物品 * @param list * @return */ @PostMapping("/comActWarehouseDonates/import") R batchImportWarehouseDonates(@RequestBody List<WarehouseDonatesExcelVO> list); /** * 后台导出捐赠物品表格 * @param exportDonatesDTO * @return */ @PostMapping("/comActWarehouseDonates/donates/export") R exportDonates(@RequestBody ExportDonatesDTO exportDonatesDTO); /** * 分页查询捐赠物品 * @param pageDonatesDTO * @return */ @PostMapping("/comActWarehouseDonates/donates/page") R pageDonates(@RequestBody PageDonatesDTO pageDonatesDTO); /** * 新增物品捐赠 * @param comActWarehouseDonatesDTO * @return */ @PostMapping("/comActWarehouseDonates/donates/add") R addDonates(@RequestBody ComActWarehouseDonatesDTO comActWarehouseDonatesDTO); /** * 查看物品捐赠详情 * @param donatesId * @param isWhich * @param userId * @return */ @GetMapping("/comActWarehouseDonates/donates/get") R getDonates(@RequestParam("donatesId") Long donatesId, @RequestParam("isWhich") Integer isWhich, @RequestParam("userId") Long userId); /** * 捐赠物品后台签收 * @param comActWarehouseDonatesDTO * @return */ @PostMapping("/comActWarehouseDonates/donates/signing") R signingDonates(@RequestBody ComActWarehouseDonatesDTO comActWarehouseDonatesDTO); /** * 用户取消捐赠 * @param donatesId * @param currentUser * @return */ @GetMapping("/comActWarehouseDonates/donates/cancel") R cancelDonates(@RequestParam("donatesId") Long donatesId, @RequestParam("currentUser") Long currentUser); /** * 捐赠物品统计查询 * @param communityId * @return */ @GetMapping("/comActWarehouseDonates/donates/statistics") R getDonatesStatistics(@RequestParam("communityId") Long communityId); } springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/ComActWarehouseDonatesApi.java
New file @@ -0,0 +1,185 @@ package com.panzhihua.community_backstage.api; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.List; import javax.annotation.Resource; import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.write.metadata.WriteSheet; import com.alibaba.fastjson.JSONArray; import com.panzhihua.common.model.dtos.community.warehouse.ComActWarehouseDonatesDTO; import com.panzhihua.common.model.dtos.community.warehouse.ExportDonatesDTO; import com.panzhihua.common.model.dtos.community.warehouse.PageDonatesDTO; import com.panzhihua.common.model.vos.community.warehouse.ComActWarehouseDonatesVO; import com.panzhihua.common.model.vos.community.warehouse.DonatesStatisticsVO; import com.panzhihua.common.model.vos.community.warehouse.ExportDonatesVO; import com.panzhihua.common.utlis.SFTPUtil; import com.panzhihua.common.validated.AddGroup; import com.panzhihua.common.validated.PutGroup; import org.springframework.beans.factory.annotation.Value; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import com.alibaba.excel.EasyExcel; import com.panzhihua.common.controller.BaseController; import com.panzhihua.common.listen.WarehouseDonatesExcelListen; import com.panzhihua.common.model.vos.R; import com.panzhihua.common.model.vos.community.warehouse.WarehouseDonatesExcelVO; import com.panzhihua.common.service.community.CommunityService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; /** * @title: ComActWarehouseApi * @projectName: 成都呐喊信息技术有限公司-智慧社区项目 * @description: 爱心义仓相关接口 * @author: hans * @date: 2021/10/09 17:35 */ @Slf4j @Api(tags = {"爱心义仓捐赠相关"}) @RestController @RequestMapping("/warehouse/donates") public class ComActWarehouseDonatesApi extends BaseController { @Resource private CommunityService communityService; @Value("${excel.donatesimporturl}") private String donatesImportUrl; @Value("${excel.userurl}") private String excelUrl; @Value("${ftp.username}") private String userName; @Value("${ftp.password}") private String password; @Value("${ftp.host}") private String host; @Value("${ftp.port}") private int port; @Value("${ftp.url}") private String url; @PostMapping("/import") @ApiOperation(value = "捐赠物品导入", response = R.class) public R importDonates(@RequestParam MultipartFile file) { InputStream inputStream; try { inputStream = file.getInputStream(); EasyExcel.read(inputStream, WarehouseDonatesExcelVO.class, new WarehouseDonatesExcelListen(communityService, getCommunityId(), getUserId())).sheet().doRead(); } catch (IOException e) { e.printStackTrace(); log.error("导入捐赠物品失败【{}】", e.getMessage()); } return R.ok(); } @GetMapping("/import/templates") @ApiOperation(value = "获取物品捐赠导入模板", response = R.class) public R getDonatesImportTemplate() { return R.ok(donatesImportUrl); } @ApiOperation(value = "捐赠物品导出") @PostMapping("/export") public R exportDonates(@RequestBody ExportDonatesDTO exportDonatesDTO) { String communityName = getCommunityName(); exportDonatesDTO.setCommunityId(getCommunityId()); String url = excelUrl; String name = "爱心义仓" + communityName + "捐赠物品导出.xlsx"; String ftpUrl = "/mnt/data/web/excel/"; R r = communityService.exportDonates(exportDonatesDTO); if (R.isOk(r)) { List<ExportDonatesVO> exportDonatesVOList = JSONArray.parseArray(JSONArray.toJSONString(r.getData()), ExportDonatesVO.class); try { SFTPUtil sftp = new SFTPUtil(userName, password, host, port); sftp.login(); boolean existDir = sftp.isExistDir(ftpUrl + name); if (!existDir) { String property = System.getProperty("user.dir"); String fileName = property + File.separator + name; // 这里 需要指定写用哪个class去写 ExcelWriter excelWriter = null; InputStream inputStream = null; try { excelWriter = EasyExcel.write(fileName, ExportDonatesVO.class).build(); WriteSheet writeSheet = EasyExcel.writerSheet("爱心义仓捐赠物品导出").build(); excelWriter.write(exportDonatesVOList, writeSheet); excelWriter.finish(); File file = new File(fileName); inputStream = new FileInputStream(file); sftp.uploadMore(ftpUrl, name, inputStream); sftp.logout(); inputStream.close(); String absolutePath = file.getAbsolutePath(); boolean delete = file.delete(); log.info("删除excel【{}】结果【{}】", absolutePath, delete); } finally { // 千万别忘记finish 会帮忙关闭流 if (inputStream != null) { inputStream.close(); } if (excelWriter != null) { excelWriter.finish(); } } } return R.ok(url + name); } catch (Exception e) { e.printStackTrace(); log.error("文件传输失败【{}】", e.getMessage()); return R.fail(); } } return R.fail("未查询到数据"); } @ApiOperation(value = "分页查询捐赠物品", response = ComActWarehouseDonatesVO.class) @PostMapping("/page") public R pageDonates(@RequestBody PageDonatesDTO pageDonatesDTO) { pageDonatesDTO.setCommunityId(getCommunityId()); return communityService.pageDonates(pageDonatesDTO); } @ApiOperation(value = "新增物品捐赠") @PostMapping("/add") public R addDonates(@RequestBody @Validated(AddGroup.class) ComActWarehouseDonatesDTO comActWarehouseDonatesDTO) { comActWarehouseDonatesDTO.setCommunityId(getCommunityId()); comActWarehouseDonatesDTO.setRegisterBy(getUserId()); return communityService.addDonates(comActWarehouseDonatesDTO); } @ApiOperation(value = "查看物品捐赠详情", response = ComActWarehouseDonatesVO.class) @GetMapping("/get") public R getDonates(@RequestParam("donatesId") Long donatesId) { return communityService.getDonates(donatesId, null, null); } @ApiOperation(value = "捐赠物品签收") @PostMapping("/signing") public R signingDonates(@RequestBody @Validated(PutGroup.class) ComActWarehouseDonatesDTO comActWarehouseDonatesDTO) { comActWarehouseDonatesDTO.setSigningBy(getUserId()); return communityService.signingDonates(comActWarehouseDonatesDTO); } @ApiOperation(value = "捐赠物品统计查询", response = DonatesStatisticsVO.class) @GetMapping("/statistics") public R getDonatesStatistics() { return communityService.getDonatesStatistics(getCommunityId()); } } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/ComActWarehouseDonatesApi.java
@@ -3,9 +3,13 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.api.ApiController; import com.panzhihua.common.model.dtos.community.warehouse.ComActWarehouseDonatesDTO; import com.panzhihua.common.model.dtos.community.warehouse.ExportDonatesDTO; import com.panzhihua.common.model.dtos.community.warehouse.PageDonatesDTO; import com.panzhihua.common.model.vos.R; import com.panzhihua.common.model.dtos.property.CommonPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.panzhihua.common.model.vos.community.warehouse.WarehouseDonatesExcelVO; import com.panzhihua.service_community.entity.ComActWarehouseDonates; import com.panzhihua.service_community.service.ComActWarehouseDonatesService; import org.springframework.web.bind.annotation.*; @@ -83,4 +87,85 @@ public R delete(@RequestParam("id") Long id) { return R.ok(this.comActWarehouseDonatesService.removeById(id)); } /** * 后台导入捐赠物品 * @param list * @return */ @PostMapping("/import") public R batchImportWarehouseDonates(@RequestBody List<WarehouseDonatesExcelVO> list) { return comActWarehouseDonatesService.batchImportWarehouseDonates(list); } /** * 后台导出捐赠物品表格 * @param exportDonatesDTO * @return */ @PostMapping("/donates/export") public R exportDonates(@RequestBody ExportDonatesDTO exportDonatesDTO) { return comActWarehouseDonatesService.exportDonates(exportDonatesDTO); } /** * 分页查询捐赠物品 * @param pageDonatesDTO * @return */ @PostMapping("/donates/page") public R pageDonates(@RequestBody PageDonatesDTO pageDonatesDTO) { return comActWarehouseDonatesService.pageDonates(pageDonatesDTO); } /** * 新增物品捐赠 * @param comActWarehouseDonatesDTO * @return */ @PostMapping("/donates/add") public R addDonates(@RequestBody ComActWarehouseDonatesDTO comActWarehouseDonatesDTO) { return comActWarehouseDonatesService.addDonates(comActWarehouseDonatesDTO); } /** * 查看物品捐赠详情 * @param donatesId * @return */ @GetMapping("/donates/get") public R getDonates(@RequestParam("donatesId") Long donatesId, @RequestParam("isWhich") Integer isWhich, @RequestParam("userId") Long userId) { return comActWarehouseDonatesService.getDonates(donatesId, isWhich, userId); } /** * 捐赠物品后台签收 * @param comActWarehouseDonatesDTO * @return */ @PostMapping("/donates/signing") public R signingDonates(@RequestBody ComActWarehouseDonatesDTO comActWarehouseDonatesDTO) { return comActWarehouseDonatesService.signingDonates(comActWarehouseDonatesDTO); } /** * 用户取消捐赠 * @param donatesId * @param currentUser * @return */ @GetMapping("/donates/cancel") public R cancelDonates(@RequestParam("donatesId") Long donatesId, @RequestParam("currentUser") Long currentUser) { return comActWarehouseDonatesService.cancelDonates(donatesId, currentUser); } /** * 捐赠物品统计查询 * @param communityId * @return */ @GetMapping("/donates/statistics") public R getDonatesStatistics(@RequestParam("communityId") Long communityId) { return comActWarehouseDonatesService.getDonatesStatistics(communityId); } } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActWarehouseDonatesDao.java
@@ -1,7 +1,18 @@ package com.panzhihua.service_community.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import java.util.List; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.panzhihua.common.model.dtos.community.warehouse.PageDonatesDTO; import com.panzhihua.common.model.vos.community.warehouse.ComActWarehouseDonatesVO; import com.panzhihua.common.model.vos.community.warehouse.DonatesStatisticsVO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.panzhihua.common.model.dtos.community.warehouse.ExportDonatesDTO; import com.panzhihua.common.model.vos.community.warehouse.ExportDonatesVO; import com.panzhihua.service_community.entity.ComActWarehouseDonates; /** @@ -13,4 +24,50 @@ @Mapper public interface ComActWarehouseDonatesDao extends BaseMapper<ComActWarehouseDonates> { /** * 批量插入捐赠物品 * @param donateList * @return */ int batchInsertDonates(@Param("donateList") List<ComActWarehouseDonates> donateList); /** * 根据id查找导出数据 * @param needExportIds * @return */ List<ExportDonatesVO> exportDonatesByIds(@Param("needExportIds") List<Long> needExportIds); /** * 根据查询条件导出数据 * @param exportDonatesDTO * @return */ List<ExportDonatesVO> exportDonatesBySearch(@Param("exportDonatesDTO") ExportDonatesDTO exportDonatesDTO); /** * 社区后台分页查询捐赠物品 * @param page * @param pageDonatesDTO * @return */ IPage<ComActWarehouseDonatesVO> pageDonates(@Param("page") Page page, @Param("pageDonatesDTO") PageDonatesDTO pageDonatesDTO); /** * 查看捐赠详情 * @param donatesId * @return */ ComActWarehouseDonatesVO selectDetailById(@Param("donatesId") Long donatesId); /** * 捐赠物品统计查询 * @param communityId * @param currentYear * @param currentMonth * @param today * @return */ DonatesStatisticsVO selectDonatesStatistics(@Param("communityId") Long communityId, @Param("currentYear") String currentYear, @Param("currentMonth") String currentMonth, @Param("today") String today); } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActWarehouseOperationDao.java
@@ -3,6 +3,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; import com.panzhihua.service_community.entity.ComActWarehouseOperation; import org.apache.ibatis.annotations.Param; import java.util.List; /** * 爱心义操作表(ComActWarehouseOperation)表数据库访问层 @@ -13,4 +16,10 @@ @Mapper public interface ComActWarehouseOperationDao extends BaseMapper<ComActWarehouseOperation> { /** * 批量插入操作记录 * @param operationList * @return */ int batchInsertOperation(@Param("operationList") List<ComActWarehouseOperation> operationList); } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/entity/ComActWarehouseDonates.java
@@ -115,4 +115,21 @@ @ApiModelProperty(value = "社区id") private Long communityId; /** * 登记人 */ @ApiModelProperty(value = "登记人") private Long registerBy; /** * 签收人 */ @ApiModelProperty(value = "签收人") private Long signingBy; public interface status { int dqs = 1; int yqs = 2; int yqx = 3; } } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActWarehouseDonatesService.java
@@ -1,9 +1,15 @@ package com.panzhihua.service_community.service; import com.panzhihua.common.model.dtos.community.warehouse.ComActWarehouseDonatesDTO; import com.panzhihua.common.model.dtos.community.warehouse.ExportDonatesDTO; import com.panzhihua.common.model.dtos.community.warehouse.PageDonatesDTO; import com.panzhihua.common.model.vos.R; import com.panzhihua.common.model.dtos.property.CommonPage; import com.baomidou.mybatisplus.extension.service.IService; import com.panzhihua.common.model.vos.community.warehouse.WarehouseDonatesExcelVO; import com.panzhihua.service_community.entity.ComActWarehouseDonates; import java.util.List; /** * 爱心义仓/物品捐赠表(ComActWarehouseDonates)表服务接口 @@ -13,4 +19,63 @@ */ public interface ComActWarehouseDonatesService extends IService<ComActWarehouseDonates> { R pageList(CommonPage commonPage); /** * 后台导入捐赠物品 * @param list * @return */ R batchImportWarehouseDonates(List<WarehouseDonatesExcelVO> list); /** * 后台导出捐赠物品表格 * @param exportDonatesDTO * @return */ R exportDonates(ExportDonatesDTO exportDonatesDTO); /** * 分页查询捐赠物品 * @param pageDonatesDTO * @return */ R pageDonates(PageDonatesDTO pageDonatesDTO); /** * 新增物品捐赠 * @param comActWarehouseDonatesDTO * @return */ R addDonates(ComActWarehouseDonatesDTO comActWarehouseDonatesDTO); /** * 查看物品捐赠详情 * @param donatesId * @param isWhich * @param userId * @return */ R getDonates(Long donatesId, Integer isWhich, Long userId); /** * 捐赠物品后台签收 * @param comActWarehouseDonatesDTO * @return */ R signingDonates(ComActWarehouseDonatesDTO comActWarehouseDonatesDTO); /** * 用户取消捐赠 * @param donatesId * @param currentUser * @return */ R cancelDonates(Long donatesId, Long currentUser); /** * 捐赠物品统计查询 * @param communityId * @return */ R getDonatesStatistics(Long communityId); } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActWarehouseDonatesServiceImpl.java
@@ -1,13 +1,40 @@ package com.panzhihua.service_community.service.impl; import static java.util.Objects.isNull; import static java.util.Objects.nonNull; import static org.apache.commons.lang3.StringUtils.isBlank; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.stream.Collectors; import javax.annotation.Resource; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.panzhihua.common.model.dtos.community.warehouse.ComActWarehouseDonatesDTO; import com.panzhihua.common.model.dtos.community.warehouse.ExportDonatesDTO; import com.panzhihua.common.model.dtos.community.warehouse.PageDonatesDTO; import com.panzhihua.common.model.dtos.property.CommonPage; import com.panzhihua.common.model.vos.R; import com.panzhihua.service_community.entity.ComActWarehouseDonates; import com.panzhihua.common.model.vos.community.warehouse.ComActWarehouseDonatesVO; import com.panzhihua.common.model.vos.community.warehouse.ComActWarehouseOperationVO; import com.panzhihua.common.model.vos.community.warehouse.DonatesStatisticsVO; import com.panzhihua.common.model.vos.community.warehouse.WarehouseDonatesExcelVO; import com.panzhihua.service_community.dao.ComActWarehouseDonatesDao; import com.panzhihua.service_community.dao.ComActWarehouseOperationDao; import com.panzhihua.service_community.entity.ComActWarehouseDonates; import com.panzhihua.service_community.entity.ComActWarehouseOperation; import com.panzhihua.service_community.service.ComActWarehouseDonatesService; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; /** * 爱心义仓/物品捐赠表(ComActWarehouseDonates)表服务实现类 @@ -19,8 +46,250 @@ @Service public class ComActWarehouseDonatesServiceImpl extends ServiceImpl<ComActWarehouseDonatesDao, ComActWarehouseDonates> implements ComActWarehouseDonatesService { @Resource private ComActWarehouseOperationDao comActWarehouseOperationDao; @Override public R pageList(CommonPage commonPage) { return null; } /** * 后台导入捐赠物品 * @param list * @return */ @Override public R batchImportWarehouseDonates(List<WarehouseDonatesExcelVO> list) { try { if (!list.isEmpty()) { List<ComActWarehouseDonates> donateList = list.stream().map(excelVO -> { ComActWarehouseDonates donates = new ComActWarehouseDonates(); BeanUtils.copyProperties(excelVO, donates); return donates; }).collect(Collectors.toList()); this.baseMapper.batchInsertDonates(donateList); List<ComActWarehouseOperation> operationList = new ArrayList<>(); Date nowDate = new Date(); donateList.forEach(donate -> { Long donateId = donate.getId(); if (nonNull(donateId)) { ComActWarehouseOperation comActWarehouseOperation = new ComActWarehouseOperation(); comActWarehouseOperation.setGoodsId(donateId.intValue()); comActWarehouseOperation.setUserId(donate.getSigningBy().intValue()); comActWarehouseOperation.setContent("工作人员完成了物品签收"); comActWarehouseOperation.setCreateTime(nowDate); operationList.add(comActWarehouseOperation); } }); if (!operationList.isEmpty()) { comActWarehouseOperationDao.batchInsertOperation(operationList); } } } catch (Exception e) { log.error("导入捐赠物品失败【{}】", e.getMessage()); return R.fail("导入捐赠物品失败"); } return R.ok(); } /** * 后台导出捐赠物品表格 * @param exportDonatesDTO * @return */ @Override public R exportDonates(ExportDonatesDTO exportDonatesDTO) { List<Long> needExportIds = exportDonatesDTO.getIds(); if (nonNull(needExportIds) && !needExportIds.isEmpty()) { //根据id导出 return R.ok(this.baseMapper.exportDonatesByIds(needExportIds)); } return R.ok(this.baseMapper.exportDonatesBySearch(exportDonatesDTO)); } /** * 分页查询捐赠物品 * @param pageDonatesDTO * @return */ @Override public R pageDonates(PageDonatesDTO pageDonatesDTO) { Page page = new Page<>(); page.setCurrent(pageDonatesDTO.getPageNum()); page.setSize(pageDonatesDTO.getPageSize()); IPage<ComActWarehouseDonatesVO> donatesVOIPage = this.baseMapper.pageDonates(page, pageDonatesDTO); Integer isWhich = pageDonatesDTO.getIsWhich(); if (nonNull(isWhich) && isWhich.intValue() == 3) { List<ComActWarehouseDonatesVO> records = donatesVOIPage.getRecords(); if (!records.isEmpty()) { records.forEach(record -> { String name = record.getName(); if (record.getIsAnonymous().equals(ComActWarehouseDonatesVO.isAnonymous.yes) || isBlank(name)) { record.setName("匿名用户"); } else { record.setName(name.substring(0, 1).concat(name.substring(1).replaceAll("\\S", "*"))); } record.setPhone(null); }); } } return R.ok(donatesVOIPage); } /** * 新增物品捐赠 * @param comActWarehouseDonatesDTO * @return */ @Override public R addDonates(ComActWarehouseDonatesDTO comActWarehouseDonatesDTO) { ComActWarehouseDonates comActWarehouseDonates = new ComActWarehouseDonates(); BeanUtils.copyProperties(comActWarehouseDonatesDTO, comActWarehouseDonates); Date nowDate = new Date(); comActWarehouseDonates.setRegisterAt(nowDate); comActWarehouseDonates.setSurplusQuantity(comActWarehouseDonatesDTO.getQuantity()); if (isNull(comActWarehouseDonatesDTO.getUserId())) { //userId为空代表后台新增 comActWarehouseDonates.setSigningAt(nowDate); comActWarehouseDonates.setStatus(2); } else { comActWarehouseDonates.setStatus(1); } int result = this.baseMapper.insert(comActWarehouseDonates); if (result > 0) { if (comActWarehouseDonates.getStatus().intValue() == 2) { ComActWarehouseOperation comActWarehouseOperation = new ComActWarehouseOperation(); comActWarehouseOperation.setGoodsId(comActWarehouseDonates.getId().intValue()); comActWarehouseOperation.setUserId(comActWarehouseDonates.getSigningBy().intValue()); comActWarehouseOperation.setContent("工作人员完成了物品签收"); comActWarehouseOperation.setCreateTime(nowDate); comActWarehouseOperationDao.insert(comActWarehouseOperation); } return R.ok(); } return R.fail("添加失败,请重试"); } /** * 查看物品捐赠详情 * @param donatesId * @param isWhich * @param userId * @return */ @Override public R getDonates(Long donatesId, Integer isWhich, Long userId) { ComActWarehouseDonatesVO comActWarehouseDonatesVO = this.baseMapper.selectDetailById(donatesId); if (isNull(comActWarehouseDonatesVO)) { return R.fail("捐赠物品记录不存在"); } if (nonNull(isWhich)) { if (isWhich.intValue() == 3) { String name = comActWarehouseDonatesVO.getName(); if (comActWarehouseDonatesVO.getIsAnonymous().equals(ComActWarehouseDonatesVO.isAnonymous.yes) || isBlank(name)) { comActWarehouseDonatesVO.setName("匿名用户"); } else { comActWarehouseDonatesVO.setName(name.substring(0, 1).concat(name.substring(1).replaceAll("\\S", "*"))); } comActWarehouseDonatesVO.setPhone(null); } if (isWhich.intValue() == 1 && !userId.equals(comActWarehouseDonatesVO.getUserId())) { return R.fail("无法获取他人捐赠记录"); } List<ComActWarehouseOperation> operationDOList = comActWarehouseOperationDao.selectList(new QueryWrapper<ComActWarehouseOperation>() .lambda().eq(ComActWarehouseOperation::getGoodsId, donatesId)); List<ComActWarehouseOperationVO> operationVOList = new ArrayList<>(); if (!operationDOList.isEmpty()) { operationDOList.forEach(operation -> { ComActWarehouseOperationVO operationVO = new ComActWarehouseOperationVO(); BeanUtils.copyProperties(operation, operationVO); operationVOList.add(operationVO); }); } comActWarehouseDonatesVO.setOperationList(operationVOList); } return R.ok(comActWarehouseDonatesVO); } /** * 捐赠物品后台签收 * @param comActWarehouseDonatesDTO * @return */ @Override public R signingDonates(ComActWarehouseDonatesDTO comActWarehouseDonatesDTO) { ComActWarehouseDonates comActWarehouseDonates = this.baseMapper.selectById(comActWarehouseDonatesDTO.getId()); if (isNull(comActWarehouseDonates)) { return R.fail("捐赠物品记录不存在"); } if (comActWarehouseDonates.getStatus().intValue() != 1) { return R.fail("捐赠物品已被签收或已被取消"); } BeanUtils.copyProperties(comActWarehouseDonatesDTO, comActWarehouseDonates); Date nowDate = new Date(); comActWarehouseDonates.setSigningAt(nowDate); comActWarehouseDonates.setStatus(2); int result = this.baseMapper.updateById(comActWarehouseDonates); if (result > 0) { ComActWarehouseOperation comActWarehouseOperation = new ComActWarehouseOperation(); comActWarehouseOperation.setGoodsId(comActWarehouseDonates.getId().intValue()); comActWarehouseOperation.setUserId(comActWarehouseDonates.getSigningBy().intValue()); comActWarehouseOperation.setContent("工作人员完成了物品签收"); comActWarehouseOperation.setCreateTime(nowDate); comActWarehouseOperationDao.insert(comActWarehouseOperation); return R.ok(); } return R.fail("签收失败"); } /** * 用户取消捐赠 * @param donatesId * @param currentUser * @return */ @Override public R cancelDonates(Long donatesId, Long currentUser) { ComActWarehouseDonates comActWarehouseDonates = this.baseMapper.selectById(donatesId); if (isNull(comActWarehouseDonates)) { return R.fail("没有你的捐赠记录"); } if (!currentUser.equals(comActWarehouseDonates.getUserId())) { return R.fail("不能取消他人的捐赠记录"); } if (comActWarehouseDonates.getStatus().equals(ComActWarehouseDonates.status.yqx)) { return R.ok(); } comActWarehouseDonates.setStatus(ComActWarehouseDonates.status.yqx); int result = this.baseMapper.updateById(comActWarehouseDonates); if (result > 0) { ComActWarehouseOperation comActWarehouseOperation = new ComActWarehouseOperation(); comActWarehouseOperation.setGoodsId(comActWarehouseDonates.getId().intValue()); comActWarehouseOperation.setUserId(currentUser.intValue()); comActWarehouseOperation.setContent("已取消捐赠"); comActWarehouseOperation.setCreateTime(new Date()); comActWarehouseOperationDao.insert(comActWarehouseOperation); } return R.ok(); } /** * 捐赠物品统计查询 * @param communityId * @return */ @Override public R getDonatesStatistics(Long communityId) { Date nowDate = new Date(); SimpleDateFormat yearFormat = new SimpleDateFormat("yyyy"); SimpleDateFormat monthFormat = new SimpleDateFormat("yyyy-MM"); SimpleDateFormat dayFormat = new SimpleDateFormat("yyyy-MM-dd"); String currentYear = yearFormat.format(nowDate).concat("%"); String currentMonth = monthFormat.format(nowDate).concat("%"); String today = dayFormat.format(nowDate).concat("%"); DonatesStatisticsVO donatesStatisticsVO = this.baseMapper.selectDonatesStatistics(communityId, currentYear, currentMonth, today); donatesStatisticsVO.setTotalDec(donatesStatisticsVO.getTotalInc().intValue() - donatesStatisticsVO.getSurplus().intValue()); return R.ok(donatesStatisticsVO); } } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActWarehouseDonatesMapper.xml
@@ -18,6 +18,102 @@ <result property="signingAt" column="signing_at"/> <result property="status" column="status"/> <result property="communityId" column="community_id"/> <result property="registerBy" column="register_by"/> <result property="signingBy" column="signing_by"/> </resultMap> <insert id="batchInsertDonates" parameterType="java.util.List"> INSERT INTO `com_act_warehouse_donates`(`name`,phone,item,quantity,surplus_quantity, is_anonymous,message,register_at,signing_at,status,community_id,register_by) VALUES <foreach collection="donateList" item="item" index="index" separator="," > (#{item.name}, #{item.phone}, #{item.phone}, #{item.item}, #{item.quantity}, #{item.surplusQuantity}, #{item.isAnonymous}, #{item.message}, #{item.registerAt}, #{item.signingAt}, #{item.status}, #{item.communityId}, #{item.registerBy}) </foreach> </insert> <select id="exportDonatesByIds" resultType="com.panzhihua.common.model.vos.community.warehouse.ExportDonatesVO"> SELECT * FROM com_act_warehouse_donates WHERE id IN <foreach collection="needExportIds" open="(" separator="," close=")" index="index" item="item"> #{item} </foreach> </select> <select id="exportDonatesBySearch" resultType="com.panzhihua.common.model.vos.community.warehouse.ExportDonatesVO"> SELECT * FROM com_act_warehouse_donates WHERE community_id = #{exportDonatesDTO.communityId} <if test="exportDonatesDTO.status != null"> AND status = #{exportDonatesDTO.status} </if> <if test="exportDonatesDTO.isAnonymous != null"> AND is_anonymous = #{exportDonatesDTO.isAnonymous} </if> <if test="exportDonatesDTO.signingAtBegin != null"> AND signing_at >= #{exportDonatesDTO.signingAtBegin} </if> <if test="exportDonatesDTO.signingAtEnd != null"> AND signing_at <= #{exportDonatesDTO.signingAtEnd} </if> <if test="exportDonatesDTO.keyword != null and exportDonatesDTO.keyword != """> AND ( `name` LIKE CONCAT('%', #{exportDonatesDTO.keyword}, '%') OR phone LIKE CONCAT('%', #{exportDonatesDTO.keyword}, '%') OR item LIKE CONCAT('%', #{exportDonatesDTO.keyword}, '%') ) </if> ORDER BY id DESC </select> <select id="pageDonates" resultType="com.panzhihua.common.model.vos.community.warehouse.ComActWarehouseDonatesVO"> SELECT * FROM com_act_warehouse_donates WHERE community_id = #{pageDonatesDTO.communityId} <if test="pageDonatesDTO.isWhich != null and pageDonatesDTO.isWhich == 1"> AND user_id = #{pageDonatesDTO.userId} </if> <if test="pageDonatesDTO.status != null"> AND status = #{pageDonatesDTO.status} </if> <if test="pageDonatesDTO.isAnonymous != null"> AND is_anonymous = #{pageDonatesDTO.isAnonymous} </if> <if test="pageDonatesDTO.signingAtBegin != null"> AND signing_at >= #{pageDonatesDTO.signingAtBegin} </if> <if test="pageDonatesDTO.signingAtEnd != null"> AND signing_at <= #{pageDonatesDTO.signingAtEnd} </if> <if test="pageDonatesDTO.keyword != null and pageDonatesDTO.keyword != """> <if test="pageDonatesDTO.isWhich != null"> AND status = 2 AND `name` LIKE CONCAT('%', #{pageDonatesDTO.keyword}, '%') </if> <if test="pageDonatesDTO.isWhich == null"> AND ( `name` LIKE CONCAT('%', #{pageDonatesDTO.keyword}, '%') OR phone LIKE CONCAT('%', #{pageDonatesDTO.keyword}, '%') OR item LIKE CONCAT('%', #{pageDonatesDTO.keyword}, '%') ) </if> </if> ORDER BY id DESC </select> <select id="selectDetailById" resultType="com.panzhihua.common.model.vos.community.warehouse.ComActWarehouseDonatesVO"> SELECT temp.*,IF(su.name IS NULL, su.nick_name, su.name) AS signingBy FROM ( SELECT * FROM com_act_warehouse_donates WHERE id = #{donatesId} ) temp LEFT JOIN sys_user su ON temp.signing_by = su.user_id </select> <select id="selectDonatesStatistics" resultType="com.panzhihua.common.model.vos.community.warehouse.DonatesStatisticsVO"> SELECT (SELECT IF(SUM(quantity) IS NULL,0,SUM(quantity)) FROM com_act_warehouse_donates WHERE community_id = #{communityId} AND `status` = 2) as totalInc , (SELECT IF(SUM(surplus_quantity) IS NULL,0,SUM(surplus_quantity)) FROM com_act_warehouse_donates WHERE community_id = #{communityId} AND `status` = 2) as surplus, (SELECT IF(SUM(quantity) IS NULL,0,SUM(quantity)) FROM com_act_warehouse_donates WHERE community_id = #{communityId} AND `status` = 2 AND signing_at LIKE #{currentYear}) as yearInc, (SELECT IF(SUM(quantity) IS NULL,0,SUM(quantity)) FROM com_act_warehouse_donates WHERE community_id = #{communityId} AND `status` = 2 AND signing_at LIKE #{currentMonth}) as mothInc, (SELECT IF(SUM(quantity) IS NULL,0,SUM(quantity)) FROM com_act_warehouse_donates WHERE community_id = #{communityId} AND `status` = 2 AND signing_at LIKE #{today}) as dayInc, (SELECT IF(SUM(goods_num) IS NULL,0,SUM(goods_num)) FROM com_act_warehouse_apply WHERE community_id = #{communityId} AND `status` = 3 AND actual_time LIKE #{currentYear}) as yearDec, (SELECT IF(SUM(goods_num) IS NULL,0,SUM(goods_num)) FROM com_act_warehouse_apply WHERE community_id = #{communityId} AND `status` = 3 AND actual_time LIKE #{currentMonth}) as mothDec, (SELECT IF(SUM(goods_num) IS NULL,0,SUM(goods_num)) FROM com_act_warehouse_apply WHERE community_id = #{communityId} AND `status` = 3 AND actual_time LIKE #{today}) as dayDec </select> </mapper> springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActWarehouseOperationMapper.xml
@@ -10,5 +10,12 @@ <result property="createTime" column="create_time"/> <result property="userId" column="user_id"/> </resultMap> <insert id="batchInsertOperation" parameterType="java.util.List"> INSERT INTO `com_act_warehouse_operation` (goods_id,content,create_time,user_id) VALUES <foreach collection="operationList" item="item" index="index" separator="," > (#{item.goodsId}, #{item.content}, #{item.createTime}, #{item.userId}) </foreach> </insert> </mapper> springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java
@@ -324,6 +324,7 @@ } loginUserInfoVO.setIsmemberrole(2); loginUserInfoVO.setIsFourMember(2); loginUserInfoVO.setIsCommunityWorker(2); // 志愿者状态 String phone = sysUserDO.getPhone(); Long userCommunityId = sysUserDO.getCommunityId(); @@ -352,6 +353,7 @@ Integer isSysUser = userDao.selectCountSysUser(phone, userCommunityId); if (countTeam != null && countTeam > 0) { loginUserInfoVO.setIsmemberrole(1); loginUserInfoVO.setIsCommunityWorker(1); } else if (selectCountMemberRole != null && selectCountMemberRole > 0) { loginUserInfoVO.setIsmemberrole(1); } else if (isSysUser != null && isSysUser > 0) { springcloud_k8s_panzhihuazhihuishequ/zuul/src/main/java/com/panzhihua/zuul/filters/JWTAuthenticationTokenFilter.java
@@ -261,6 +261,8 @@ noLoginUrl.add("/api/applets/convenient/merchant/incr-view"); noLoginUrl.add("/api/applets/convenient/product/incr-view"); noLoginUrl.add("/api/shopbackstage/convenient/upload/file"); noLoginUrl.add("/api/applets/warehouse/donates/page"); noLoginUrl.add("/api/applets/warehouse/donates/get"); if (noLoginUrl.contains(requestURI)) { List<SimpleGrantedAuthority> authorities = new ArrayList<>(); authorities.add(new SimpleGrantedAuthority(SecurityConstants.ROLE_APPLETS));