Pārlūkot izejas kodu

Merge remote-tracking branch 'origin/master'

suntianwu 2 gadi atpakaļ
vecāks
revīzija
dbf3044242

+ 149 - 8
purchase-admin/src/main/java/com/ozs/web/controller/base/BaseAgencyController.java

@@ -5,16 +5,30 @@ 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.ozs.base.domain.BaseAgency;
+import com.ozs.base.domain.BasePolicy;
 import com.ozs.base.service.BaseAgencyService;
 import com.ozs.base.vo.BaseAgentPageReqVo;
+import com.ozs.base.vo.BasePolicyPageReqVo;
+import com.ozs.base.vo.BaseProjectInfo;
 import com.ozs.common.annotation.Log;
+import com.ozs.common.constant.Constants;
 import com.ozs.common.constant.ModularConstans;
 import com.ozs.common.core.controller.BaseController;
 import com.ozs.common.core.domain.AjaxResult;
+import com.ozs.common.core.domain.entity.SysDictData;
 import com.ozs.common.enums.BusinessType;
+import com.ozs.common.enums.PmProjectStatus;
+import com.ozs.common.enums.ProjectAttribute;
+import com.ozs.common.enums.ProjectStatus;
+import com.ozs.plan.doman.MonthlyReconciliation;
+import com.ozs.plan.service.MonthlyReconciliationService;
+import com.ozs.system.domain.vo.responseVo.SysDeptResponseVo;
+import com.ozs.system.service.ISysDeptService;
+import com.ozs.system.service.ISysDictTypeService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.util.ObjectUtils;
@@ -22,6 +36,10 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.validation.constraints.NotEmpty;
 import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.stream.Collectors;
 
 
 @Api(tags = ModularConstans.agency)
