ソースを参照

Merge remote-tracking branch 'origin/master'

lichaoliu 4 年 前
コミット
b703532080

+ 40 - 0
src/main/java/com/migao/config/listener/ExcelListener.java

@@ -0,0 +1,40 @@
+package com.migao.config.listener;
+
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.event.AnalysisEventListener;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.List;
+
+/**
+ * @author dingsong
+ */
+@Slf4j
+public class ExcelListener<T> extends AnalysisEventListener<T> {
+    List<T> resultList;
+    public ExcelListener(List<T> resultList) {
+        this.resultList = resultList;
+    }
+
+    /**
+     * 这个每一条数据解析都会来调用
+     *
+     * @param data    one row value. Is is same as {@link AnalysisContext#readRowHolder()}
+     * @param context
+     */
+    @Override
+    public void invoke(T data, AnalysisContext context) {
+        //log.debug("解析到一条数据:{}", JSON.toJSONString(data));
+        resultList.add(data);
+    }
+
+    /**
+     * 所有数据解析完成了 都会来调用
+     *
+     * @param context
+     */
+    @Override
+    public void doAfterAllAnalysed(AnalysisContext context) {
+        log.debug("所有数据解析完成!");
+    }
+}

+ 26 - 0
src/main/java/com/migao/config/response/PageBeanOne.java

@@ -0,0 +1,26 @@
+package com.migao.config.response;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * @author dingsong
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class PageBeanOne<T> {
+
+    private Long page;
+
+    private List<Integer> pages;
+
+    private Long total;
+
+    private List<T> row;
+}

+ 46 - 0
src/main/java/com/migao/config/response/ResponseBuilderOne.java

@@ -0,0 +1,46 @@
+package com.migao.config.response;
+
+
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+/**
+ * @author dingsong
+ */
+public class ResponseBuilderOne<T> {
+    /**
+     * 构建分页
+     *
+     * @param page
+     * @param function
+     * @param <T>
+     * @param <R>
+     * @return
+     */
+    public static <T, R> ResponseBean<PageBeanOne<R>> ok(Page<T> page, Function<? super T, ? extends R> function) {
+        return ResponseBean.<PageBeanOne<R>>builder().data(buildPageBean(page, function)).status(ResponseEnum.OK.status).massage(ResponseEnum.OK.message).build();
+    }
+
+    /**
+     * 构建分页
+     *
+     * @param page
+     * @param function
+     * @param <T>
+     * @param <R>
+     * @return
+     */
+    public static <T, R> PageBeanOne<R> buildPageBean(Page<T> page, Function<? super T, ? extends R> function) {
+        return PageBeanOne
+                .<R>builder()
+                .row(
+                        page.getRecords().stream().map(function).collect(Collectors.toList())
+                )
+                .total(page.getTotal())
+                .page(page.getPages())
+                .build();
+    }
+}

+ 70 - 0
src/main/java/com/migao/controller/SupplierController.java

