فهرست منبع

Merge branch 'master' of http://124.70.58.209:3000/ytrd-project-management/purchase

sunhh 2 سال پیش
والد
کامیت
bf5577ac1e
25فایلهای تغییر یافته به همراه1301 افزوده شده و 2 حذف شده
  1. 106 0
      purchase-admin/src/main/java/com/ozs/web/controller/base/BaseAgencyController.java
  2. 78 0
      purchase-admin/src/main/java/com/ozs/web/controller/plan/PlanOfYearsController.java
  3. 1 1
      purchase-admin/src/main/resources/application.yml
  4. 1 1
      purchase-admin/src/main/resources/mybatis/mybatis-config.xml
  5. 5 0
      purchase-common/src/main/java/com/ozs/common/enums/BusinessType.java
  6. 27 0
      purchase-common/src/main/java/com/ozs/common/enums/DataIsDelete.java
  7. 30 0
      purchase-common/src/main/java/com/ozs/common/enums/PlanPurchaseMode.java
  8. 29 0
      purchase-common/src/main/java/com/ozs/common/enums/ProjectAttribute.java
  9. 29 0
      purchase-common/src/main/java/com/ozs/common/enums/ProjectStatus.java
  10. 29 0
      purchase-common/src/main/java/com/ozs/common/enums/ProjectTypes.java
  11. 32 0
      purchase-common/src/main/java/com/ozs/common/vo/BaseDto.java
  12. 21 0
      purchase-common/src/main/java/com/ozs/common/vo/PageVo.java
  13. 26 0
      purchase-framework/src/main/java/com/ozs/framework/config/MybatisPlusConfig.java
  14. 66 0
      purchase-system/src/main/java/com/ozs/base/domain/BaseAgency.java
  15. 19 0
      purchase-system/src/main/java/com/ozs/base/mapper/BaseAgencyMapper.java
  16. 24 0
      purchase-system/src/main/java/com/ozs/base/service/BaseAgencyService.java
  17. 80 0
      purchase-system/src/main/java/com/ozs/base/service/impl/BaseAgencyServiceImpl.java
  18. 32 0
      purchase-system/src/main/java/com/ozs/base/vo/BaseAgentPageReqVo.java
  19. 118 0
      purchase-system/src/main/java/com/ozs/plan/doman/PlanOfYears.java
  20. 105 0
      purchase-system/src/main/java/com/ozs/plan/doman/vo/requestVo/PlanOfYearsStandardVo.java
  21. 118 0
      purchase-system/src/main/java/com/ozs/plan/doman/vo/responseVo/PlanOfYearsResponseVo.java
  22. 64 0
      purchase-system/src/main/java/com/ozs/plan/mapper/PlanOfYearsMapper.java
  23. 46 0
      purchase-system/src/main/java/com/ozs/plan/service/PlanOfYearsService.java
  24. 95 0
      purchase-system/src/main/java/com/ozs/plan/service/impl/PlanOfYearsServiceImpl.java
  25. 120 0
      purchase-system/src/main/resources/mapper/plan/PlanOfYearsMapper.xml

+ 106 - 0
purchase-admin/src/main/java/com/ozs/web/controller/base/BaseAgencyController.java

@@ -0,0 +1,106 @@
+package com.ozs.web.controller.base;
+
+
+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.service.BaseAgencyService;
+import com.ozs.base.vo.BaseAgentPageReqVo;
+import com.ozs.common.annotation.Log;
+import com.ozs.common.core.controller.BaseController;
+import com.ozs.common.core.domain.AjaxResult;
+import com.ozs.common.enums.BusinessType;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.util.ObjectUtils;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.constraints.NotEmpty;
+import java.util.Date;
+
+
+@Api(tags = "招标代理机构管理")
+@RestController
+@RequestMapping("/base/agency")
+public class BaseAgencyController extends BaseController {
+
+    @Autowired
+    private BaseAgencyService baseAgencyService;
+
+    @ApiOperation(value = "新增招标代理机构")
+    @PostMapping("/insertBaseAgency")
+    @PreAuthorize("@ss.hasPermi('base:agency:add')")
+    @Log(title = "招标代理机构管理", businessType = BusinessType.INSERT)
+    public AjaxResult insertBaseAgency(@NotEmpty(message = "数据为空") @RequestBody BaseAgency baseAgency) {
+//        if (ObjectUtils.isEmpty(baseAgency)) {
+//            return error("数据为空");
+//        }
+        baseAgency.setStatus(0);
+        baseAgency.setCreated(getUserId().toString());
+        baseAgency.setCreateTime(new Date());
+        baseAgency.setUpdated(baseAgency.getCreated());
+        baseAgency.setUpdateTime(baseAgency.getCreateTime());
+        return toAjax(baseAgencyService.insert(baseAgency));
+    }
+
+
+    @ApiOperation(value = "查看招标代理机构")
+    @PostMapping("/getInfo")
+    @PreAuthorize("@ss.hasPermi('base:agency:query')")
+    @Log(title = "招标代理机构管理", businessType = BusinessType.QUERY)
+    public AjaxResult getInfo(@NotEmpty(message = "主键id不能为空")
+                              @RequestParam(value = "id", required = true)
+                                      Long id) {
+        return success(baseAgencyService.getInfo(id));
+    }
+
+
+    @ApiOperation(value = "修改招标代理机构信息")
+    @PostMapping("/updateInfo")
+    @PreAuthorize("@ss.hasPermi('base:agency:edit')")
+    @Log(title = "招标代理机构管理", businessType = BusinessType.UPDATE)
+    public AjaxResult updateInfo(@NotEmpty(message = "数据为空")
+                                             @RequestBody BaseAgency baseAgency) {
+        baseAgency.setUpdateTime(new Date());
+        baseAgency.setUpdated(getUserId().toString());
+        return toAjax(baseAgencyService.updateInfo(baseAgency));
+    }
+
+    @ApiOperation(value = "操作招标代理机构黑白名单")
+    @PostMapping("/operationBlacklist")
+    @PreAuthorize("@ss.hasPermi('base:agency:edit')")
+    @Log(title = "招标代理机构管理", businessType = BusinessType.UPDATE)
+    public AjaxResult operationBlacklist(@NotEmpty(message = "主键id不能为空")
+                                         @RequestParam(value = "id", required = true)
+                                                 Long id,
+                                         @NotEmpty(message = "状态不能为空")
+                                         @RequestParam(value = "status", required = true)
+                                                 Integer status) {
+
+        BaseAgency build = BaseAgency.builder().id(id).status(status).build();
+        build.setUpdated(getUserId().toString());
+        build.setUpdateTime(new Date());
+        return toAjax(baseAgencyService.operationBlacklist(build));
+    }
+
+    @ApiOperation(value = "删除招标代理机构信息")
+    @PostMapping("/remove")
+    @PreAuthorize("@ss.hasPermi('base:agency:remove')")
+    @Log(title = "招标代理机构管理", businessType = BusinessType.DELETE)
+    public AjaxResult remove(@NotEmpty(message = "主键id不能为空")
+                             @RequestParam(value = "id", required = true)
+                                     Long id) {
+        return toAjax(baseAgencyService.remove(id));
+    }
+
+    @ApiOperation(value = "分页查询招标代理机构信息")
+    @PostMapping("/page")
+    @PreAuthorize("@ss.hasPermi('base:agency:list')")
+    @Log(title = "招标代理机构管理", businessType = BusinessType.QUERY)
+    public AjaxResult page(@NotEmpty(message = "数据为空") @RequestBody BaseAgentPageReqVo vo) {
+        IPage<BaseAgency> page = baseAgencyService.page(new Page<BaseAgency>(vo.getPageNum(), vo.getPageSize()), vo);
+        return success(page);
+    }
+}

