Browse Source

国内申请

licailing 5 years ago
parent
commit
cfd5b38e17

+ 3 - 3
src/main/java/com/izouma/uwip/domain/DomesticPatent.java

@@ -1,7 +1,7 @@
 package com.izouma.uwip.domain;
 
 import cn.hutool.core.bean.BeanUtil;
-import com.izouma.uwip.dto.DomesticPatentVO;
+import com.izouma.uwip.dto.DomesticPatentDTO;
 import com.izouma.uwip.enums.DomesticWorkflow;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -76,7 +76,7 @@ public class DomesticPatent extends BaseEntity {
     private Boolean payment;
 
     @ApiModelProperty(value = "年费")
-    private BigDecimal AnnualFee;
+    private BigDecimal annualFee;
 
     @ApiModelProperty(value = "年费支付期限")
     private LocalDate feePaymentPeriod;
@@ -84,7 +84,7 @@ public class DomesticPatent extends BaseEntity {
     @ApiModelProperty(value = "账单")
     private String bill;
 
-    public DomesticPatent(DomesticPatentVO vo) {
+    public DomesticPatent(DomesticPatentDTO vo) {
         BeanUtil.copyProperties(vo, this);
     }
 }

+ 1 - 0
src/main/java/com/izouma/uwip/domain/Patent.java

@@ -92,4 +92,5 @@ public class Patent extends BaseEntity {
     @ApiModelProperty(value = "申请日")
     private LocalDate applyDate;
 
+    private int sort;
 }

+ 114 - 176
src/main/java/com/izouma/uwip/dto/DomesticPatentDTO.java

@@ -1,5 +1,8 @@
 package com.izouma.uwip.dto;
 
+import cn.hutool.core.bean.BeanUtil;
+import com.izouma.uwip.domain.DomesticPatent;
+import com.izouma.uwip.domain.Patent;
 import com.izouma.uwip.enums.ApplyStatus;
 import com.izouma.uwip.enums.DomesticWorkflow;
 import com.izouma.uwip.enums.PatentType;
@@ -12,215 +15,150 @@ import lombok.NoArgsConstructor;
 
 import java.math.BigDecimal;
 import java.time.LocalDate;
+import java.util.List;
 
+@AllArgsConstructor
+@Data
+@Builder
+@NoArgsConstructor
 @ApiModel(value = "国内申请")
-public interface DomesticPatentDTO {
-
-//    @ApiModelProperty(value = "流程")
-//    private DomesticWorkflow workflow;
-//
-//    @ApiModelProperty(value = "申请人统一社会信用代码")
-//    private String applicantUscc;
-//
-//    @ApiModelProperty(value = "第一发明人身份证")
-//    private String inventorIdno;
-//
-//    @ApiModelProperty(value = "是否请求费减")
-//    private boolean deduction;
-//
-//    @ApiModelProperty(value = "是否请求实质审查")
-//    private boolean essentialReview;
-//
-//    @ApiModelProperty(value = "是否申请提前公开")
-//    private boolean publicInAdvance;
-//
-//    @ApiModelProperty(value = "是否申请红章受理通知书")
-//    private boolean chapterAcceptanceNotice;
-//
-//    @ApiModelProperty(value = "是否申请红章缴费通知书")
-//    private boolean chapterPaymentNotice;
-//
-//    @ApiModelProperty(value = "是否决定答复")
-//    private Boolean decideReply;
-//
-//    /*
-//    true 客户准备
-//    false 律师准备
-//     */
-//    @ApiModelProperty(value = "准备答复意见")
-//    private Boolean isClientReady;
-//
-//    @ApiModelProperty(value = "是否通过答复")
-//    private Boolean replyPassed;
-//
-//    @ApiModelProperty(value = "办登通知日")
-//    private LocalDate registerNotice;
-//
-//    @ApiModelProperty(value = "办登截止日")
-//    private LocalDate registerEndDate;
-//
-//    @ApiModelProperty(value = "费用备注")
-//    private String feeRemark;
-//
-//    @ApiModelProperty(value = "是否已缴费")
-//    private Boolean payment;
-//
-//    @ApiModelProperty(value = "年费")
-//    private BigDecimal AnnualFee;
-//
-//    @ApiModelProperty(value = "年费支付期限")
-//    private LocalDate feePaymentPeriod;
-//
-//    @ApiModelProperty(value = "账单")
-//    private String bill;
-//
-//    @ApiModelProperty(value = "专利名称")
-//    private String name;
-//
-//    private ApplyStatus status;
-//
-//    @ApiModelProperty(value = "专利类型")
-//    private PatentType type;
-//
-//    /*
-//    客户编码(由客户经理填写)+年份+案件类型+连接符+案件阶段[+国家]+序列号
-//     */
-//    @ApiModelProperty(value = "寰球案号")
-//    private String uwNo;
-//
-//    @ApiModelProperty(value = "客户id")
-//    private Long clientPartnerId;
-//
-//    @ApiModelProperty(value = "供应商")
-//    private Long supplierPartnerId;
-//
-//    @ApiModelProperty(value = "供应商案号")
-//    private String supplierNo;
-//
-//    @ApiModelProperty(value = "供应商提交期限")
-//    private LocalDate supplierSubmitPeriod;
-//
-//    @ApiModelProperty(value = "申请人名称")
-//    private String applicantName;
-//
-//    @ApiModelProperty(value = "申请人英文名称")
-//    private String applicantEnName;
-//
-//    @ApiModelProperty(value = "申请人地址")
-//    private String applicantAddress;
-//
-//    @ApiModelProperty(value = "申请人英文地址")
-//    private String applicantEnAddress;
-//
-//    @ApiModelProperty(value = "发明人名称")
-//    private String inventorName;
-//
-//    @ApiModelProperty(value = "发明人英文名称")
-//    private String inventorEnName;
-//
-//    @ApiModelProperty(value = "优先权号")
-//    private String priorityNo;
-//
-//    @ApiModelProperty(value = "优先权日")
-//    private LocalDate priorityDate;
-//
-//    @ApiModelProperty(value = "优先权国别")
-//    private String priorityCountry;
-//
-//    @ApiModelProperty(value = "提交期限/内部期限")
-//    private LocalDate submitPeriod;
-//
-//    /*
-//    =优先权日+30个月
-//     */
-//    @ApiModelProperty(value = "官方期限")
-//    private LocalDate officialPeriod;
-
-    Long getDid();
-
-    Long getPatentId();
-
-    DomesticWorkflow getWorkflow();
-
-    String getApplicantUscc();
-
-    String getInventorIdno();
-
-    boolean getDeduction();
-
-    Boolean getEssentialReview();
-
-    Boolean getPublicInAdvance();
-
-    Boolean getChapterAcceptanceNotice();
+public class DomesticPatentDTO {
+    private Long did;
 
-    Boolean getChapterPaymentNotice();
+    private Long patentId;
 
-    Boolean getDecideReply();
+    @ApiModelProperty(value = "流程")
+    private DomesticWorkflow workflow;
 
-    Boolean getIsClientReady();
+    @ApiModelProperty(value = "申请人统一社会信用代码")
+    private String applicantUscc;
 
-    Boolean getReplyPassed();
+    @ApiModelProperty(value = "第一发明人身份证")
+    private String inventorIdno;
 
-    LocalDate getRegisterNotice();
+    @ApiModelProperty(value = "是否请求费减")
+    private boolean deduction;
 
-    LocalDate getRegisterEndDate();
+    @ApiModelProperty(value = "是否请求实质审查")
+    private boolean essentialReview;
 
-    String getFeeRemark();
+    @ApiModelProperty(value = "是否申请提前公开")
+    private boolean publicInAdvance;
 
-    Boolean getPayment();
+    @ApiModelProperty(value = "是否申请红章受理通知书")
+    private boolean chapterAcceptanceNotice;
 
-    BigDecimal getAnnualFee();
+    @ApiModelProperty(value = "是否申请红章缴费通知书")
+    private boolean chapterPaymentNotice;
 
-    LocalDate getFeePaymentPeriod();
+    @ApiModelProperty(value = "是否决定答复")
+    private Boolean decideReply;
 
-    String getBill();
+    /*
+    true 客户准备
+    false 律师准备
+     */
+    @ApiModelProperty(value = "准备答复意见")
+    private Boolean isClientReady;
 
-    String getName();
+    @ApiModelProperty(value = "是否通过答复")
+    private Boolean replyPassed;
 
-    ApplyStatus getStatus();
+    @ApiModelProperty(value = "办登通知日")
+    private LocalDate registerNotice;
 
-    PatentType getType();
+    @ApiModelProperty(value = "办登截止日")
+    private LocalDate registerEndDate;
 
-    String getUwNo();
+    @ApiModelProperty(value = "费用备注")
+    private String feeRemark;
 
-    Long getClientPartnerId();
+    @ApiModelProperty(value = "是否已缴费")
+    private Boolean payment;
 
-    Long getSupplierPartnerId();
+    @ApiModelProperty(value = "年费")
+    private BigDecimal annualFee;
 
-    String getSupplierNo();
+    @ApiModelProperty(value = "年费支付期限")
+    private LocalDate feePaymentPeriod;
 
-    LocalDate getSupplierSubmitPeriod();
+    @ApiModelProperty(value = "账单")
+    private String bill;
 
-    String getApplicantName();
+    @ApiModelProperty(value = "专利名称")
+    private String name;
 
-    String getApplicantEnName();
+    private ApplyStatus status;
 
-    String getApplicantAddress();
+    @ApiModelProperty(value = "专利类型")
+    private PatentType type;
 
-    String getApplicantEnAddress();
+    /*
+    客户编码(由客户经理填写)+年份+案件类型+连接符+案件阶段[+国家]+序列号
+     */
+    @ApiModelProperty(value = "寰球案号")
+    private String uwNo;
 
-    String getInventorName();
+    @ApiModelProperty(value = "客户id")
+    private Long clientPartnerId;
 
-    String getInventorEnName();
+    @ApiModelProperty(value = "供应商")
+    private Long supplierPartnerId;
 
-    String getPriorityNo();
+    @ApiModelProperty(value = "供应商案号")
+    private String supplierNo;
 
-    LocalDate getPriorityDate();
+    @ApiModelProperty(value = "供应商提交期限")
+    private LocalDate supplierSubmitPeriod;
 
-    String getPriorityCountry();
+    @ApiModelProperty(value = "申请人名称")
+    private String applicantName;
 
-    LocalDate getSubmitPeriod();
+    @ApiModelProperty(value = "申请人英文名称")
+    private String applicantEnName;
 
-    LocalDate getOfficialPeriod();
+    @ApiModelProperty(value = "申请人地址")
+    private String applicantAddress;
 
-    String getApplyNo();
+    @ApiModelProperty(value = "申请人英文地址")
+    private String applicantEnAddress;
 
-    LocalDate getApplyDate();
+    @ApiModelProperty(value = "发明人名称")
+    private String inventorName;
 
-//    @ApiModelProperty(value = "申请号")
-//    private String applyNo;
-//
-//    @ApiModelProperty(value = "申请日")
-//    private LocalDate applyDate;
+    @ApiModelProperty(value = "发明人英文名称")
+    private String inventorEnName;
+
+    @ApiModelProperty(value = "优先权号")
+    private String priorityNo;
+
+    @ApiModelProperty(value = "优先权日")
+    private LocalDate priorityDate;
+
+    @ApiModelProperty(value = "优先权国别")
+    private String priorityCountry;
+
+    @ApiModelProperty(value = "提交期限/内部期限")
+    private LocalDate submitPeriod;
+
+    /*
+    =优先权日+30个月
+     */
+    @ApiModelProperty(value = "官方期限")
+    private LocalDate officialPeriod;
+
+    @ApiModelProperty(value = "申请号")
+    private String applyNo;
+
+    @ApiModelProperty(value = "申请日")
+    private LocalDate applyDate;
+
+    public List<AttachmentDTO> attachments;
+
+    public DomesticPatentDTO(DomesticPatent dPatent, Patent patent){
+        BeanUtil.copyProperties(dPatent,this);
+        BeanUtil.copyProperties(patent,this);
+        this.did = dPatent.getId();
+        this.patentId = patent.getId();
+    }
 }

+ 0 - 154
src/main/java/com/izouma/uwip/dto/DomesticPatentVO.java

@@ -1,154 +0,0 @@
-package com.izouma.uwip.dto;
-
-import com.izouma.uwip.enums.ApplyStatus;
-import com.izouma.uwip.enums.DomesticWorkflow;
-import com.izouma.uwip.enums.PatentType;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.math.BigDecimal;
-import java.time.LocalDate;
-import java.util.List;
-
-@AllArgsConstructor
-@Data
-@Builder
-@NoArgsConstructor
-@ApiModel(value = "国内申请")
-public class DomesticPatentVO {
-    private Long did;
-
-    private Long patentId;
-
-    @ApiModelProperty(value = "流程")
-    private DomesticWorkflow workflow;
-
-    @ApiModelProperty(value = "申请人统一社会信用代码")
-    private String applicantUscc;
-
-    @ApiModelProperty(value = "第一发明人身份证")
-    private String inventorIdno;
-
-    @ApiModelProperty(value = "是否请求费减")
-    private boolean deduction;
-
-    @ApiModelProperty(value = "是否请求实质审查")
-    private boolean essentialReview;
-
-    @ApiModelProperty(value = "是否申请提前公开")
-    private boolean publicInAdvance;
-
-    @ApiModelProperty(value = "是否申请红章受理通知书")
-    private boolean chapterAcceptanceNotice;
-
-    @ApiModelProperty(value = "是否申请红章缴费通知书")
-    private boolean chapterPaymentNotice;
-
-    @ApiModelProperty(value = "是否决定答复")
-    private Boolean decideReply;
-
-    /*
-    true 客户准备
-    false 律师准备
-     */
-    @ApiModelProperty(value = "准备答复意见")
-    private Boolean isClientReady;
-
-    @ApiModelProperty(value = "是否通过答复")
-    private Boolean replyPassed;
-
-    @ApiModelProperty(value = "办登通知日")
-    private LocalDate registerNotice;
-
-    @ApiModelProperty(value = "办登截止日")
-    private LocalDate registerEndDate;
-
-    @ApiModelProperty(value = "费用备注")
-    private String feeRemark;
-
-    @ApiModelProperty(value = "是否已缴费")
-    private Boolean payment;
-
-    @ApiModelProperty(value = "年费")
-    private BigDecimal AnnualFee;
-
-    @ApiModelProperty(value = "年费支付期限")
-    private LocalDate feePaymentPeriod;
-
-    @ApiModelProperty(value = "账单")
-    private String bill;
-
-    @ApiModelProperty(value = "专利名称")
-    private String name;
-
-    private ApplyStatus status;
-
-    @ApiModelProperty(value = "专利类型")
-    private PatentType type;
-
-    /*
-    客户编码(由客户经理填写)+年份+案件类型+连接符+案件阶段[+国家]+序列号
-     */
-    @ApiModelProperty(value = "寰球案号")
-    private String uwNo;
-
-    @ApiModelProperty(value = "客户id")
-    private Long clientPartnerId;
-
-    @ApiModelProperty(value = "供应商")
-    private Long supplierPartnerId;
-
-    @ApiModelProperty(value = "供应商案号")
-    private String supplierNo;
-
-    @ApiModelProperty(value = "供应商提交期限")
-    private LocalDate supplierSubmitPeriod;
-
-    @ApiModelProperty(value = "申请人名称")
-    private String applicantName;
-
-    @ApiModelProperty(value = "申请人英文名称")
-    private String applicantEnName;
-
-    @ApiModelProperty(value = "申请人地址")
-    private String applicantAddress;
-
-    @ApiModelProperty(value = "申请人英文地址")
-    private String applicantEnAddress;
-
-    @ApiModelProperty(value = "发明人名称")
-    private String inventorName;
-
-    @ApiModelProperty(value = "发明人英文名称")
-    private String inventorEnName;
-
-    @ApiModelProperty(value = "优先权号")
-    private String priorityNo;
-
-    @ApiModelProperty(value = "优先权日")
-    private LocalDate priorityDate;
-
-    @ApiModelProperty(value = "优先权国别")
-    private String priorityCountry;
-
-    @ApiModelProperty(value = "提交期限/内部期限")
-    private LocalDate submitPeriod;
-
-    /*
-    =优先权日+30个月
-     */
-    @ApiModelProperty(value = "官方期限")
-    private LocalDate officialPeriod;
-
-    @ApiModelProperty(value = "申请号")
-    private String applyNo;
-
-    @ApiModelProperty(value = "申请日")
-    private LocalDate applyDate;
-
-    public List<AttachmentDTO> attachments;
-}

+ 3 - 3
src/main/java/com/izouma/uwip/enums/CaseType.java

@@ -24,8 +24,7 @@ public enum CaseType {
     /*
     其他
      */
-    OTHER(6)
-    ;
+    OTHER(6);
 
 
     private final int value;
@@ -33,7 +32,8 @@ public enum CaseType {
     public int getValue() {
         return value;
     }
-    CaseType(int value){
+
+    CaseType(int value) {
         this.value = value;
     }
 }

+ 17 - 9
src/main/java/com/izouma/uwip/enums/DomesticWorkflow.java

@@ -2,25 +2,33 @@ package com.izouma.uwip.enums;
 
 /*
 国内申请流程
+1 客户经理
+2 项目经理
  */
 public enum DomesticWorkflow {
-    ADD_SUPPLIERS("待添加供应商"),
-    SUPPLIER_MATERIALS("待提交供应商材料"),
-    MAINTAIN_CASE("待维护案件"),
-    PENDING_REVIEW("待审查"),
-    PENDING_REGISTER("待办登"),
-    REGISTER("办理登记"),
-    ANNUAL_FEE("待维护年费信息"),
-    COMPLETED("已完成"),
+    ADD_SUPPLIERS("待添加供应商",2),
+    SUPPLIER_MATERIALS("待提交供应商材料",2),
+    MAINTAIN_CASE("待维护案件",1),
+    PENDING_REVIEW("待审查",1),
+    PENDING_REGISTER("待办登",1),
+    REGISTER("办理登记",2),
+    ANNUAL_FEE("待维护年费信息",1),
+    COMPLETED("已完成",1),
     ;
 
     private final String description;
+    private final int    authority;
 
     public String getDescription() {
         return description;
     }
 
-    DomesticWorkflow(String description) {
+    public int getAuthority() {
+        return authority;
+    }
+
+    DomesticWorkflow(String description, int authority) {
         this.description = description;
+        this.authority = authority;
     }
 }

+ 3 - 3
src/main/java/com/izouma/uwip/enums/PatentType.java

@@ -1,9 +1,9 @@
 package com.izouma.uwip.enums;
 
 public enum PatentType {
-    INVENTION_PATENT("发明专利"),
-    UTILITY_MODEL_PATENT("实用新型专利"),
-    APPEARANCE_DESIGN_PATENT("外观设计专利");
+    INVENTION("发明专利"),
+    UTILITY_MODEL("实用新型专利"),
+    APPEARANCE_DESIGN("外观设计专利");
 
     private final String description;
 

+ 4 - 7
src/main/java/com/izouma/uwip/repo/DomesticPatentRepo.java

@@ -8,7 +8,6 @@ import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
 
 import javax.transaction.Transactional;
-import java.util.List;
 import java.util.Optional;
 
 public interface DomesticPatentRepo extends JpaRepository<DomesticPatent, Long>, JpaSpecificationExecutor<DomesticPatent> {
@@ -17,11 +16,9 @@ public interface DomesticPatentRepo extends JpaRepository<DomesticPatent, Long>,
     @Transactional
     void softDelete(Long id);
 
-    @Query(nativeQuery = true, value = "select d.*,d.id as did,p.id as patentId," +
-            "applicant_address, applicant_en_address, applicant_en_name, applicant_name, apply_date, apply_no, " +
-            "client_partner_id, inventor_en_name, inventor_name, name, official_period, priority_country, priority_date, " +
-            "priority_no, status, submit_period, supplier_no, supplier_partner_id, supplier_submit_period, type, uw_no " +
-            "from domestic_patent d left join patent p on d.patent_id = p.id " +
-            "where d.id = ?1 and d.del = false")
+
+    @Query("select new com.izouma.uwip.dto.DomesticPatentDTO(d,p) " +
+            "from DomesticPatent d join Patent p on d.patentId = p.id " +
+            "where d.id = ?1 and p.del = false and d.del = false")
     Optional<DomesticPatentDTO> findDomesticDTO(Long id);
 }

+ 3 - 0
src/main/java/com/izouma/uwip/repo/PatentRepo.java

@@ -13,4 +13,7 @@ public interface PatentRepo extends JpaRepository<Patent, Long>, JpaSpecificatio
     @Modifying
     @Transactional
     void softDelete(Long id);
+
+    @Query(nativeQuery = true, value = "select ifnull(max(sort + 1),1) from  patent where del = true")
+    int findMax();
 }

+ 35 - 12
src/main/java/com/izouma/uwip/service/DomesticPatentService.java

@@ -2,12 +2,15 @@ package com.izouma.uwip.service;
 
 import cn.hutool.core.bean.BeanUtil;
 import com.izouma.uwip.domain.DomesticPatent;
-import com.izouma.uwip.domain.Partner;
-import com.izouma.uwip.dto.DomesticPatentVO;
+import com.izouma.uwip.domain.Patent;
+import com.izouma.uwip.dto.DomesticPatentDTO;
 import com.izouma.uwip.dto.PageQuery;
+import com.izouma.uwip.enums.CaseStage;
+import com.izouma.uwip.enums.CaseType;
+import com.izouma.uwip.enums.PatentType;
 import com.izouma.uwip.exception.BusinessException;
 import com.izouma.uwip.repo.DomesticPatentRepo;
-import com.izouma.uwip.repo.PartnerRepo;
+import com.izouma.uwip.repo.PatentRepo;
 import com.izouma.uwip.utils.JpaUtils;
 import com.izouma.uwip.utils.ObjUtils;
 import lombok.AllArgsConstructor;
@@ -21,13 +24,14 @@ public class DomesticPatentService {
 
     private final DomesticPatentRepo domesticPatentRepo;
     private final AttachmentService  attachmentService;
-    private final PartnerRepo        partnerRepo;
+    private final PatentRepo         patentRepo;
+    private final PartnerService     partnerService;
 
     public Page<DomesticPatent> all(PageQuery pageQuery) {
         return domesticPatentRepo.findAll(JpaUtils.toSpecification(pageQuery, DomesticPatent.class), JpaUtils.toPageRequest(pageQuery));
     }
 
-    public DomesticPatent saveDTO(DomesticPatentVO record, Long id) {
+    public DomesticPatent saveDTO(DomesticPatentDTO record, Long userId) {
         if (record.getDid() != null) {
             DomesticPatent orig = domesticPatentRepo.findById(record.getDid())
                     .orElseThrow(new BusinessException("无记录"));
@@ -35,19 +39,38 @@ public class DomesticPatentService {
             ObjUtils.merge(orig, dPatent);
             orig = domesticPatentRepo.save(orig);
 
-            Partner orig1 = partnerRepo.findById(record.getPatentId()).orElseThrow(new BusinessException("无记录"));
-            Partner partner = new Partner();
+            Patent orig1 = patentRepo.findById(record.getPatentId()).orElseThrow(new BusinessException("无记录"));
+            Patent patent = new Patent();
+            BeanUtil.copyProperties(record, patent);
+            ObjUtils.merge(orig1, patent);
+            patentRepo.save(orig1);
 
-            ObjUtils.merge(orig1, record);
             // 保存附件
             if (CollectionUtils.isNotEmpty(record.getAttachments())) {
-                attachmentService.batchSave(record.getAttachments(), id, record.getDid());
+                attachmentService.batchSave(record.getAttachments(), userId, record.getDid());
             }
 
-
             return orig;
         }
-//        return domesticPatentRepo.save(record);
-        return null;
+
+        Patent patent = new Patent();
+        BeanUtil.copyProperties(record, patent);
+        patent.setSort(patentRepo.findMax());
+
+        //寰球案号
+        PatentType type = patent.getType();
+        patent.setUwNo(partnerService.getUwNo(patent.getClientPartnerId(), CaseType.valueOf(type.name()), CaseStage.DOMESTIC, patent
+                .getSort()));
+        patent = patentRepo.save(patent);
+
+        DomesticPatent dPatent = new DomesticPatent(record);
+        dPatent.setPatentId(patent.getId());
+        dPatent = domesticPatentRepo.save(dPatent);
+
+        // 保存附件
+        if (CollectionUtils.isNotEmpty(record.getAttachments())) {
+            attachmentService.batchSave(record.getAttachments(), userId, record.getDid());
+        }
+        return dPatent;
     }
 }

+ 8 - 16
src/main/java/com/izouma/uwip/service/LogoPatentService.java

@@ -23,22 +23,14 @@ import java.time.LocalDateTime;
 @AllArgsConstructor
 public class LogoPatentService {
 
-    private LogoPatentRepo    logoPatentRepo;
-    private PartnerRepo       partnerRepo;
-    private AttachmentService attachmentService;
+    private final LogoPatentRepo    logoPatentRepo;
+    private final AttachmentService attachmentService;
+    private final PartnerService    partnerService;
 
     public Page<LogoPatent> all(PageQuery pageQuery) {
         return logoPatentRepo.findAll(JpaUtils.toSpecification(pageQuery, LogoPatent.class), JpaUtils.toPageRequest(pageQuery));
     }
 
-    public String getUwNo(LogoPatent patent) {
-//        客户编码(由客户经理填写)+年份+案件类型+连接符+案件阶段[+国家]+序列号
-        Partner partner = partnerRepo.findById(patent.getClientPartnerId()).orElseThrow(new BusinessException("客户不存在"));
-        int y = LocalDate.now().getYear() - 2000;
-        return partner.getCode() + y + CaseType.LOGO.getValue() + "——" + CaseStage.DOMESTIC.getValue() + String.format("%03d", patent
-                .getSort());
-    }
-
     public Handle saveHandle(LogoWorkflow workflow, Long userId) {
         return Handle.builder()
                 .logoWorkflow(workflow)
@@ -47,7 +39,7 @@ public class LogoPatentService {
                 .build();
     }
 
-    public LogoPatent save(LogoPatent record, Long id) {
+    public LogoPatent save(LogoPatent record, Long userId) {
         if (record.getId() != null) {
             LogoWorkflow workflow = record.getLogoWorkflow();
             if (ObjectUtil.isNull(workflow)) {
@@ -56,23 +48,23 @@ public class LogoPatentService {
             LogoPatent orig = logoPatentRepo.findById(record.getId()).orElseThrow(new BusinessException("无记录"));
             // 保存附件
             if (CollectionUtils.isNotEmpty(record.getAttachments())) {
-                attachmentService.batchSave(record.getAttachments(), id, record.getId());
+                attachmentService.batchSave(record.getAttachments(), userId, record.getId());
             }
             ObjUtils.merge(orig, record);
-//            orig.getHandle().add(this.saveHandle(workflow, id));
+//            orig.getHandle().add(this.saveHandle(workflow, userId));
             orig.setApplyStatus(this.getApplyStatus(workflow));
             return logoPatentRepo.save(orig);
         }
         if (record.getSort() == 0) {
             record.setSort(logoPatentRepo.findMax());
         }
-        record.setUwNo(this.getUwNo(record));
+        record.setUwNo(partnerService.getUwNo(record.getClientPartnerId(), CaseType.LOGO, CaseStage.DOMESTIC, record.getSort()));
         record.setLogoWorkflow(LogoWorkflow.IS_CONTRACT);
         record.setApplyStatus(ApplyStatus.APPLY_STAGE);
         record = logoPatentRepo.save(record);
         // 保存附件
         if (CollectionUtils.isNotEmpty(record.getAttachments())) {
-            attachmentService.batchSave(record.getAttachments(), id, record.getId());
+            attachmentService.batchSave(record.getAttachments(), userId, record.getId());
         }
         return record;
     }

+ 13 - 0
src/main/java/com/izouma/uwip/service/PartnerService.java

@@ -1,13 +1,19 @@
 package com.izouma.uwip.service;
 
+import com.izouma.uwip.domain.LogoPatent;
 import com.izouma.uwip.domain.Partner;
 import com.izouma.uwip.dto.PageQuery;
+import com.izouma.uwip.enums.CaseStage;
+import com.izouma.uwip.enums.CaseType;
+import com.izouma.uwip.exception.BusinessException;
 import com.izouma.uwip.repo.PartnerRepo;
 import com.izouma.uwip.utils.JpaUtils;
 import lombok.AllArgsConstructor;
 import org.springframework.data.domain.Page;
 import org.springframework.stereotype.Service;
 
+import java.time.LocalDate;
+
 @Service
 @AllArgsConstructor
 public class PartnerService {
@@ -17,4 +23,11 @@ public class PartnerService {
     public Page<Partner> all(PageQuery pageQuery) {
         return partnerRepo.findAll(JpaUtils.toSpecification(pageQuery, Partner.class), JpaUtils.toPageRequest(pageQuery));
     }
+
+    public String getUwNo(Long partnerId, CaseType type, CaseStage stage, int sort) {
+//        客户编码(由客户经理填写)+年份+案件类型+连接符+案件阶段[+国家]+序列号
+        Partner partner = partnerRepo.findById(partnerId).orElseThrow(new BusinessException("客户不存在"));
+        int y = LocalDate.now().getYear() - 2000;
+        return partner.getCode() + y + type.getValue() + "——" + stage.getValue() + String.format("%03d", sort);
+    }
 }

+ 1 - 5
src/main/java/com/izouma/uwip/web/DomesticPatentController.java

@@ -1,9 +1,7 @@
 package com.izouma.uwip.web;
 
-import cn.hutool.core.bean.BeanUtil;
 import com.izouma.uwip.domain.DomesticPatent;
 import com.izouma.uwip.dto.DomesticPatentDTO;
-import com.izouma.uwip.dto.DomesticPatentVO;
 import com.izouma.uwip.service.DomesticPatentService;
 import com.izouma.uwip.dto.PageQuery;
 import com.izouma.uwip.exception.BusinessException;
@@ -12,9 +10,7 @@ import com.izouma.uwip.utils.ObjUtils;
 import com.izouma.uwip.utils.SecurityUtils;
 import com.izouma.uwip.utils.excel.ExcelUtils;
 import lombok.AllArgsConstructor;
-import org.apache.commons.collections.CollectionUtils;
 import org.springframework.data.domain.Page;
-import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
@@ -40,7 +36,7 @@ public class DomesticPatentController extends BaseController {
     }
 
     @PostMapping("/saveDTO")
-    public DomesticPatent saveDTO(@RequestBody DomesticPatentVO record) {
+    public DomesticPatent saveDTO(@RequestBody DomesticPatentDTO record) {
         return domesticPatentService.saveDTO(record, SecurityUtils.getAuthenticatedUser().getId());
     }
 

+ 129 - 7
src/main/vue/src/views/DomesticPatentEdit.vue

@@ -37,19 +37,19 @@
                         <el-input v-model="formData.inventorIdno"></el-input>
                     </el-form-item>
                     <el-form-item prop="deduction" label="是否请求费减">
-                        <el-input v-model="formData.deduction"></el-input>
+                        <el-switch v-model="formData.deduction"></el-switch>
                     </el-form-item>
                     <el-form-item prop="essentialReview" label="是否请求实质审查">
-                        <el-input v-model="formData.essentialReview"></el-input>
+                        <el-switch v-model="formData.essentialReview"></el-switch>
                     </el-form-item>
                     <el-form-item prop="publicInAdvance" label="是否申请提前公开">
-                        <el-input v-model="formData.publicInAdvance"></el-input>
+                        <el-switch v-model="formData.publicInAdvance"></el-switch>
                     </el-form-item>
                     <el-form-item prop="chapterAcceptanceNotice" label="是否申请红章受理通知书">
-                        <el-input v-model="formData.chapterAcceptanceNotice"></el-input>
+                        <el-switch v-model="formData.chapterAcceptanceNotice"></el-switch>
                     </el-form-item>
                     <el-form-item prop="chapterPaymentNotice" label="是否申请红章缴费通知书">
-                        <el-input v-model="formData.chapterPaymentNotice"></el-input>
+                        <el-switch v-model="formData.chapterPaymentNotice"></el-switch>
                     </el-form-item>
                     <el-form-item prop="decideReply" label="是否决定答复">
                         <el-switch v-model="formData.decideReply"></el-switch>
@@ -84,8 +84,8 @@
                     <el-form-item prop="payment" label="是否已缴费">
                         <el-switch v-model="formData.payment"></el-switch>
                     </el-form-item>
-                    <el-form-item prop="AnnualFee" label="年费">
-                        <el-input-number type="number" v-model="formData.AnnualFee"></el-input-number>
+                    <el-form-item prop="annualFee" label="年费">
+                        <el-input-number type="number" v-model="formData.annualFee"></el-input-number>
                     </el-form-item>
                     <el-form-item prop="feePaymentPeriod" label="年费支付期限">
                         <el-date-picker
@@ -99,6 +99,117 @@
                     <el-form-item prop="bill" label="账单">
                         <el-input v-model="formData.bill"></el-input>
                     </el-form-item>
+
+                    <el-form-item prop="name" label="专利名称">
+                        <el-input v-model="formData.name"></el-input>
+                    </el-form-item>
+                    <el-form-item prop="status" label="状态">
+                        <el-select v-model="formData.status" clearable filterable placeholder="请选择">
+                            <el-option
+                                v-for="item in statusOptions"
+                                :key="item.value"
+                                :label="item.label"
+                                :value="item.value"
+                            >
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                    <el-form-item prop="type" label="专利类型">
+                        <el-select v-model="formData.type" clearable filterable placeholder="请选择">
+                            <el-option
+                                v-for="item in typeOptions"
+                                :key="item.value"
+                                :label="item.label"
+                                :value="item.value"
+                            >
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                    <el-form-item prop="uwNo" label="寰球案号">
+                        <el-input v-model="formData.uwNo"></el-input>
+                    </el-form-item>
+                    <el-form-item prop="clientPartnerId" label="客户id">
+                        <el-input-number type="number" v-model="formData.clientPartnerId"></el-input-number>
+                    </el-form-item>
+                    <el-form-item prop="supplierPartnerId" label="供应商">
+                        <el-input-number type="number" v-model="formData.supplierPartnerId"></el-input-number>
+                    </el-form-item>
+                    <el-form-item prop="supplierNo" label="供应商案号">
+                        <el-input v-model="formData.supplierNo"></el-input>
+                    </el-form-item>
+                    <el-form-item prop="supplierSubmitPeriod" label="供应商提交期限">
+                        <el-date-picker
+                            v-model="formData.supplierSubmitPeriod"
+                            type="date"
+                            value-format="yyyy-MM-dd"
+                            placeholder="选择日期"
+                        >
+                        </el-date-picker>
+                    </el-form-item>
+                    <el-form-item prop="applicantName" label="申请人名称">
+                        <el-input v-model="formData.applicantName"></el-input>
+                    </el-form-item>
+                    <el-form-item prop="applicantEnName" label="申请人英文名称">
+                        <el-input v-model="formData.applicantEnName"></el-input>
+                    </el-form-item>
+                    <el-form-item prop="applicantAddress" label="申请人地址">
+                        <el-input v-model="formData.applicantAddress"></el-input>
+                    </el-form-item>
+                    <el-form-item prop="applicantEnAddress" label="申请人英文地址">
+                        <el-input v-model="formData.applicantEnAddress"></el-input>
+                    </el-form-item>
+                    <el-form-item prop="inventorName" label="发明人名称">
+                        <el-input v-model="formData.inventorName"></el-input>
+                    </el-form-item>
+                    <el-form-item prop="inventorEnName" label="发明人英文名称">
+                        <el-input v-model="formData.inventorEnName"></el-input>
+                    </el-form-item>
+                    <el-form-item prop="priorityNo" label="优先权号">
+                        <el-input v-model="formData.priorityNo"></el-input>
+                    </el-form-item>
+                    <el-form-item prop="priorityDate" label="优先权日">
+                        <el-date-picker
+                            v-model="formData.priorityDate"
+                            type="date"
+                            value-format="yyyy-MM-dd"
+                            placeholder="选择日期"
+                        >
+                        </el-date-picker>
+                    </el-form-item>
+                    <el-form-item prop="priorityCountry" label="优先权国别">
+                        <el-input v-model="formData.priorityCountry"></el-input>
+                    </el-form-item>
+                    <el-form-item prop="submitPeriod" label="提交期限/内部期限">
+                        <el-date-picker
+                            v-model="formData.submitPeriod"
+                            type="date"
+                            value-format="yyyy-MM-dd"
+                            placeholder="选择日期"
+                        >
+                        </el-date-picker>
+                    </el-form-item>
+                    <el-form-item prop="officialPeriod" label="官方期限">
+                        <el-date-picker
+                            v-model="formData.officialPeriod"
+                            type="date"
+                            value-format="yyyy-MM-dd"
+                            placeholder="选择日期"
+                        >
+                        </el-date-picker>
+                    </el-form-item>
+                    <el-form-item prop="applyNo" label="申请号">
+                        <el-input v-model="formData.applyNo"></el-input>
+                    </el-form-item>
+                    <el-form-item prop="applyDate" label="申请日">
+                        <el-date-picker
+                            v-model="formData.applyDate"
+                            type="date"
+                            value-format="yyyy-MM-dd"
+                            placeholder="选择日期"
+                        >
+                        </el-date-picker>
+                    </el-form-item>
+
                     <el-form-item class="form-submit">
                         <el-button @click="onSave" :loading="saving" size="default" type="primary">保存 </el-button>
                         <el-button @click="onDelete" :loading="saving" size="default" type="danger" v-if="formData.id"
@@ -141,6 +252,17 @@ export default {
                 { label: '办理登记', value: 'REGISTER' },
                 { label: '待维护年费信息', value: 'ANNUAL_FEE' },
                 { label: '已完成', value: 'COMPLETED' }
+            ],
+            statusOptions: [
+                { label: '申请阶段', value: 'APPLY_STAGE' },
+                { label: '审查阶段', value: 'REVIEW_STAGE' },
+                { label: '授权阶段', value: 'GRANT_STAGE' },
+                { label: '已完成', value: 'COMPLETED' }
+            ],
+            typeOptions: [
+                { label: '发明专利', value: 'INVENTION' },
+                { label: '实用新型专利', value: 'UTILITY_MODEL' },
+                { label: '外观设计专利', value: 'APPEARANCE_DESIGN' }
             ]
         };
     },

+ 1 - 1
src/main/vue/src/views/DomesticPatentList.vue

@@ -62,7 +62,7 @@
                     <el-tag :type="row.payment ? '' : 'info'">{{ row.payment }}</el-tag>
                 </template>
             </el-table-column>
-            <el-table-column prop="AnnualFee" label="年费"> </el-table-column>
+            <el-table-column prop="annualFee" label="年费"> </el-table-column>
             <el-table-column prop="feePaymentPeriod" label="年费支付期限"> </el-table-column>
             <el-table-column prop="bill" label="账单"> </el-table-column>
             <el-table-column label="操作" align="center" fixed="right" min-width="150">

+ 3 - 3
src/main/vue/src/views/PatentEdit.vue

@@ -168,9 +168,9 @@ export default {
                 { label: '已完成', value: 'COMPLETED' }
             ],
             typeOptions: [
-                { label: '发明专利', value: 'INVENTION_PATENT' },
-                { label: '实用新型专利', value: 'UTILITY_MODEL_PATENT' },
-                { label: '外观设计专利', value: 'APPEARANCE_DESIGN_PATENT' }
+                { label: '发明专利', value: 'INVENTION' },
+                { label: '实用新型专利', value: 'UTILITY_MODEL' },
+                { label: '外观设计专利', value: 'APPEARANCE_DESIGN' }
             ]
         };
     },

+ 3 - 3
src/main/vue/src/views/PatentList.vue

@@ -102,9 +102,9 @@ export default {
                 { label: '已完成', value: 'COMPLETED' }
             ],
             typeOptions: [
-                { label: '发明专利', value: 'INVENTION_PATENT' },
-                { label: '实用新型专利', value: 'UTILITY_MODEL_PATENT' },
-                { label: '外观设计专利', value: 'APPEARANCE_DESIGN_PATENT' }
+                { label: '发明专利', value: 'INVENTION' },
+                { label: '实用新型专利', value: 'UTILITY_MODEL' },
+                { label: '外观设计专利', value: 'APPEARANCE_DESIGN' }
             ]
         };
     },

+ 20 - 0
src/test/java/com/izouma/uwip/service/DomesticPatentServiceTest.java

@@ -0,0 +1,20 @@
+package com.izouma.uwip.service;
+
+
+import com.izouma.uwip.ApplicationTests;
+import com.izouma.uwip.enums.CaseType;
+import com.izouma.uwip.enums.PatentType;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class DomesticPatentServiceTest extends ApplicationTests {
+    @Autowired
+    private DomesticPatentService domesticPatentService;
+
+    @Test
+    public void test() {
+        String name = PatentType.UTILITY_MODEL.name();
+        System.out.println(CaseType.valueOf(name));
+    }
+
+}

+ 7 - 2
src/test/java/com/izouma/uwip/service/LogoPatentServiceTest.java

@@ -2,6 +2,8 @@ package com.izouma.uwip.service;
 
 import com.izouma.uwip.ApplicationTests;
 import com.izouma.uwip.domain.LogoPatent;
+import com.izouma.uwip.enums.CaseStage;
+import com.izouma.uwip.enums.CaseType;
 import com.izouma.uwip.exception.BusinessException;
 import com.izouma.uwip.repo.LogoPatentRepo;
 import org.junit.Test;
@@ -11,13 +13,16 @@ import org.springframework.beans.factory.annotation.Autowired;
 public class LogoPatentServiceTest extends ApplicationTests {
 
     @Autowired
-    private LogoPatentRepo logoPatentRepo;
+    private LogoPatentRepo    logoPatentRepo;
     @Autowired
     private LogoPatentService logoPatentService;
+    @Autowired
+    private PartnerService    partnerService;
 
     @Test
     public void getUwNo() {
         LogoPatent patent = logoPatentRepo.findById(44L).orElseThrow(new BusinessException("wu"));
-        System.out.println(logoPatentService.getUwNo(patent));
+        System.out.println(partnerService.getUwNo(patent.getClientPartnerId(), CaseType.LOGO, CaseStage.DOMESTIC, patent
+                .getSort()));
     }
 }