@@ -0,0 +1,70 @@
+package com.migao.controller;
+
+
+import com.alibaba.excel.EasyExcel;
+import com.migao.config.authority.LoginUtils;
+import com.migao.config.listener.ExcelListener;
+import com.migao.config.response.ResponseBean;
+import com.migao.config.response.ResponseBuilder;
+import com.migao.entity.po.Supplier;
+import com.migao.entity.po.User;
+import com.migao.entity.vo.req.SupplierExcelReq;
+import com.migao.service.SupplierService;
+import com.migao.util.EntityUtils;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestPart;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import java.io.IOException;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author dingsong
+ */
+@Api(tags = "004.供应商模快")
+@RestController
+@RequestMapping("/supplier")
+public class SupplierController {
+    @Resource
+    SupplierService SupplierService;
+
+    @ApiOperation("导入供应商信息")
+    @PostMapping(value = "/importSupplier")
+    public ResponseBean importSupplier(@RequestPart MultipartFile file) {
+        //获取当前登录用户的信息
+        User user = LoginUtils.getUser();
+
+        List<SupplierExcelReq> supplierExcelList = new ArrayList<>();
+        try {
+            EasyExcel.read(file.getInputStream(), SupplierExcelReq.class, new ExcelListener<>(supplierExcelList)).sheet().doRead();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+
+        supplierExcelList.forEach(
+                x -> {
+                    Supplier supplier = EntityUtils.copyProperties(x,Supplier.class);
+                    supplier.setLicenseNumber(Integer.parseInt(x.getLicenseNumber()));
+                    supplier.setPhoneOne(Integer.parseInt(x.getPhoneOne()));
+                    supplier.setPhoneTwo(Integer.parseInt(x.getPhoneTwo()));
+                    supplier.setPhone(Integer.parseInt(x.getPhone()));
+                    supplier.setCompanyCreateTime(x.getCompanyCreateTime().toInstant()
+                            .atZone(ZoneId.systemDefault()).toLocalDateTime());
+                    supplier.setDeleted(0);
+                    supplier.setCreateTime(LocalDateTime.now());
+                    supplier.setCreateUserId(user.getId());
+                    SupplierService.save(supplier);
+                }
+        );
+
+        return ResponseBuilder.ok(200,"导入成功");
+    }
+}

+ 1 - 1
src/main/java/com/migao/entity/po/DemandLibrary.java

@@ -34,7 +34,7 @@ public class DemandLibrary implements Serializable {
     private Integer subProjectId;
 
     @Column(columnDefinition = "int(11) comment '需求编号'")
-    private Integer demandNumber;
+    private String demandNumber;
 
     @Column(columnDefinition = "varchar(255) comment '需求名称'")
     private String demandName;

+ 3 - 2
src/main/java/com/migao/entity/po/Supplier.java

@@ -9,6 +9,7 @@ import org.hibernate.annotations.GenericGenerator;
 
 import javax.persistence.*;
 import java.io.Serializable;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 
 /**
@@ -68,10 +69,10 @@ public class Supplier implements Serializable {
     @Column(name = "project_grades", columnDefinition = "varchar(255) comment '项目评分'")
     private String  projectGrades;
 
-    @Column(name = "business_scope", columnDefinition = "varchar(255) comment '公司营业范围'")
+    @Column(name = "business_scope", columnDefinition = "text comment '公司营业范围'")
     private String  businessScope;
 
-    @Column(name = "remark", columnDefinition = "varchar(255) comment '备注'")
+    @Column(name = "remark", columnDefinition = "text comment '备注'")
     private String  remark;
 
     @Column(name = "company_create_time", columnDefinition = "timestamp DEFAULT CURRENT_TIMESTAMP comment '公司成立时间'")

+ 18 - 0
src/main/java/com/migao/entity/vo/req/DemandLibraryQueryReq.java

@@ -0,0 +1,18 @@
+package com.migao.entity.vo.req;
+
+import com.migao.config.response.BasePageRequest;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author dingsong
+ */
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+public class DemandLibraryQueryReq extends BasePageRequest {
+        @ApiModelProperty(value = "关键字")
+        private String key;
+}

+ 145 - 0
src/main/java/com/migao/entity/vo/req/SupplierExcelReq.java

@@ -0,0 +1,145 @@
+package com.migao.entity.vo.req;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ * @author dingsong
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class SupplierExcelReq {
+    /**
+     * 公司名称
+     */
+    @ExcelProperty(index = 0)
+    private String name;
+
+    /**
+     * 公司资质
+     */
+    @ExcelProperty(index = 1)
+    private String companyAlbum;
+
+    /**
+     * 公司规模
+     */
+    @ExcelProperty(index = 2)
+    private String companySize;
+
+    /**
+     *执照编号
+     */
+    @ExcelProperty(index = 3)
+    private String licenseNumber;
+
+    /**
+     * 法人姓名
+     */
+    @ExcelProperty(index = 4)
+    private String legalPersonName;
+
+    /**
+     * 法人手机号1
+     */
+    @ExcelProperty(index = 5)
+    private String phoneOne;
+
+    /**
+     * 法人手机号2
+     */
+    @ExcelProperty(index = 6)
+    private String phoneTwo;
+
+    /**
+     * 负责人手机号
+     */
+    @ExcelProperty(index = 7)
+    private String phone;
+
+    /**
+     * 注册地址
+     */
+    @ExcelProperty(index = 8)
+    private String address;
+
+    /**
+     * 注册资金
+     */
+    @ExcelProperty(index = 9)
+    private String money;
+
+    /**
+     * 公司营业范围
+     */
+    @ExcelProperty(index = 10)
+    private String  businessScope;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(index = 11)
+    private String  remark;
+
+    /**
+     * 公司成立时间
+     */
+    @ExcelProperty(index = 12)
+    private Date companyCreateTime;
+
+    /**
+     * 内网邮箱
+     */
+    @ExcelProperty(index = 13)
+    private String  intranetMail;
+
+    /**
+     * 外网邮箱
+     */
+    @ExcelProperty(index = 14)
+    private String  outsideMail;
+
+    /**
+     * 开户行号
+     */
+    @ExcelProperty(index = 15)
+    private String  openingBankNumber;
+
+    /**
+     * 开户行
+     */
+    @ExcelProperty(index = 16)
+    private String  openingBank;
+
+    /**
+     * 银行账号
+     */
+    @ExcelProperty(index = 17)
+    private String  bankAccount;
+
+    /**
+     * 开户联行号-电子
+     */
+    @ExcelProperty(index = 18)
+    private String  openingBankNumberD;
+
+    /**
+     * 开户行-电子
+     */
+    @ExcelProperty(index = 19)
+    private String  openingBankD;
+
+    /**
+     * 银行账号-电子
+     */
+    @ExcelProperty(index = 20)
+    private String  bankAccountD;
+}

+ 3 - 2
src/main/java/com/migao/entity/vo/res/DemandLibraryQueryRes.java → src/main/java/com/migao/entity/vo/res/DemandLibraryPageQueryRes.java

@@ -1,5 +1,6 @@
 package com.migao.entity.vo.res;
 
+import com.migao.config.response.BasePageRequest;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
@@ -16,12 +17,12 @@ import java.time.LocalDateTime;
 @AllArgsConstructor
 @Builder
 @Data
-public class DemandLibraryQueryRes {
+public class DemandLibraryPageQueryRes extends BasePageRequest {
     @ApiModelProperty(value = "主键")
     private Integer id;
 
     @ApiModelProperty(value = "需求编号")
-    private Integer demandNumber;
+    private String demandNumber;
 
     @ApiModelProperty(value = "需求名称")
     private String demandName;

+ 23 - 0
src/main/java/com/migao/service/DemandLibraryService.java

@@ -1,10 +1,14 @@
 package com.migao.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.migao.config.response.BasePageRequest;
+import com.migao.config.response.PageBeanOne;
 import com.migao.config.response.ResponseBean;
 import com.migao.entity.po.DemandLibrary;
 import com.migao.entity.vo.req.DemandLibraryInsertReq;
+import com.migao.entity.vo.req.DemandLibraryQueryReq;
 import com.migao.entity.vo.req.DemandLibraryUpdateReq;
+import com.migao.entity.vo.res.DemandLibraryPageQueryRes;
 
 /**
  * @author dingsong
@@ -31,5 +35,24 @@ public interface DemandLibraryService extends IService<DemandLibrary> {
      */
     ResponseBean<?> update(DemandLibraryUpdateReq libraryUpdateReq);
 
+    /**
+     * 分页查询所有需求数据
+     * @param basePageRequest
+     * @return
+     */
+    ResponseBean<PageBeanOne<DemandLibraryPageQueryRes>> pageQuery(BasePageRequest basePageRequest);
+
+    /**
+     * 分页查询当前用户需求数据
+     * @param basePageRequest
+     * @return
+     */
+    ResponseBean<PageBeanOne<DemandLibraryPageQueryRes>> pageQueryById(BasePageRequest basePageRequest);
 
+    /**
+     * 分页模糊查询所有需求数据
+     * @param demandLibraryQuery
+     * @return
+     */
+    ResponseBean<PageBeanOne<DemandLibraryPageQueryRes>> pageQuery(DemandLibraryQueryReq demandLibraryQuery);
 }

+ 115 - 2
src/main/java/com/migao/service/impl/DemandLibraryServiceImpl.java

@@ -1,19 +1,26 @@
 package com.migao.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.migao.config.authority.LoginUtils;
-import com.migao.config.response.ResponseBean;
-import com.migao.config.response.ResponseBuilder;
+import com.migao.config.response.*;
 import com.migao.entity.po.DemandAttachment;
 import com.migao.entity.po.DemandLibrary;
 import com.migao.entity.po.User;
 import com.migao.entity.vo.req.DemandLibraryInsertReq;
+import com.migao.entity.vo.req.DemandLibraryQueryReq;
 import com.migao.entity.vo.req.DemandLibraryUpdateReq;
+import com.migao.entity.vo.res.DemandLibraryPageQueryRes;
 import com.migao.mapper.DemandAttachmentMapper;
 import com.migao.mapper.DemandLibraryMapper;
+import com.migao.mapper.DictionaryMapper;
+import com.migao.mapper.ProjectMapper;
 import com.migao.service.DemandLibraryService;
 import com.migao.util.EntityUtils;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -31,6 +38,10 @@ public class DemandLibraryServiceImpl extends ServiceImpl<DemandLibraryMapper, D
     DemandLibraryMapper demandLibraryMap;
     @Resource
     DemandAttachmentMapper demandAttachmentMapper;
+    @Resource
+    DictionaryMapper dictionaryMapper;
+    @Resource
+    ProjectMapper projectMapper;
 
     @Override
     public ResponseBean<?> insert(DemandLibraryInsertReq demandLibrary) {
@@ -90,5 +101,107 @@ public class DemandLibraryServiceImpl extends ServiceImpl<DemandLibraryMapper, D
         return ResponseBuilder.ok();
     }
 
+    @Override
+    public ResponseBean<PageBeanOne<DemandLibraryPageQueryRes>> pageQuery(BasePageRequest basePageRequest) {
+        Integer page = basePageRequest.getPage();
+        page = page == null ? 1 : page <= 0 ? 1 : page;
+        Integer size = basePageRequest.getSize();
+        size = size == null ? 10 : size <= 0 ? 10 : size;
+
+        LambdaQueryWrapper<DemandLibrary> dynamicQuery = Wrappers.<DemandLibrary>lambdaQuery();
+        dynamicQuery.orderByDesc(DemandLibrary::getSubmitTime);
+
+        Page<DemandLibrary> all = demandLibraryMap.selectPage(new Page<>(page, size),dynamicQuery);
+
+        return ResponseBuilderOne.ok(
+                all,
+                element -> {
+                    DemandLibraryPageQueryRes dicPageQueryRes = DemandLibraryPageQueryRes
+                            .builder()
+                            .id(element.getId())
+                            .demandNumber(element.getDemandNumber())
+                            .demandName(element.getDemandName())
+                            .demandContent(element.getDemandContent())
+                            .demandClass(dictionaryMapper.selectById(element.getDemandClassId()).getValue())
+                            .unitName(element.getUnitName())
+                            .demandStatus(element.getDemandStatus() == -1 ? "废除"
+                                    : element.getDemandStatus() == 0 ? "立项" : "认领")
+                            .demandSchedule(element.getDemandSchedule())
+                            .associatedProjectId(projectMapper.selectById(element.getAssociatedProjectId()).getName())
+                            .submitter(element.getSubmitter())
+                            .submitTime(element.getSubmitTime())
+                            .deleted(element.getDeleted())
+                            .build();
+                            return dicPageQueryRes;
+                    }
+                );
+    }
+
+    @Override
+    public ResponseBean<PageBeanOne<DemandLibraryPageQueryRes>> pageQueryById(BasePageRequest basePageRequest) {
+        //获取当前登录用户的信息
+        User user = LoginUtils.getUser();
+
+        Integer page = basePageRequest.getPage();
+        page = page == null ? 1 : page <= 0 ? 1 : page;
+        Integer size = basePageRequest.getSize();
+        size = size == null ? 10 : size <= 0 ? 10 : size;
+
+        LambdaQueryWrapper<DemandLibrary> dynamicQuery = Wrappers.<DemandLibrary>lambdaQuery();
+        if(user.getId() != null) {
+            dynamicQuery.eq(DemandLibrary::getCreateUserId, user.getId());
+        }
+        dynamicQuery.orderByDesc(DemandLibrary::getSubmitTime);
+
+        Page<DemandLibrary> all = demandLibraryMap.selectPage(new Page<>(page, size),dynamicQuery);
+        return ResponseBuilderOne.ok(
+                all,
+                element -> {
+                    DemandLibraryPageQueryRes dicPageQueryRes = DemandLibraryPageQueryRes
+                            .builder()
+                            .id(element.getId())
+                            .demandNumber(element.getDemandNumber())
+                            .demandName(element.getDemandName())
+                            .demandContent(element.getDemandContent())
+                            .demandClass(dictionaryMapper.selectById(element.getDemandClassId()).getValue())
+                            .unitName(element.getUnitName())
+                            .demandStatus(element.getDemandStatus() == -1 ? "废除"
+                                    : element.getDemandStatus() == 0 ? "立项" : "认领")
+                            .demandSchedule(element.getDemandSchedule())
+                            .associatedProjectId(projectMapper.selectById(element.getAssociatedProjectId()).getName())
+                            .submitter(element.getSubmitter())
+                            .submitTime(element.getSubmitTime())
+                            .deleted(element.getDeleted())
+                            .build();
+                    return dicPageQueryRes;
+                }
+        );
+    }
+
+    //暂时
+    @Override
+    public ResponseBean<PageBeanOne<DemandLibraryPageQueryRes>> pageQuery(DemandLibraryQueryReq demandLibraryQuery) {
+        Integer page = demandLibraryQuery.getPage();
+        page = page == null ? 1 : page <= 0 ? 1 : page;
+        Integer size = demandLibraryQuery.getSize();
+        size = size == null ? 10 : size <= 0 ? 10 : size;
+
+        LambdaQueryWrapper<DemandLibrary> dynamicQuery = Wrappers.<DemandLibrary>lambdaQuery();
+        if(StringUtils.isNotBlank(demandLibraryQuery.getKey())){
+            //需求编号
+            dynamicQuery.like(DemandLibrary::getDemandNumber,demandLibraryQuery.getKey());
+            //需求名称
+            LambdaQueryWrapper<DemandLibrary> or1 = dynamicQuery.or();
+            or1.like(DemandLibrary::getDemandName,demandLibraryQuery.getKey());
+            //需求内容
+            LambdaQueryWrapper<DemandLibrary> or2 = or1.or();
+            or2.like(DemandLibrary::getDemandContent,demandLibraryQuery.getKey());
+            //
+        }
+
+        return null;
+    }
+
+
 
 }

+ 2 - 1
src/main/resources/mapper/DictionaryMapper.xml

@@ -8,7 +8,8 @@
         VALUES
         (0,'PROJECT_CLASSIFY','项目分类',0),
         (0,'SPECIALTY_CLASSIFY','项目专业分类',0),
-        (0,'TWO_CLASSIFY','二级分类',0)
+        (0,'TWO_CLASSIFY','二级分类',0),
+        (0,'DEMAND_CLASSIFY','需求分类',0)
     </insert>
     <select id="findByValue" resultType="com.migao.entity.vo.res.DictionaryListRes">
 SELECT * FROM t_dictionary two WHERE