+ 78 - 0
purchase-admin/src/main/java/com/ozs/web/controller/plan/PlanOfYearsController.java

@@ -0,0 +1,78 @@
+package com.ozs.web.controller.plan;
+
+import com.ozs.common.core.controller.BaseController;
+import com.ozs.common.core.domain.AjaxResult;
+import com.ozs.common.core.domain.model.LoginUser;
+import com.ozs.common.core.page.TableDataInfo;
+import com.ozs.framework.web.service.TokenService;
+import com.ozs.plan.doman.PlanOfYears;
+import com.ozs.plan.doman.vo.requestVo.PlanOfYearsStandardVo;
+import com.ozs.plan.doman.vo.responseVo.PlanOfYearsResponseVo;
+import com.ozs.plan.service.PlanOfYearsService;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+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.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+
+/**
+ * 年度计划信息控制层
+ *
+ * @author buzhanyi
+ */
+@RestController
+@RequestMapping("/plan/planOfYears")
+public class PlanOfYearsController extends BaseController {
+    @Autowired
+    private PlanOfYearsService planOfYearsService;
+    @Autowired
+    private TokenService tokenService;
+
+    @ApiOperation(value = "查询年度计划")
+    @PostMapping("/list")
+    public TableDataInfo list(@RequestBody PlanOfYearsStandardVo yearsStandardVo) {
+        startPage();
+        List<PlanOfYears> list = planOfYearsService.selectPlanOfYearsList(yearsStandardVo);
+        return getDataTable(list);
+    }
+
+    @ApiOperation(value = "创建年度计划")
+    @PostMapping("/add")
+    public AjaxResult add(@RequestBody PlanOfYearsStandardVo yearsStandardVo, HttpServletRequest request) {
+        //获取采购单位-
+        LoginUser loginUser = tokenService.getLoginUser(request);
+        yearsStandardVo.setPurchaseUnit(loginUser.getDeptId());
+        yearsStandardVo.setCreateBy(String.valueOf(loginUser.getUserId()));
+        return planOfYearsService.insertPlanOfYears(yearsStandardVo);
+    }
+
+    @ApiOperation(value = "修改年度计划")
+    @PostMapping("/update")
+    public AjaxResult update(@RequestBody PlanOfYearsStandardVo yearsStandardVo) {
+        return planOfYearsService.update(yearsStandardVo);
+    }
+
+    @ApiOperation(value = "删除年度计划")
+    @PostMapping("/delete")
+    public AjaxResult delete(@RequestBody PlanOfYearsStandardVo yearsStandardVo) {
+        return planOfYearsService.deletePlanOfYearsById(yearsStandardVo.getPlanYearId());
+    }
+
+    //@ApiOperation(value = "删除年度计划")
+    //@PostMapping("/delete")
+    //public AjaxResult delete(@RequestBody Long[] planIds) {
+    //    return planOfYearsService.deletePlanOfYearsByIds(planIds);
+    //}
+
+    @ApiOperation(value = "根据id获取年度计划信息")
+    @PostMapping("/view")
+    public AjaxResult view(@RequestBody PlanOfYearsStandardVo yearsStandardVo) {
+        return planOfYearsService.view(yearsStandardVo);
+    }
+
+
+}

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

@@ -10,4 +10,4 @@ server:
 # Spring配置
 spring:
   profiles:
-    active: druid,test
+    active: druid,dev

+ 1 - 1
purchase-admin/src/main/resources/mybatis/mybatis-config.xml

@@ -15,7 +15,7 @@ PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 		<!-- 指定 MyBatis 所用日志的具体实现 -->
         <setting name="logImpl"                  value="SLF4J"  />
         <!-- 使用驼峰命名法转换字段 -->