@@ -32,12 +50,22 @@ public class BaseAgencyController extends BaseController {
     @Autowired
     private BaseAgencyService baseAgencyService;
 
+    @Autowired
+    private MonthlyReconciliationService monthlyReconciliationService;
+
+    @Autowired
+    private ISysDeptService iSysDeptService;
+
+    @Autowired
+    private ISysDictTypeService dictTypeService;
+
+
     @ApiOperation(value = "新增招标代理机构")
     @PostMapping("/insertBaseAgency")
     @PreAuthorize("@ss.hasPermi('base:agency:add')")
     @Log(title = ModularConstans.agency, businessType = BusinessType.INSERT)
     public AjaxResult insertBaseAgency(@NotEmpty(message = "数据为空")
-                                           @RequestBody BaseAgency baseAgency) {
+                                       @RequestBody BaseAgency baseAgency) {
 //        if (ObjectUtils.isEmpty(baseAgency)) {
 //            return error("数据为空");
 //        }
@@ -66,7 +94,7 @@ public class BaseAgencyController extends BaseController {
     @PreAuthorize("@ss.hasPermi('base:agency:edit')")
     @Log(title = ModularConstans.agency, businessType = BusinessType.UPDATE)
     public AjaxResult updateInfo(@NotEmpty(message = "数据为空")
-                                             @RequestBody BaseAgency baseAgency) {
+                                 @RequestBody BaseAgency baseAgency) {
         baseAgency.setUpdateTime(new Date());
         baseAgency.setUpdated(getUserId().toString());
         return toAjax(baseAgencyService.updateInfo(baseAgency));
@@ -105,16 +133,129 @@ public class BaseAgencyController extends BaseController {
     @Log(title = ModularConstans.agency, businessType = BusinessType.QUERY)
     public AjaxResult page(@NotEmpty(message = "数据为空") @RequestBody BaseAgentPageReqVo vo) {
         LambdaQueryWrapper<BaseAgency> lw = new LambdaQueryWrapper<BaseAgency>();
-        if(!StringUtils.isBlank(vo.getCompanyName())){
-            lw.like(BaseAgency::getCompanyName,vo.getCompanyName());
+        if (!StringUtils.isBlank(vo.getCompanyName())) {
+            lw.like(BaseAgency::getCompanyName, vo.getCompanyName());
         }
-        if(!StringUtils.isBlank(vo.getCompanyNature())){
-            lw.eq(BaseAgency::getCompanyNature,vo.getCompanyNature());
+        if (!StringUtils.isBlank(vo.getCompanyNature())) {
+            lw.eq(BaseAgency::getCompanyNature, vo.getCompanyNature());
         }
-        if(!ObjectUtils.isEmpty(vo.getStatus())){
-            lw.eq(BaseAgency::getStatus,vo.getStatus());
+        if (!ObjectUtils.isEmpty(vo.getStatus())) {
+            lw.eq(BaseAgency::getStatus, vo.getStatus());
         }
         IPage<BaseAgency> page = baseAgencyService.page(new Page<BaseAgency>(vo.getPageNum(), vo.getPageSize()), lw);
         return success(page);
     }
+
+    @ApiOperation(value = "抽取招标代理机构(分页查询项目代理信息)")
+    @PostMapping("/pageProjectInfo")
+    @PreAuthorize("@ss.hasPermi('base:agency:pageProjectInfo')")
+    @Log(title = ModularConstans.agency, businessType = BusinessType.QUERY)
+    public AjaxResult pageProjectInfo(@NotEmpty(message = "数据为空")
+                                      @RequestBody BasePolicyPageReqVo vo) {
+        LambdaQueryWrapper<MonthlyReconciliation> lw = new LambdaQueryWrapper<>();
+        lw.isNotNull(MonthlyReconciliation::getAgencyId);
+        if (!StringUtils.isBlank(vo.getName())) {
+            lw.like(MonthlyReconciliation::getProjectName, vo.getName());
+        }
+        if (!ObjectUtils.isEmpty(vo.getStartTime())) {
+            lw.ge(MonthlyReconciliation::getExtractAgencyTime, vo.getStartTime());
+        }
+        if (!ObjectUtils.isEmpty(vo.getStartTime())) {
+            lw.le(MonthlyReconciliation::getExtractAgencyTime, vo.getEntTime());
+        }
+
+        IPage<BaseProjectInfo> page = new Page<>();
+        IPage<MonthlyReconciliation> pageInfo = monthlyReconciliationService.page(new Page<>(vo.getPageNum(), vo.getPageSize()), lw);
+        if (!ObjectUtils.isEmpty(pageInfo)) {
+            List<BaseProjectInfo> collect = pageInfo.getRecords().stream().map(o -> {
+                BaseProjectInfo baseProjectInfo = new BaseProjectInfo();
+                BeanUtils.copyProperties(o, baseProjectInfo);
+                // 采购单位名称
+                Map<String, Object> stringObjectMap = iSysDeptService.selectDeptById(o.getPurchaseDeptId());
+                if (!ObjectUtils.isEmpty(stringObjectMap)) {
+                    SysDeptResponseVo sysDept = (SysDeptResponseVo) stringObjectMap.get("sysDept");
+                    baseProjectInfo.setPurchaseDeptName(sysDept.getDeptName());
+                }
+                // 项目属性
+                List<SysDictData> projectAttr = dictTypeService.selectDictDataByType(Constants.SYS_PROJECT_ATTR);
+                if (!ObjectUtils.isEmpty(projectAttr)
+                        && !ObjectUtils.isEmpty(o.getProjectAttr())) {
+                    List<SysDictData> slist = projectAttr.stream()
+                            .filter(d -> d.getDictValue().equals(o.getProjectAttr()))
+                            .collect(Collectors.toList());
+                    if (!ObjectUtils.isEmpty(slist)) {
+                        baseProjectInfo.setProjectAttrStr(slist.get(0).getDictLabel());
+                    }
+                }
+
+                // 项目类型
+                List<SysDictData> projectType = dictTypeService.selectDictDataByType(Constants.SYS_PROJECT_TYPE);
+                if (!ObjectUtils.isEmpty(projectType)
+                        && !ObjectUtils.isEmpty(o.getProjectType())) {
+                    List<SysDictData> slist = projectType.stream()
+                            .filter(d -> d.getDictValue().equals(o.getProjectType()))
+                            .collect(Collectors.toList());
+                    if (!ObjectUtils.isEmpty(slist)) {
+                        baseProjectInfo.setProjectTypeStr(slist.get(0).getDictLabel());
+                    }
+                }
+                // 招标代理机构
+                if (!ObjectUtils.isEmpty(o.getAgencyId())) {
+                    BaseAgency info = baseAgencyService.getInfo(o.getAgencyId());
+                    baseProjectInfo.setAgencyName(ObjectUtils.isEmpty(info) ? null : info.getCompanyName());
+                }
+                return baseProjectInfo;
+            }).collect(Collectors.toList());
+            page.setRecords(collect);
+            page.setTotal(pageInfo.getTotal());
+            page.setPages(pageInfo.getPages());
+            page.setTotal(pageInfo.getTotal());
+            page.setCurrent(pageInfo.getCurrent());
+        }
+        return success(page);
+    }
+
+    @ApiOperation(value = "根据项目名称模糊查询项目信息")
+    @PostMapping("/listProjectInfoLikeName")
+    @PreAuthorize("@ss.hasPermi('base:agency:listProjectInfoLikeName')")
+    @Log(title = ModularConstans.agency, businessType = BusinessType.QUERY)
+    public AjaxResult listProjectInfoLikeName(@NotEmpty(message = "数据为空")
+                                      @RequestBody BasePolicyPageReqVo vo) {
+        LambdaQueryWrapper<MonthlyReconciliation> lw = new LambdaQueryWrapper<>();
+        lw.isNull(MonthlyReconciliation::getAgencyId);
+        lw.eq(MonthlyReconciliation::getProjectStatus, PmProjectStatus.BID_INFO_WAIT_FILL.getCode());
+        if (!StringUtils.isBlank(vo.getName())) {
+            lw.like(MonthlyReconciliation::getProjectName, vo.getName());
+        }
+        return success(monthlyReconciliationService.list(lw));
+    }
+
+
+    @ApiOperation(value = "根据项目名称模糊查询项目信息")
+    @PostMapping("/extract")
+    @PreAuthorize("@ss.hasPermi('base:agency:extract')")
+    @Log(title = ModularConstans.agency, businessType = BusinessType.OTHER)
+    public AjaxResult extract(@NotEmpty(message = "主键id不能为空")
+                                  @RequestParam(value = "demandId", required = true)
+                                              @RequestBody Long demandId) {
+        LambdaQueryWrapper<BaseAgency> lw = new LambdaQueryWrapper<>();
+        MonthlyReconciliation byId = monthlyReconciliationService.getById(demandId);
+        if(ObjectUtils.isEmpty(byId)){
+         return error("参数错误");
+        }
+        byId.setExtractAgencyTime(new Date());
+        lw.eq(BaseAgency::getCompanyType,byId.getProjectType());
+        lw.eq(BaseAgency::getStatus,0);
+        Optional<BaseAgency> any = baseAgencyService.list(lw).stream().findAny();
+        if(ObjectUtils.isEmpty(any)){
+            return error("没有符合的招标代理机构,抽取失败!");
+        }
+        byId.setAgencyId(any.get().getId());
+        byId.setUpdateTime(byId.getExtractAgencyTime());
+        byId.setUpdateBy(getUserId().toString());
+
+
+        return success(monthlyReconciliationService.updateById(byId));
+    }
+
 }

+ 2 - 1
purchase-admin/src/main/java/com/ozs/web/controller/plan/MonthlyReconciliationController.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ozs.base.domain.BaseNoticeType;
 import com.ozs.common.annotation.Log;
+import com.ozs.common.constant.Constants;
 import com.ozs.common.constant.ModularConstans;
 import com.ozs.common.core.controller.BaseController;
 import com.ozs.common.core.domain.AjaxResult;
@@ -84,7 +85,7 @@ public class MonthlyReconciliationController extends BaseController {
                     dto.setPurchaseDeptName(sysDept.getDeptName());
                 }
                 // 采购服务站名称
-                List<SysDictData> data = dictTypeService.selectDictDataByType("purchase_services");
+                List<SysDictData> data = dictTypeService.selectDictDataByType(Constants.PURCHASE_SERVICES);
                 if (!ObjectUtils.isEmpty(data)) {
                     List<SysDictData> collect = data.stream()
                             .filter(d -> d.getDictValue().equals(dto.getPurchaseServices())).collect(Collectors.toList());

+ 1 - 1
purchase-admin/src/main/resources/application-test.yml

@@ -15,7 +15,7 @@ purchase:
   # 验证码类型 math 数组计算 char 字符验证
   captchaType: math
   # 全部用户是否开启接口权限校验,排除admin用户
-  permissionsEnable: true
+  permissionsEnable: false
 
 # 开发环境配置
 server:

+ 13 - 5
purchase-common/src/main/java/com/ozs/common/constant/Constants.java

@@ -7,8 +7,7 @@ import io.jsonwebtoken.Claims;
  *
  * @author ruoyi
  */
-public class Constants
-{
+public class Constants {
     /**
      * UTF-8 字符集
      */
@@ -132,11 +131,20 @@ public class Constants
     /**
      * 定时任务白名单配置(仅允许访问的包名,如其他需要可以自行添加)
      */
-    public static final String[] JOB_WHITELIST_STR = { "com.ozs" };
+    public static final String[] JOB_WHITELIST_STR = {"com.ozs"};
 
     /**
      * 定时任务违规的字符
      */
-    public static final String[] JOB_ERROR_STR = { "java.net.URL", "javax.naming.InitialContext", "org.yaml.snakeyaml",
-            "org.springframework", "org.apache", "com.ozs.common.utils.file", "com.ozs.common.config" };
+    public static final String[] JOB_ERROR_STR = {"java.net.URL", "javax.naming.InitialContext", "org.yaml.snakeyaml",
+            "org.springframework", "org.apache", "com.ozs.common.utils.file", "com.ozs.common.config"};
+
+    // 項目屬性
+    public static final String SYS_PROJECT_ATTR = "sys_project_attr";
+
+    // 項目类型
+    public static final String SYS_PROJECT_TYPE = "sys_project_type";
+
+    // 采购服务站
+    public static final String PURCHASE_SERVICES = "purchase_services";
 }

+ 9 - 0
purchase-common/src/main/java/com/ozs/common/enums/ProjectAttribute.java

@@ -26,4 +26,13 @@ public enum ProjectAttribute {
     public String getInfo() {
         return info;
     }
+
+    public static String getInfoByCode(String code) {
+        for (ProjectAttribute value : ProjectAttribute.values()) {
+            if (value.code.equals(code)) {
+                return value.info;
+            }
+        }
+        return null;
+    }
 }

+ 73 - 0
purchase-system/src/main/java/com/ozs/base/vo/BaseProjectInfo.java

@@ -0,0 +1,73 @@
+package com.ozs.base.vo;
+
+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 com.fasterxml.jackson.annotation.JsonFormat;
+import com.ozs.common.annotation.Excel;
+import com.ozs.common.core.domain.BaseEntity;
+import com.ozs.system.domain.SysFileInfo;
+import io.swagger.annotations.ApiModel;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+@ApiModel("项目信息")
+public class BaseProjectInfo
+{
+    private static final long serialVersionUID = 1L;
+
+    /*实际完成采购时间是指采购执行管理中,点击填制中标信息,弹出框中,填写的中标时间
+    * 实际提报时间就是指采购需求管理中"提交"的时间*/
+
+    /** 主键 */
+    @TableId(type = IdType.AUTO)
+    private Long demandId;
+
+    /** 采购单位(登录账号的单位) */
+    @Excel(name = "采购单位", readConverterExp = "登=录账号的单位")
+    @TableField(exist = false)
+    private String purchaseDeptName;
+
+    /** 项目名称 */
+    @Excel(name = "项目名称")
+    private String projectName;
+
+    /** 项目类型(0:装备类;1:物资类;2:服务类;3:工程类) */
+    @Excel(name = "项目类型", readConverterExp = "0=:装备类;1:物资类;2:服务类;3:工程类")
+    private String projectTypeStr;
+
+
+    /** 概算金额(万元(保留小数点后两位) */
+    @Excel(name = "概算金额(万元", readConverterExp = "保=留小数点后两位")
+    private BigDecimal evaluation;
+
+
+    /** 项目属性(0:应急应战项目, 1:重大规划任务项目, 2:规划任务项目, 3:一般项目) */
+    @Excel(name = "项目属性", readConverterExp = "0=:应急应战项目,,1=:重大规划任务项目,,2=:规划任务项目,,3=:一般项目")
+    private String projectAttrStr;
+
+
+    /** 抽取招标代理机构id */
+    @Excel(name = "抽取招标代理机构")
+    private String agencyName;
+
+    /** 抽取招标代理机构时间 */
+    @Excel(name = "抽取招标代理机构时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date extractAgencyTime;
+
+
+
+}