-		<!-- <setting name="mapUnderscoreToCamelCase" value="true"/> -->
+		 <setting name="mapUnderscoreToCamelCase" value="true"/>
 	</settings>
 
     <plugins>

+ 5 - 0
purchase-common/src/main/java/com/ozs/common/enums/BusinessType.java

@@ -56,4 +56,9 @@ public enum BusinessType
      * 清空数据
      */
     CLEAN,
+
+    /**
+     * 查看数据
+     */
+    QUERY,
 }

+ 27 - 0
purchase-common/src/main/java/com/ozs/common/enums/DataIsDelete.java

@@ -0,0 +1,27 @@
+package com.ozs.common.enums;
+
+/**
+ * 数据的删除状态枚举
+ *
+ * @author buzhanyi
+ */
+public enum DataIsDelete {
+    DataNOTDelete("0", "正常数据"),
+    DataDeleted("1", "已删除");
+
+    private final String code;
+    private final String info;
+
+    DataIsDelete(String code, String info) {
+        this.code = code;
+        this.info = info;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public String getInfo() {
+        return info;
+    }
+}

+ 30 - 0
purchase-common/src/main/java/com/ozs/common/enums/PlanPurchaseMode.java

@@ -0,0 +1,30 @@
+package com.ozs.common.enums;
+
+/**
+ * 采购方式
+ *
+ * @author buzhanyi
+ */
+public enum PlanPurchaseMode {
+    INVITETENDERS("0", "公开招标"),
+    SINGSOURCE("1", "单一来源"),
+    INVITATIONTENDER("2", "邀请招标"),
+    NEGOTIATION("3", "竞争式谈判"),
+    INQUIRY("4", "询价");
+
+    private final String code;
+    private final String info;
+
+    PlanPurchaseMode(String code, String info) {
+        this.code = code;
+        this.info = info;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public String getInfo() {
+        return info;
+    }
+}

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

@@ -0,0 +1,29 @@
+package com.ozs.common.enums;
+
+/**
+ * 项目类型
+ *
+ * @author buzhanyi
+ */
+public enum ProjectAttribute {
+    emergency("0", "应急应战项目"),
+    majorPlan("1", "重大规划任务项目"),
+    plan("2", "规划任务项目"),
+    commonly("3", "一般项目");
+
+    private final String code;
+    private final String info;
+
+    ProjectAttribute(String code, String info) {
+        this.code = code;
+        this.info = info;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public String getInfo() {
+        return info;
+    }
+}

+ 29 - 0
purchase-common/src/main/java/com/ozs/common/enums/ProjectStatus.java

@@ -0,0 +1,29 @@
+package com.ozs.common.enums;
+
+/**
+ * 项目审核状态
+ *
+ * @author buzhanyi
+ */
+public enum ProjectStatus {
+    PLANWAITCOMMIT("0", "计划待提交"),
+    PLANWAIEXAMINE("1", "计划待审核"),
+    PLANTOBACK("2", "计划已退回"),
+    PLANTOEXAMINE("3", "计划已审核");
+
+    private final String code;
+    private final String info;
+
+    ProjectStatus(String code, String info) {
+        this.code = code;
+        this.info = info;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public String getInfo() {
+        return info;
+    }
+}

+ 29 - 0
purchase-common/src/main/java/com/ozs/common/enums/ProjectTypes.java

@@ -0,0 +1,29 @@
+package com.ozs.common.enums;
+
+/**
+ * 项目类型
+ *
+ * @author buzhanyi
+ */
+public enum ProjectTypes {
+    EQUIPMENTTYPE("0", "装备类"),
+    MATERIALTYPE("1", "物资类"),
+    SERVICESTYPE("2", "服务类"),
+    PLANTOEXAMINETYPE("3", "工程类");
+
+    private final String code;
+    private final String info;
+
+    ProjectTypes(String code, String info) {
+        this.code = code;
+        this.info = info;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public String getInfo() {
+        return info;
+    }
+}

+ 32 - 0
purchase-common/src/main/java/com/ozs/common/vo/BaseDto.java

@@ -0,0 +1,32 @@
+package com.ozs.common.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@ApiModel("入库基础参数实体")
+public class BaseDto {
+
+    // 创建时间
+    @ApiModelProperty("创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+    // 创建人
+    @ApiModelProperty("创建人")
+    private String created;
+    // 修改时间
+    @ApiModelProperty("修改时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date updateTime;
+    // 修改人
+    @ApiModelProperty("修改人")
+    private String updated;
+}

+ 21 - 0
purchase-common/src/main/java/com/ozs/common/vo/PageVo.java

@@ -0,0 +1,21 @@
+package com.ozs.common.vo;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@ApiModel("分页实体")
+public class PageVo {
+    /** 当前记录起始索引 */
+    @ApiModelProperty("页数")
+    private Long pageNum;
+    /** 每页显示记录数 */
+    @ApiModelProperty("页大小")
+    private Long pageSize;
+}

+ 26 - 0
purchase-framework/src/main/java/com/ozs/framework/config/MybatisPlusConfig.java

@@ -0,0 +1,26 @@
+package com.ozs.framework.config;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class MybatisPlusConfig{
+
+    @Bean
+    public MybatisPlusInterceptor mybatisPlusInterceptor() {
+        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
+        PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();
+        paginationInnerInterceptor.setOptimizeJoin(true);
+        paginationInnerInterceptor.setDbType(DbType.MYSQL);
+        paginationInnerInterceptor.setOverflow(true);
+        interceptor.addInnerInterceptor(paginationInnerInterceptor);
+        OptimisticLockerInnerInterceptor optimisticLockerInnerInterceptor = new OptimisticLockerInnerInterceptor();
+        interceptor.addInnerInterceptor(optimisticLockerInnerInterceptor);
+        return interceptor;
+    }
+
+}

+ 66 - 0
purchase-system/src/main/java/com/ozs/base/domain/BaseAgency.java

@@ -0,0 +1,66 @@
+package com.ozs.base.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ozs.common.vo.BaseDto;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotEmpty;
+import java.util.Date;
+
+/**
+ * 代理机构管理
+ *
+ * @author sunhh
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+@ApiModel("代理机构参数实体")
+public class BaseAgency extends BaseDto {
+
+    @ApiModelProperty("主键ID")
+    @TableId(type = IdType.AUTO)
+    private Long id;
+    // 代理机构名称
+    @ApiModelProperty("代理机构名称")
+    @NotBlank(message = "代理机构名称不能为空")
+    private String companyName;
+    // 类型
+    @ApiModelProperty("类型")
+    @NotEmpty(message = "类型不能为空")
+    private Integer companyType;
+    // 注册时间
+    @ApiModelProperty("注册时间")
+    @NotEmpty(message = "注册时间不能为空")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date registTime;
+    // 公司性质
+    @ApiModelProperty("公司性质")
+    @NotBlank(message = "公司性质不能为空")
+    private String companyNature;
+    // 公司办公地址
+    @ApiModelProperty("公司办公地址")
+    @NotBlank(message = "公司办公地址不能为空")
+    private String companyAddr;
+    // 公司业务联系人
+    @ApiModelProperty("公司业务联系人")
+    private String companyContacts;
+    // 公司业务联系电话
+    @ApiModelProperty("公司业务联系电话")
+    private String contactsPhone;
+    // 经营范围
+    @ApiModelProperty("经营范围")
+    private String businessScope;
+    // 状态0白,1黑
+    @ApiModelProperty("状态0白,1黑")
+    private Integer status;
+}

+ 19 - 0
purchase-system/src/main/java/com/ozs/base/mapper/BaseAgencyMapper.java

@@ -0,0 +1,19 @@
+package com.ozs.base.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ozs.base.domain.BaseAgency;
+import com.ozs.base.domain.BaseSupplier;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * 招标代理机构
+ *
+ * @author sunhh
+ */
+@Mapper
+public interface BaseAgencyMapper extends BaseMapper<BaseAgency> {
+
+
+}

+ 24 - 0
purchase-system/src/main/java/com/ozs/base/service/BaseAgencyService.java

@@ -0,0 +1,24 @@
+package com.ozs.base.service;
+
+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.vo.BaseAgentPageReqVo;
+
+/**
+ * 代理机构
+ */
+public interface BaseAgencyService {
+
+    int insert(BaseAgency baseAgency);
+
+    BaseAgency getInfo(Long id);
+
+    int updateInfo(BaseAgency baseAgency);
+
+    int operationBlacklist(BaseAgency baseAgency);
+
+    IPage<BaseAgency> page(Page<BaseAgency> baseAgencyPage, BaseAgentPageReqVo vo);
+
+    int remove(Long id);
+}

+ 80 - 0
purchase-system/src/main/java/com/ozs/base/service/impl/BaseAgencyServiceImpl.java

@@ -0,0 +1,80 @@
+package com.ozs.base.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ozs.base.domain.BaseAgency;
+import com.ozs.base.mapper.BaseAgencyMapper;
+import com.ozs.base.service.BaseAgencyService;
+import com.ozs.base.vo.BaseAgentPageReqVo;
+import com.ozs.common.constant.HttpStatus;
+import com.ozs.common.exception.base.BaseException;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.ObjectUtils;
+
+import java.util.Arrays;
+
+@Service
+@Slf4j
+public class BaseAgencyServiceImpl implements BaseAgencyService {
+
+    @Autowired
+    private BaseAgencyMapper baseAgencyMapper;
+
+
+    @Override
+    public int insert(BaseAgency baseAgency) {
+        return baseAgencyMapper.insert(baseAgency);
+    }
+
+    @Override
+    public BaseAgency getInfo(Long id) {
+        return baseAgencyMapper.selectById(id);
+    }
+
+    @Override
+    public int updateInfo(BaseAgency baseAgency) {
+        return baseAgencyMapper.updateById(baseAgency);
+    }
+
+
+    @Override
+    public int operationBlacklist(BaseAgency baseAgency) {
+        LambdaUpdateWrapper<BaseAgency> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
+        //eq是指你查询的条件,set是指你修改的值
+        lambdaUpdateWrapper
+                .eq(BaseAgency::getId, baseAgency.getId())
+                .set(BaseAgency::getStatus, baseAgency.getStatus())
+                .set(BaseAgency::getUpdated, baseAgency.getUpdated()).
+                set(BaseAgency::getUpdateTime, baseAgency.getUpdateTime());
+        return baseAgencyMapper.update(null, lambdaUpdateWrapper);
+    }
+
+    @Override
+    public IPage<BaseAgency> page(Page<BaseAgency> baseAgencyPage, BaseAgentPageReqVo vo) {
+        LambdaQueryWrapper<BaseAgency> lw = new LambdaQueryWrapper<BaseAgency>();
+        if(!StringUtils.isBlank(vo.getCompanyName())){
+            lw.like(BaseAgency::getCompanyName,vo.getCompanyName());
+        }
+        if(!StringUtils.isBlank(vo.getCompanyNature())){
+            lw.eq(BaseAgency::getCompanyNature,vo.getCompanyNature());
+        }
+        if(!ObjectUtils.isEmpty(vo.getStatus())){
+            lw.eq(BaseAgency::getStatus,vo.getStatus());
+        }
+        return baseAgencyMapper.selectPage(baseAgencyPage,lw);
+    }
+
+    @Override
+    public int remove(Long id) {
+        BaseAgency baseAgency = baseAgencyMapper.selectById(id);
+        if(ObjectUtils.isEmpty(baseAgency)){
+            throw  new BaseException("BaseAgency", HttpStatus.NO_CONTENT+"", Arrays.asList(id).toArray(),"数据不存在");
+        }
+        return baseAgencyMapper.deleteById(id);
+    }
+}

+ 32 - 0
purchase-system/src/main/java/com/ozs/base/vo/BaseAgentPageReqVo.java

@@ -0,0 +1,32 @@
+package com.ozs.base.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ozs.common.core.domain.BaseEntity;
+import com.ozs.common.vo.PageVo;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotEmpty;
+import java.util.Date;
+
+
+@ApiModel(value = "BaseAgentPageReqVo", description = "代理机构分页查询实体")
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class BaseAgentPageReqVo extends PageVo {
+
+
+    @ApiModelProperty("代理机构名称")
+    private String companyName;
+    // 公司性质
+    @ApiModelProperty("公司性质")
+    private String companyNature;
+    // 状态0白,1黑
+    @ApiModelProperty("状态0白,1黑")
+    private Integer status;
+}

+ 118 - 0
purchase-system/src/main/java/com/ozs/plan/doman/PlanOfYears.java

@@ -0,0 +1,118 @@
+package com.ozs.plan.doman;
+
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ozs.common.core.domain.BaseEntity;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @author buzhanyi
+ */
+@Data
+public class PlanOfYears extends BaseEntity {
+
+    /**
+     * 主键编号
+     */
+    private Long planYearId;
+    /**
+     * 采购单位(登录账号的单位)
+     */
+    @NotNull(message = "采购单位不能为空")
+    private Long purchaseUnit;
+    /**
+     * 项目名称
+     */
+    @NotNull(message = "项目名称不能为空")
+    private String projectName;
+    /**
+     * 项目类型(1:装备类;2:物资类;3:服务类;)
+     */
+    @NotNull(message = "项目类型不能为空")
+    private String projectType;
+    /**
+     * 需求概况
+     */
+    @NotNull(message = "需求概况不能为空")
+    private String demandOverview;
+    /**
+     * 概算金额(万元(保留小数点后两位)
+     */
+    @NotNull(message = "概算金额不能为空")
+    private BigDecimal evaluation;
+    /**
+     * 是否为超限额计划()
+     */
+    @NotNull(message = "是否为超限额计划不能为空")
+    private String isExcess;
+    /**
+     * 采购服务站
+     */
+    @NotNull(message = "采购服务站不能为空")
+    private String purchaseServices;
+    /**
+     * 采购方式
+     */
+    @NotNull(message = "采购方式不能为空")
+    private String purchaseMode;
+    /**
+     * 计划提报需求时间--->需求单位成功提报采购需求的日期(具体到月)
+     */
+    @NotNull(message = "计划提报需求时间不能为空")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date demandCommitTime;
+    /**
+     * 计划完成采购时间--->公示中标结果的日期,即填制中标信息的日期(具体到月)
+     */
+    @NotNull(message = "计划完成采购时间不能为空")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date purchaseFinishTime;
+    /**
+     * 计划交付时间--->供应商完成并交付后,使用单位收到标的日期,即填制建设文档的日期
+     */
+    @NotNull(message = "计划交付时间不能为空")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date deliverTime;
+    /**
+     * 项目属性--->应急应战项目、重大规划任务项目、规划任务项目或一般项目
+     */
+    @NotNull(message = "项目属性不能为空")
+    private String projectAttribute;
+    /**
+     * 计划调整情况及理由--->如计划需要变更,在填写申请修改时需填写调整情况及理由,审核单位审核通过后显示
+     */
+    @NotNull(message = "计划调整情况及理由不能为空")
+    private String readjustOfPlan;
+    /**
+     * 备注
+     */
+    private String remarks;
+
+    /**
+     * 项目状态--->包括计划待提交、计划待审核、计划已退回、计划已审核
+     */
+    private String projectStatus;
+    /**
+     * 退回原因--->审核不通过就是退回
+     */
+    private String reason_of_return;
+    /**
+     * 创建者
+     */
+    private String createBy;
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+    /**
+     * 逻辑删除字段--->(0:正常,1:已删除)
+     */
+    private Integer isDelete;
+
+
+}

+ 105 - 0
purchase-system/src/main/java/com/ozs/plan/doman/vo/requestVo/PlanOfYearsStandardVo.java

@@ -0,0 +1,105 @@
+package com.ozs.plan.doman.vo.requestVo;
+
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ozs.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @author buzhanyi
+ */
+@Data
+public class PlanOfYearsStandardVo extends BaseEntity {
+
+    /**
+     * 主键编号
+     */
+    @ApiModelProperty(value = "主键编号")
+    private Long planYearId;
+
+    /**
+     * 采购单位(登录账号的单位)
+     */
+    @ApiModelProperty(value = "采购单位")
+    private Long purchaseUnit;
+
+    /**
+     * 项目名称
+     */
+    @ApiModelProperty(value = "项目名称")
+    private String projectName;
+    /**
+     * 项目类型(1:装备类;2:物资类;3:服务类;)
+     */
+    @ApiModelProperty(value = "项目类型不能为空(1:装备类;2:物资类;3:服务类;)")
+    private String projectType;
+
+    /**
+     * 需求概况
+     */
+    @ApiModelProperty(value = "需求概况")
+    private String demandOverview;
+    /**
+     * 概算金额(万元(保留小数点后两位)
+     */
+    @ApiModelProperty(value = "概算金额")
+    private BigDecimal evaluation;
+    /**
+     * 是否为超限额计划(0:未超额,1:超额)
+     */
+    @ApiModelProperty(value = "是否为超限额计划(0:未超额,1:超额)")
+    private String isExcess;
+    /**
+     * 采购服务站
+     */
+    @ApiModelProperty(value = "采购服务站")
+    private String purchaseServices;
+    /**
+     * 采购方式
+     */
+    @ApiModelProperty(value = "采购方式")
+    private String purchaseMode;
+    /**
+     * 计划提报需求时间--->需求单位成功提报采购需求的日期(具体到月)
+     */
+    @ApiModelProperty(value = "计划提报需求时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date demandCommitTime;
+    /**
+     * 计划完成采购时间--->公示中标结果的日期,即填制中标信息的日期(具体到月)
+     */
+    @ApiModelProperty(value = "计划完成采购时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date purchaseFinishTime;
+    /**
+     * 计划交付时间--->供应商完成并交付后,使用单位收到标的日期,即填制建设文档的日期
+     */
+    @ApiModelProperty(value = "计划交付时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date deliverTime;
+    /**
+     * 项目属性--->应急应战项目、重大规划任务项目、规划任务项目或一般项目
+     */
+    @ApiModelProperty(value = "项目属性")
+    private String projectAttribute;
+    /**
+     * 项目状态--->包括计划待提交、计划待审核、计划已退回、计划已审核
+     */
+    @ApiModelProperty(value = "项目状态")
+    private String projectStatus;
+    /**
+     * 备注
+     */
+    @ApiModelProperty(value = "备注")
+    private String remarks;
+    /**
+     * 创建者
+     */
+    private String createBy;
+}

+ 118 - 0
purchase-system/src/main/java/com/ozs/plan/doman/vo/responseVo/PlanOfYearsResponseVo.java

@@ -0,0 +1,118 @@
+package com.ozs.plan.doman.vo.responseVo;
+
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ozs.common.annotation.Excel;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @author buzhanyi
+ */
+@Data
+public class PlanOfYearsResponseVo {
+
+    /**
+     * 主键编号
+     */
+    private Long planYearId;
+    /**
+     * 采购单位(登录账号的单位)
+     */
+    @Excel(name = "采购单位")
+    private Long purchaseUnit;
+    /**
+     * 项目名称
+     */
+    @Excel(name = "项目名称")
+    private String projectName;
+    /**
+     * 需求概况
+     */
+    @Excel(name = "需求概况")
+    private String demandOverview;
+    /**
+     * 概算金额(万元(保留小数点后两位)
+     */
+    @Excel(name = "概算金额")
+    private BigDecimal evaluation;
+    /**
+     * 是否为超限额计划
+     */
+    @Excel(name = "是否为超限额计划")
+    private String isExcess;
+    /**
+     * 采购服务站
+     */
+    @Excel(name = "采购服务站")
+    private String purchaseServices;
+    /**
+     * 采购方式
+     */
+    @Excel(name = "采购方式")
+    private String purchaseMode;
+    /**
+     * 计划提报需求时间--->需求单位成功提报采购需求的日期(具体到月)
+     */
+    @Excel(name = "计划提报需求时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date demandCommitTime;
+    /**
+     * 计划完成采购时间--->公示中标结果的日期,即填制中标信息的日期(具体到月)
+     */
+    @Excel(name = "计划完成采购时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date purchaseFinishTime;
+    /**
+     * 计划交付时间--->供应商完成并交付后,使用单位收到标的日期,即填制建设文档的日期
+     */
+    @Excel(name = "计划交付时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date deliverTime;
+    /**
+     * 项目属性--->应急应战项目、重大规划任务项目、规划任务项目或一般项目
+     */
+    @Excel(name = "项目属性")
+    private String projectAttribute;
+    /**
+     * 计划调整情况及理由--->如计划需要变更,在填写申请修改时需填写调整情况及理由,审核单位审核通过后显示
+     */
+    @Excel(name = "计划调整情况及理由")
+    private String readjustOfPlan;
+    /**
+     * 备注
+     */
+    @Excel(name = "备注")
+    private String remarks;
+    /**
+     * 项目状态--->包括计划待提交、计划待审核、计划已退回、计划已审核
+     */
+    @Excel(name = "项目状态")
+    private String projectStatus;
+
+
+    @Override
+    public String toString() {
+        return "PlanOfYears{" +
+                "planYearId=" + planYearId +
+                ", purchaseUnit=" + purchaseUnit +
+                ", projectName='" + projectName + '\'' +
+                ", demandOverview='" + demandOverview + '\'' +
+                ", evaluation=" + evaluation +
+                ", isExcess=" + isExcess +
+                ", purchaseServices=" + purchaseServices +
+                ", purchaseMode=" + purchaseMode +
+                ", demandCommitTime=" + demandCommitTime +
+                ", purchaseFinishTime=" + purchaseFinishTime +
+                ", deliverTime=" + deliverTime +
+                ", projectAttribute=" + projectAttribute +
+                ", readjustOfPlan='" + readjustOfPlan + '\'' +
+                ", remarks='" + remarks + '\'' +
+                ", projectStatus='" + projectStatus +
+
+                '}';
+    }
+}

+ 64 - 0
purchase-system/src/main/java/com/ozs/plan/mapper/PlanOfYearsMapper.java

@@ -0,0 +1,64 @@
+package com.ozs.plan.mapper;
+
+
+import com.ozs.base.mapper.BaseSupplierMapper;
+import com.ozs.plan.doman.PlanOfYears;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 用户与角色关联表 数据层
+ *
+ * @author bu
+ */
+@Mapper
+public interface PlanOfYearsMapper {
+
+    /**
+     * 查询年度计划记录集合
+     *
+     * @param planOfYears 年度计划请求对象
+     * @return 年度计划记录集合
+     */
+    public List<PlanOfYears> selectPlanOfYearsList(PlanOfYears planOfYears);
+
+    /**
+     * 创建年度计划
+     *
+     * @param planOfYears 年度计划请求对象
+     */
+    public int insertPlanOfYears(PlanOfYears planOfYears);
+
+    /**
+     * 批量删除年度计划
+     *
+     * @param planIds 需要删除的年度计划ID
+     * @return 结果
+     */
+    public int deletePlanOfYearsByIds(Long[] planIds);
+
+    /**
+     * 查询项目名称是否存在
+     *
+     * @param projectName 项目名称
+     * @return 结果
+     */
+    public int countProjectName(String projectName);
+
+    PlanOfYears getById(Long planYearId);
+
+    /**
+     * 查询项目名称是否存在(除自己以外)
+     *
+     * @param projectName 项目名称
+     * @return 结果
+     */
+    public int countProjectNameOther(@Param("projectName") String projectName, @Param("planYearId") String planYearId);
+
+    public int updateById(PlanOfYears ofYears);
+
+
+    public int deletePlanOfYearsById(Long planId);
+}

+ 46 - 0
purchase-system/src/main/java/com/ozs/plan/service/PlanOfYearsService.java

@@ -0,0 +1,46 @@
+package com.ozs.plan.service;
+
+
+import com.ozs.common.core.domain.AjaxResult;
+import com.ozs.plan.doman.PlanOfYears;
+import com.ozs.plan.doman.vo.requestVo.PlanOfYearsStandardVo;
+import com.ozs.plan.doman.vo.responseVo.PlanOfYearsResponseVo;
+
+import java.util.List;
+
+/**
+ * 系统访问日志情况信息 服务层
+ *
+ * @author bu
+ */
+public interface PlanOfYearsService {
+
+    /**
+     * 查询年度计划记录集合
+     *
+     * @param vo 年度计划请求对象
+     * @return 年度计划记录集合
+     */
+    public List<PlanOfYears> selectPlanOfYearsList(PlanOfYearsStandardVo vo);
+
+    /**
+     * 创建年度计划
+     *
+     * @param yearsStandardVo 年度计划请求对象
+     */
+    public AjaxResult insertPlanOfYears(PlanOfYearsStandardVo yearsStandardVo);
+
+    /**
+     * 批量删除年度计划
+     *
+     * @param planIds 需要删除的年度计划ID
+     * @return 结果
+     */
+    public AjaxResult deletePlanOfYearsByIds(Long[] planIds);
+
+    public AjaxResult deletePlanOfYearsById(Long planYearId);
+
+    public AjaxResult view(PlanOfYearsStandardVo yearsStandardVo);
+
+    public AjaxResult update(PlanOfYearsStandardVo yearsStandardVo);
+}

+ 95 - 0
purchase-system/src/main/java/com/ozs/plan/service/impl/PlanOfYearsServiceImpl.java

@@ -0,0 +1,95 @@
+package com.ozs.plan.service.impl;
+
+import com.ozs.common.core.domain.AjaxResult;
+import com.ozs.common.enums.ProjectStatus;
+import com.ozs.common.utils.bean.BeanUtils;
+import com.ozs.plan.doman.PlanOfYears;
+import com.ozs.plan.doman.vo.requestVo.PlanOfYearsStandardVo;
+import com.ozs.plan.doman.vo.responseVo.PlanOfYearsResponseVo;
+import com.ozs.plan.mapper.PlanOfYearsMapper;
+import com.ozs.plan.service.PlanOfYearsService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author buzhanyi
+ */
+@Service
+public class PlanOfYearsServiceImpl implements PlanOfYearsService {
+
+    @Autowired
+    PlanOfYearsMapper planOfYearsMapper;
+
+    @Override
+    public List<PlanOfYears> selectPlanOfYearsList(PlanOfYearsStandardVo vo) {
+        PlanOfYears ofYears = new PlanOfYears();
+        List<PlanOfYears> planOfYears = new ArrayList<>();
+        try {
+            BeanUtils.copyProperties(vo, ofYears);
+            planOfYears = planOfYearsMapper.selectPlanOfYearsList(ofYears);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return planOfYears;
+    }
+
+    @Override
+    public AjaxResult insertPlanOfYears(PlanOfYearsStandardVo yearsStandardVo) {
+        if (planOfYearsMapper.countProjectName(yearsStandardVo.getProjectName()) > 0) {
+            return AjaxResult.error("该项目名称已经存在");
+        }
+        PlanOfYears ofYears = new PlanOfYears();
+        try {
+            BeanUtils.copyProperties(yearsStandardVo, ofYears);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        //判断是否为超额计划---
+
+        ofYears.setProjectStatus(ProjectStatus.PLANWAITCOMMIT.getCode());
+        ofYears.setCreateTime(new Date());
+        planOfYearsMapper.insertPlanOfYears(ofYears);
+        return AjaxResult.success();
+    }
+
+    @Override
+    public AjaxResult deletePlanOfYearsByIds(Long[] planIds) {
+        planOfYearsMapper.deletePlanOfYearsByIds(planIds);
+        return AjaxResult.success();
+    }
+
+    @Override
+    public AjaxResult deletePlanOfYearsById(Long planId) {
+        planOfYearsMapper.deletePlanOfYearsById(planId);
+        return AjaxResult.success();
+    }
+
+    @Override
+    public AjaxResult view(PlanOfYearsStandardVo yearsStandardVo) {
+        PlanOfYears byId = planOfYearsMapper.getById(yearsStandardVo.getPlanYearId());
+        if (byId == null) {
+            return AjaxResult.error("数据查询失败");
+        }
+        return AjaxResult.success(byId);
+    }
+
+    @Override
+    public AjaxResult update(PlanOfYearsStandardVo yearsStandardVo) {
+        if (planOfYearsMapper.countProjectNameOther(yearsStandardVo.getProjectName(), String.valueOf(yearsStandardVo.getPlanYearId())) > 0) {
+            return AjaxResult.error("该项目名称已经存在");
+        }
+        PlanOfYears ofYears = new PlanOfYears();
+        try {
+            BeanUtils.copyProperties(yearsStandardVo, ofYears);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        planOfYearsMapper.updateById(ofYears);
+        return AjaxResult.success();
+    }
+
+}

+ 120 - 0
purchase-system/src/main/resources/mapper/plan/PlanOfYearsMapper.xml

@@ -0,0 +1,120 @@
+<?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.ozs.plan.mapper.PlanOfYearsMapper">
+
+	<resultMap type="com.ozs.plan.doman.PlanOfYears" id="PlanOfYearsResult">
+		<id property="plan_year_id" column="planYearId"/>
+		<result property="purchase_unit" column="purchaseUnit"/>
+		<result property="project_name" column="projectName"/>
+		<result property="project_type" column="projectType"/>
+		<result property="demand_overview" column="demandOverview"/>
+		<result property="evaluation" column="evaluation"/>
+		<result property="is_excess" column="isExcess"/>
+		<result property="purchase_services" column="purchaseServices"/>
+		<result property="purchase_mode" column="purchaseMode"/>
+		<result property="demand_commit_time" column="demandCommitTime"/>
+		<result property="purchase_finish_time" column="purchaseFinishTime"/>
+		<result property="deliver_time" column="deliverTime"/>
+		<result property="project_attribute" column="projectAttribute"/>
+		<result property="readjust_of_plan" column="readjustOfPlan"/>
+		<result property="remarks" column="remarks"/>
+		<result property="project_status" column="projectStatus"/>
+		<result property="create_by" column="createBy"/>
+		<result property="create_time" column="createTime"/>
+		<result property="is_delete" column="isDelete"/>
+	</resultMap>
+
+	<update id="updateById" parameterType="com.ozs.plan.doman.PlanOfYears">
+		update plan_of_years
+		set purchase_unit=#{purchaseUnit},
+			project_name=#{projectName},
+			project_type=#{projectType},
+			demand_overview=#{demandOverview},
+			evaluation=#{evaluation},
+			is_excess=#{isExcess},
+			purchase_services=#{purchaseServices},
+			purchase_mode=#{purchaseMode},
+			demand_commit_time=#{demandCommitTime},
+			purchase_finish_time=#{purchaseFinishTime},
+			deliver_time=#{deliverTime},
+			project_attribute=#{projectAttribute},
+			readjust_of_plan=#{readjustOfPlan},
+			remarks=#{remarks},
+			project_status=#{projectStatus}
+		where plan_year_id = #{planYearId}
+	</update>
+
+	<select id="selectPlanOfYearsList" parameterType="com.ozs.plan.doman.PlanOfYears" resultMap="PlanOfYearsResult">
+		select * from plan_of_years
+		<where>
+			<if test="projectName != null and projectName != ''">
+				AND project_name like concat('%', #{projectName}, '%')
+			</if>
+			<if test="purchaseServices != null and purchaseServices != ''">
+				AND purchase_services = #{purchaseServices}
+			</if>
+			<if test="isExcess != null and isExcess != ''">
+				AND is_excess like = #{isExcess}
+			</if>
+			<if test="projectStatus != null and projectStatus != ''">
+				AND project_status = #{projectStatus}
+			</if>
+			<if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 -->
+				and date_format(demand_commit_time,'%y%m%d') &gt;= date_format(#{params.beginTime},'%y%m%d')
+			</if>
+			<if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 -->
+				and date_format(demand_commit_time,'%y%m%d') &lt;= date_format(#{params.endTime},'%y%m%d')
+			</if>
+		</where>
+		order by create_time desc
+	</select>
+
+	<select id="countProjectName" resultType="java.lang.Integer" parameterType="java.lang.String">
+		select count(plan_of_years.plan_year_id)
+		from plan_of_years
+		where project_name = #{projectName}
+	</select>
+
+	<select id="getById" resultType="com.ozs.plan.doman.PlanOfYears" parameterType="java.lang.Long">
+		select *
+		from plan_of_years
+		where plan_year_id = #{planYearId}
+	</select>
+
+	<select id="countProjectNameOther" resultType="java.lang.Integer" parameterType="java.lang.String">
+		select count(plan_of_years.plan_year_id)
+		from plan_of_years
+		where project_name = #{projectName}
+		  and plan_year_id != #{planYearId}
+	</select>
+
+	<insert id="insertPlanOfYears" parameterType="com.ozs.plan.doman.PlanOfYears">
+		insert into plan_of_years (purchase_unit, project_name, project_type, demand_overview, evaluation, is_excess,
+								   purchase_services, purchase_mode, demand_commit_time, purchase_finish_time,
+								   deliver_time, project_attribute, readjust_of_plan, remarks, project_status,
+								   create_by, create_time, is_delete)
+		values (#{purchaseUnit}, #{projectName}, #{projectType}, #{demandOverview}, #{evaluation}, #{isExcess},
+				#{purchaseServices}, #{purchaseMode}, #{demandCommitTime}, #{purchaseFinishTime}, #{deliverTime},
+				#{projectAttribute}, #{readjustOfPlan}, #{remarks}, #{projectStatus}, #{createBy}, #{createTime}, 0)
+	</insert>
+
+	<update id="deletePlanOfYearsByIds" parameterType="java.lang.Long">
+		update plan_of_years set is_delete=1 where plan_year_id in
+		<foreach collection="array" item="item" open="(" separator="," close=")">
+			#{item}
+		</foreach>
+	</update>
+
+	<update id="deletePlanOfYearsById" parameterType="java.lang.Long">
+		update plan_of_years
+		set is_delete=1
+		where plan_year_id = #{plan_year_id}
+	</update>
+
+	<!--    <update id="cleanLogininfor">-->
+	<!--        truncate table sys_logininfor-->
+	<!--    </update>-->
+
+</mapper>