Browse Source

更新项目日志

jihs 4 years ago
parent
commit
9cd8da2f57
40 changed files with 1420 additions and 261 deletions
  1. 3 0
      src/main/java/org/jeecg/common/dto/archives/ProArchivesAndBusinessAddReqDTO.java
  2. 43 0
      src/main/java/org/jeecg/common/dto/invoice/PurchaseAddReqDTO.java
  3. 35 0
      src/main/java/org/jeecg/common/dto/invoice/PurchaseDetailAddReqDTO.java
  4. 53 0
      src/main/java/org/jeecg/common/dto/invoice/PurchaseDetailListRespDTO.java
  5. 51 0
      src/main/java/org/jeecg/common/dto/invoice/PurchaseRespDTO.java
  6. 47 0
      src/main/java/org/jeecg/common/dto/prowork/ProWorkLogicAddReqDTO.java
  7. 25 0
      src/main/java/org/jeecg/common/dto/prowork/ProWorkLogicContentAddReqDTO.java
  8. 39 0
      src/main/java/org/jeecg/common/dto/prowork/ProWorkLogicContentListRespDTO.java
  9. 4 0
      src/main/java/org/jeecg/common/dto/prowork/ProWorkLogicListReqDTO.java
  10. 63 0
      src/main/java/org/jeecg/common/dto/prowork/ProWorkLogicRespDTO.java
  11. 11 0
      src/main/java/org/jeecg/common/dto/prowork/ProWorkMilestoneAddReqDTO.java
  12. 16 0
      src/main/java/org/jeecg/common/dto/prowork/ProdWorkLogicReqDTO.java
  13. 2 0
      src/main/java/org/jeecg/modules/archives/controller/ProjectManageArchivesController.java
  14. 3 0
      src/main/java/org/jeecg/modules/archives/entity/ProjectManageArchivesAndBusiness.java
  15. 13 17
      src/main/java/org/jeecg/modules/invoice/controller/InvoiceManagePurchaseController.java
  16. 11 41
      src/main/java/org/jeecg/modules/invoice/entity/InvoiceManagePurchase.java
  17. 87 0
      src/main/java/org/jeecg/modules/invoice/entity/InvoiceManagePurchaseDetail.java
  18. 15 0
      src/main/java/org/jeecg/modules/invoice/mapper/InvoiceManagePurchaseDetailMapper.java
  19. 2 0
      src/main/java/org/jeecg/modules/invoice/mapper/InvoiceManagePurchaseMapper.java
  20. 5 0
      src/main/java/org/jeecg/modules/invoice/mapper/xml/InvoiceManagePurchaseDetailMapper.xml
  21. 14 0
      src/main/java/org/jeecg/modules/invoice/service/InvoiceManagePurchaseDetailService.java
  22. 18 1
      src/main/java/org/jeecg/modules/invoice/service/InvoiceManagePurchaseService.java
  23. 18 0
      src/main/java/org/jeecg/modules/invoice/service/impl/InvoiceManagePirchaseDetailServiceImpl.java
  24. 114 0
      src/main/java/org/jeecg/modules/invoice/service/impl/InvoiceManagePurchaseServiceImpl.java
  25. 108 151
      src/main/java/org/jeecg/modules/prowork/controller/ProWorkLogicController.java
  26. 298 0
      src/main/java/org/jeecg/modules/prowork/controller/ProWorkMilestoneController.java
  27. 21 18
      src/main/java/org/jeecg/modules/prowork/entity/ProWorkLogic.java
  28. 16 17
      src/main/java/org/jeecg/modules/prowork/entity/proWorkLogicContent.java
  29. 101 0
      src/main/java/org/jeecg/modules/prowork/entity/proWorkMilestone.java
  30. 0 3
      src/main/java/org/jeecg/modules/prowork/mapper/ProWorkLogicMapper.java
  31. 14 0
      src/main/java/org/jeecg/modules/prowork/mapper/ProWorkMilestoneMapper.java
  32. 3 5
      src/main/java/org/jeecg/modules/prowork/mapper/proWorkLogicContentMapper.java
  33. 1 1
      src/main/java/org/jeecg/modules/prowork/mapper/xml/ProWorkLogicContentMapper.xml
  34. 5 0
      src/main/java/org/jeecg/modules/prowork/mapper/xml/ProWorkMilestoneMapper.xml
  35. 18 1
      src/main/java/org/jeecg/modules/prowork/service/ProWorkLogicService.java
  36. 14 0
      src/main/java/org/jeecg/modules/prowork/service/ProWorkMilestoneService.java
  37. 105 0
      src/main/java/org/jeecg/modules/prowork/service/impl/ProWorkLogicServiceImpl.java
  38. 18 0
      src/main/java/org/jeecg/modules/prowork/service/impl/ProWorkMilestoneServiceImpl.java
  39. 4 4
      src/main/java/org/jeecg/modules/prowork/service/impl/proWorkLogicContentServiceImpl.java
  40. 2 2
      src/main/java/org/jeecg/modules/prowork/service/proWorkLogicContentService.java

+ 3 - 0
src/main/java/org/jeecg/common/dto/archives/ProArchivesAndBusinessAddReqDTO.java

@@ -17,6 +17,8 @@ import java.math.BigDecimal;
 public class ProArchivesAndBusinessAddReqDTO {
     @ApiModelProperty( "id")
     private String id;
+    @ApiModelProperty( "计划id")
+    private String planId;
     @ApiModelProperty( "计划名称")
     private String planName;
     @ApiModelProperty( "第一笔")
@@ -44,6 +46,7 @@ public class ProArchivesAndBusinessAddReqDTO {
     }
 
     public ProArchivesAndBusinessAddReqDTO(ProjectManageArchivesAndBusiness business) {
+        this.planId = business.getPlanId();
         this.planName = business.getId();
         this.price1 = business.getPrice1();
         this.price2 = business.getPrice2();

+ 43 - 0
src/main/java/org/jeecg/common/dto/invoice/PurchaseAddReqDTO.java

@@ -0,0 +1,43 @@
+package org.jeecg.common.dto.invoice;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import javax.validation.constraints.NotEmpty;
+import java.util.List;
+
+/**
+   * @Author jihaosen
+   * @date 2021/3/2
+   * @desc
+   */
+@ApiModel("采购发票和销售发票新增请求参数")
+@Data
+public class PurchaseAddReqDTO {
+    @ApiModelProperty("id")
+    private String id;
+    @ApiModelProperty("单据编号")
+    private String billcode;
+    @ApiModelProperty("类型(1.采购发票 2.销售发票)")
+    @NotEmpty(message = "参数type不能为空")
+    private String type;
+    @ApiModelProperty("项目档案id")
+    private String proArchivesId;
+    @NotEmpty(message = "参数proCode不为空")
+    @ApiModelProperty("项目编码")
+    private String proCode;
+    @ApiModelProperty("项目名称")
+    @NotEmpty(message = "参数proName不为空")
+    private String proName;
+    @ApiModelProperty("填写人(当前用户)")
+    @TableField(value = "`current_user`")
+    private String currentUser;
+    @ApiModelProperty("组织")
+    private String pkOrg;
+
+    private List<PurchaseDetailAddReqDTO> detailList;
+
+    public PurchaseAddReqDTO() {
+    }
+}

+ 35 - 0
src/main/java/org/jeecg/common/dto/invoice/PurchaseDetailAddReqDTO.java

@@ -0,0 +1,35 @@
+package org.jeecg.common.dto.invoice;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+   * @Author jihaosen
+   * @date 2021/3/2
+   */
+ @ApiModel("采购发票和销售发票详情新增请求参数")
+ @Data
+public class PurchaseDetailAddReqDTO {
+    @ApiModelProperty("采购,销售发票id")
+    private String purchaseId;
+    @ApiModelProperty("收款条线档案id")
+    private String coArchivesId;
+    @ApiModelProperty("收付款条线")
+    private String coArchivesName;
+    @ApiModelProperty("项目档案里程碑表id")
+    private String proBusinessId;
+    @ApiModelProperty("项目档案里程碑(项目档案—商务,页签中的收款计划)")
+    private String proArchivesMilestone;
+    @ApiModelProperty("金额 (里程碑与首付款条线对应金额)")
+    private java.math.BigDecimal price;
+    @ApiModelProperty("未收票金额")
+    private java.math.BigDecimal uncoPrice;
+    @ApiModelProperty("收票金额")
+    private java.math.BigDecimal coPrice;
+    @ApiModelProperty("组织")
+    private String pkOrg;
+
+    public PurchaseDetailAddReqDTO() {
+    }
+}

+ 53 - 0
src/main/java/org/jeecg/common/dto/invoice/PurchaseDetailListRespDTO.java

@@ -0,0 +1,53 @@
+package org.jeecg.common.dto.invoice;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.jeecg.modules.invoice.entity.InvoiceManagePurchaseDetail;
+
+import java.math.BigDecimal;
+
+/**
+   * @Author jihaosen
+   * @date 2021/3/2
+   */
+ @ApiModel("采购,销售子表列表响应参数")
+ @Data
+public class PurchaseDetailListRespDTO {
+    @ApiModelProperty("id")
+     private String id;
+    @ApiModelProperty("采购,销售发票id")
+    private String purchaseId;
+    @ApiModelProperty("收款条线档案id")
+    private String coArchivesId;
+    @ApiModelProperty("收付款条线")
+    private String coArchivesName;
+    @ApiModelProperty("项目档案里程碑表id")
+    private String proBusinessId;
+    @ApiModelProperty("项目档案里程碑(项目档案—商务,页签中的收款计划)")
+    private String proArchivesMilestone;
+    @ApiModelProperty("金额 (里程碑与首付款条线对应金额)")
+    private java.math.BigDecimal price;
+    @ApiModelProperty("未收票金额")
+    private java.math.BigDecimal uncoPrice;
+    @ApiModelProperty("收票金额")
+    private java.math.BigDecimal coPrice;
+    @ApiModelProperty("组织")
+    private String pkOrg;
+
+    public PurchaseDetailListRespDTO() {
+    }
+
+    public PurchaseDetailListRespDTO(InvoiceManagePurchaseDetail detail) {
+        this.id = detail.getId();
+        this.purchaseId = detail.getPurchaseId();
+        this.coArchivesId = detail.getCoArchivesId();
+        this.coArchivesName = detail.getCoArchivesName();
+        this.proBusinessId = detail.getProBusinessId();
+        this.proArchivesMilestone = detail.getProArchivesMilestone();
+        this.price = detail.getPrice();
+        this.uncoPrice = detail.getUncoPrice();
+        this.coPrice = detail.getCoPrice();
+        this.pkOrg = detail.getPkOrg();
+    }
+}

+ 51 - 0
src/main/java/org/jeecg/common/dto/invoice/PurchaseRespDTO.java

@@ -0,0 +1,51 @@
+package org.jeecg.common.dto.invoice;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.jeecg.modules.invoice.entity.InvoiceManagePurchase;
+
+import javax.validation.constraints.NotEmpty;
+import java.util.List;
+
+@ApiModel("采购,销售发票返回参数")
+@Data
+public class PurchaseRespDTO {
+    @ApiModelProperty("id")
+    private String id;
+    @ApiModelProperty("单据编号")
+    private String billcode;
+    @ApiModelProperty("类型(1.采购发票 2.销售发票)")
+    @NotEmpty(message = "参数type不能为空")
+    private String type;
+    @ApiModelProperty("项目档案id")
+    private String proArchivesId;
+    @NotEmpty(message = "参数proCode不为空")
+    @ApiModelProperty("项目编码")
+    private String proCode;
+    @ApiModelProperty("项目名称")
+    @NotEmpty(message = "参数proName不为空")
+    private String proName;
+    @ApiModelProperty("填写人(当前用户)")
+    @TableField(value = "`current_user`")
+    private String currentUser;
+    @ApiModelProperty("组织")
+    private String pkOrg;
+
+    private List<PurchaseDetailListRespDTO> detailList;
+
+    public PurchaseRespDTO() {
+    }
+
+    public PurchaseRespDTO(InvoiceManagePurchase purchase) {
+        this.id = purchase.getId();
+        this.billcode = purchase.getBillcode();
+        this.type = purchase.getType();
+        this.proArchivesId = purchase.getProArchivesId();
+        this.proCode = purchase.getProCode();
+        this.proName = purchase.getProName();
+        this.currentUser = purchase.getCurrentUser();
+        this.pkOrg = purchase.getPkOrg();
+    }
+}

+ 47 - 0
src/main/java/org/jeecg/common/dto/prowork/ProWorkLogicAddReqDTO.java

@@ -0,0 +1,47 @@
+package org.jeecg.common.dto.prowork;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.util.Date;
+import java.util.List;
+
+@ApiModel("日志新增参数请求")
+@Data
+public class ProWorkLogicAddReqDTO {
+    private String id;
+    @ApiModelProperty("单据编号")
+    private String billcode;
+    @ApiModelProperty("1.开发 2.实施 3.服务")
+    private String type;
+    @ApiModelProperty("项目id")
+    private String proId;
+    @ApiModelProperty("项目名称")
+    private String proName;
+    @ApiModelProperty("开始日期")
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date startDate;
+    @ApiModelProperty("结束日期")
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date endDate;
+    @ApiModelProperty("汇报人")
+    private String reporter;
+    @ApiModelProperty("里程碑id")
+    private String milesId;
+    @ApiModelProperty("里程碑(计划)")
+    private String milesName;
+    @ApiModelProperty("填写人(当前用户)")
+    private String currentUser;
+    @ApiModelProperty("组织")
+    private String pkOrg;
+
+    private List<ProWorkLogicContentAddReqDTO> detailList;
+
+    public ProWorkLogicAddReqDTO() {
+    }
+}

+ 25 - 0
src/main/java/org/jeecg/common/dto/prowork/ProWorkLogicContentAddReqDTO.java

@@ -0,0 +1,25 @@
+package org.jeecg.common.dto.prowork;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@ApiModel("日志子表新增参数请求")
+@Data
+public class ProWorkLogicContentAddReqDTO {
+    @ApiModelProperty("日志id")
+    private String logicId;
+    @ApiModelProperty("项目档案id")
+    private String proArchivesId;
+    @ApiModelProperty("项目档案里程碑")
+    private String proArchivesMilestone;
+    @ApiModelProperty("工作内容")
+    private String content;
+    @ApiModelProperty("工作时长")
+    private Double duration;
+    @ApiModelProperty("组织")
+    private String PkOrg;
+
+    public ProWorkLogicContentAddReqDTO() {
+    }
+}

+ 39 - 0
src/main/java/org/jeecg/common/dto/prowork/ProWorkLogicContentListRespDTO.java

@@ -0,0 +1,39 @@
+package org.jeecg.common.dto.prowork;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.jeecg.modules.prowork.entity.ProWorkLogicContent;
+
+ /**
+   * @Author jihaosen
+   * @date 2021/3/2
+   */
+@ApiModel("日志子表列表参数响应")
+@Data
+public class ProWorkLogicContentListRespDTO {
+    @ApiModelProperty("id")
+    private String id;
+    @ApiModelProperty("日志id")
+    private String logicId;
+    @ApiModelProperty("项目档案id")
+    private String proArchivesId;
+    @ApiModelProperty("项目档案里程碑")
+    private String proArchivesMilestone;
+    @ApiModelProperty("工作内容")
+    private String content;
+    @ApiModelProperty("工作时长")
+    private Double duration;
+
+    public ProWorkLogicContentListRespDTO() {
+    }
+
+    public ProWorkLogicContentListRespDTO(ProWorkLogicContent proWorkLogicContent ) {
+        this.id = proWorkLogicContent.getId();
+        this.logicId = proWorkLogicContent.getLogicId();
+        this.proArchivesId = proWorkLogicContent.getProArchivesId();
+        this.proArchivesMilestone = proWorkLogicContent.getProArchivesMilestone();
+        this.content = proWorkLogicContent.getContent();
+        this.duration = proWorkLogicContent.getDuration();
+    }
+}

+ 4 - 0
src/main/java/org/jeecg/common/dto/prowork/ProWorkLogicListReqDTO.java

@@ -18,6 +18,8 @@ public class ProWorkLogicListReqDTO {
 
     @ApiModelProperty("单据编号")
     private String billcode;
+    @ApiModelProperty("1.开发 2.实施 3.服务")
+    private String type;
     @ApiModelProperty("项目名称")
     private String proName;
     @ApiModelProperty("开始日期")
@@ -28,6 +30,8 @@ public class ProWorkLogicListReqDTO {
     @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
     private Date endDate;
+     @ApiModelProperty("汇报人")
+    private String reporter;
     @ApiModelProperty("里程碑(计划)")
     private String milesName;
     @ApiModelProperty("填写人(当前用户)")

+ 63 - 0
src/main/java/org/jeecg/common/dto/prowork/ProWorkLogicRespDTO.java

@@ -0,0 +1,63 @@
+package org.jeecg.common.dto.prowork;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.jeecg.modules.prowork.entity.ProWorkLogic;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.util.Date;
+import java.util.List;
+
+ /**
+   * @Author jihaosen
+   * @date 2021/3/2
+   */
+@ApiModel("日志响应参数")
+@Data
+public class ProWorkLogicRespDTO {
+    private String id;
+    @ApiModelProperty("单据编号")
+    private String billcode;
+    @ApiModelProperty("项目id")
+    private String proId;
+    @ApiModelProperty("项目名称")
+    private String proName;
+    @ApiModelProperty("开始日期")
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date startDate;
+    @ApiModelProperty("结束日期")
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date endDate;
+    @ApiModelProperty("汇报人")
+    private String reporter;
+    @ApiModelProperty("里程碑id")
+    private String milesId;
+    @ApiModelProperty("里程碑(计划)")
+    private String milesName;
+    @ApiModelProperty("填写人(当前用户)")
+    private String currentUser;
+    @ApiModelProperty("组织")
+    private String pkOrg;
+
+    private List<ProWorkLogicContentListRespDTO> detailList;
+
+    public ProWorkLogicRespDTO() {
+    }
+
+     public ProWorkLogicRespDTO(ProWorkLogic proWorkLogic) {
+         this.id = proWorkLogic.getId();
+         this.billcode = proWorkLogic.getBillcode();
+         this.proId = proWorkLogic.getProId();
+         this.proName = proWorkLogic.getProName();
+         this.startDate = proWorkLogic.getStartDate();
+         this.endDate = proWorkLogic.getEndDate();
+         this.reporter = proWorkLogic.getReporter();
+         this.milesId = proWorkLogic.getMilesId();
+         this.milesName = proWorkLogic.getMilesName();
+         this.currentUser = proWorkLogic.getCurrentUser();
+         this.pkOrg = proWorkLogic.getPkOrg();
+     }
+ }

+ 11 - 0
src/main/java/org/jeecg/common/dto/prowork/ProWorkMilestoneAddReqDTO.java

@@ -0,0 +1,11 @@
+package org.jeecg.common.dto.prowork;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+@ApiModel("里程碑确认单新增参数请求")
+@Data
+public class ProWorkMilestoneAddReqDTO {
+//    private
+
+}

+ 16 - 0
src/main/java/org/jeecg/common/dto/prowork/ProdWorkLogicReqDTO.java

@@ -0,0 +1,16 @@
+package org.jeecg.common.dto.prowork;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+/**
+ * @desc
+ */
+@ApiModel("日志新增参数请求")
+@Data
+public class ProdWorkLogicReqDTO {
+    private String id;
+
+    public ProdWorkLogicReqDTO() {
+    }
+}

+ 2 - 0
src/main/java/org/jeecg/modules/archives/controller/ProjectManageArchivesController.java

@@ -84,6 +84,7 @@ public class ProjectManageArchivesController {
 			@ApiImplicitParam(name="seEngineerId", value="服务工程师id",required=true, dataType="String"),
 			@ApiImplicitParam(name="seEngineer", value="服务工程师",required=true, dataType="String"),
 			@ApiImplicitParam(name="pkOrg", value="组织",required=false, dataType="String"),
+			@ApiImplicitParam(name="planId", value="计划id",required=false, dataType="String"),
 			@ApiImplicitParam(name="planName", value="计划名称",required=false, dataType="String"),
 			@ApiImplicitParam(name="price1", value="第一笔",required=false, dataType="String"),
 			@ApiImplicitParam(name="price2", value="第二笔",required=false, dataType="String"),
@@ -156,6 +157,7 @@ public class ProjectManageArchivesController {
 			@ApiImplicitParam(name="seEngineerId", value="服务工程师id",required=true, dataType="String"),
 			@ApiImplicitParam(name="seEngineer", value="服务工程师",required=true, dataType="String"),
 			@ApiImplicitParam(name="pkOrg", value="组织",required=false, dataType="String"),
+			@ApiImplicitParam(name="planId", value="计划id",required=false, dataType="String"),
 			@ApiImplicitParam(name="planName", value="计划名称",required=false, dataType="String"),
 			@ApiImplicitParam(name="price1", value="第一笔",required=false, dataType="String"),
 			@ApiImplicitParam(name="price2", value="第二笔",required=false, dataType="String"),

+ 3 - 0
src/main/java/org/jeecg/modules/archives/entity/ProjectManageArchivesAndBusiness.java

@@ -29,6 +29,8 @@ public class ProjectManageArchivesAndBusiness implements Serializable {
 	private String proArchivesId;
 	@ApiModelProperty( "计划类型 1.商务 2.实施 3.开发 4.服务")
 	private Integer planType;
+	 @ApiModelProperty( "计划id")
+	 private String planId;
 	@ApiModelProperty( "计划名称")
 	private String planName;
 	@ApiModelProperty( "第一笔")
@@ -74,6 +76,7 @@ public class ProjectManageArchivesAndBusiness implements Serializable {
 	 public ProjectManageArchivesAndBusiness(ProArchivesAndBusinessAddReqDTO mile, String proArchivesId, Integer planType, String pkOrg) {
 		 this.proArchivesId = proArchivesId;
 		 this.planType = planType;
+		 this.planId = mile.getPlanId();
 		 this.planName = mile.getPlanName();
 		 this.price1 = mile.getPrice1();
 		 this.price2 = mile.getPrice2();

+ 13 - 17
src/main/java/org/jeecg/modules/invoice/controller/InvoiceManagePurchaseController.java

@@ -8,7 +8,9 @@ import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.constant.CommonConstant;
+import org.jeecg.common.dto.invoice.PurchaseAddReqDTO;
 import org.jeecg.common.dto.invoice.PurchaseReqDTO;
+import org.jeecg.common.dto.invoice.PurchaseRespDTO;
 import org.jeecg.common.system.query.QueryGenerator;
 import org.jeecg.modules.invoice.entity.InvoiceManagePurchase;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -17,7 +19,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.extern.slf4j.Slf4j;
 import org.jeecg.modules.invoice.service.InvoiceManagePurchaseService;
 import org.jeecg.modules.system.service.ISysSerialPatternService;
-import org.jeecg.modules.system.vo.CallResult;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.BindingResult;
 import org.springframework.web.bind.annotation.DeleteMapping;
@@ -83,7 +84,7 @@ public class InvoiceManagePurchaseController {
 			@ApiImplicitParam(name="currentUser", value="填写人(当前用户)",required=true, dataType="String"),
 	})
 	@PostMapping(value = "/add")
-	public Result<InvoiceManagePurchase> add(@RequestBody @Valid InvoiceManagePurchase invoiceManagePurchase, BindingResult bindingResult) {
+	public Result<InvoiceManagePurchase> add(@RequestBody @Valid PurchaseAddReqDTO reqDTO, BindingResult bindingResult) {
 		Result<InvoiceManagePurchase> result = new Result<InvoiceManagePurchase>();
 		try {
 
@@ -94,13 +95,8 @@ public class InvoiceManagePurchaseController {
 				result.error500(sb.toString());
 				return result;
 			}
-			// 设置编码
-			CallResult<String> nextSerial = sysSerialPatternService.getNextSerial(invoiceManagePurchase, "invoice_manage_purchase", "billcode", true);
-			if(!nextSerial.isSucceed()){
-				throw new RuntimeException("获取编号失败");
-			}
-			invoiceManagePurchase.setBillcode(nextSerial.getContent());
-			invoiceManagePurchaseService.save(invoiceManagePurchase);
+
+			invoiceManagePurchaseService.add(reqDTO);
 			result.success("添加成功!");
 		} catch (Exception e) {
 			e.printStackTrace();
@@ -128,13 +124,13 @@ public class InvoiceManagePurchaseController {
 			 @ApiImplicitParam(name="currentUser", value="填写人(当前用户)",required=true, dataType="String"),
 	 })
 	@PutMapping(value = "/edit")
-	public Result<InvoiceManagePurchase> edit(@RequestBody InvoiceManagePurchase invoiceManagePurchase) {
+	public Result<InvoiceManagePurchase> edit(@RequestBody PurchaseAddReqDTO reqDTO) {
 		Result<InvoiceManagePurchase> result = new Result<InvoiceManagePurchase>();
-		InvoiceManagePurchase invoiceManagePurchaseEntity = invoiceManagePurchaseService.getById(invoiceManagePurchase.getId());
+		InvoiceManagePurchase invoiceManagePurchaseEntity = invoiceManagePurchaseService.getById(reqDTO.getId());
 		if(invoiceManagePurchaseEntity==null) {
 			result.error500("未找到对应实体");
 		}else {
-			boolean ok = invoiceManagePurchaseService.updateById(invoiceManagePurchase);
+			boolean ok = invoiceManagePurchaseService.edit(reqDTO);
 			if(ok) {
 				result.success("修改成功!");
 			}
@@ -154,8 +150,8 @@ public class InvoiceManagePurchaseController {
 		if(invoiceManagePurchase==null) {
 			result.error500("未找到对应实体");
 		}else {
-			invoiceManagePurchase.setDelFlag("1");
-			boolean ok = invoiceManagePurchaseService.updateById(invoiceManagePurchase);
+
+			boolean ok = invoiceManagePurchaseService.deleteById(invoiceManagePurchase);
 			if(ok) {
 				result.success("删除成功!");
 			}
@@ -169,9 +165,9 @@ public class InvoiceManagePurchaseController {
 			@ApiImplicitParam(name = "id", value = "组织", required = true, dataType = "String")
 	})
 	@GetMapping(value = "/queryById")
-	public Result<InvoiceManagePurchase> queryById(@RequestParam(name="id",required=true) String id) {
-		Result<InvoiceManagePurchase> result = new Result<InvoiceManagePurchase>();
-		InvoiceManagePurchase invoiceManagePurchase = invoiceManagePurchaseService.getById(id);
+	public Result<PurchaseRespDTO> queryById(@RequestParam(name="id",required=true) String id) {
+		Result<PurchaseRespDTO> result = new Result<PurchaseRespDTO>();
+		PurchaseRespDTO invoiceManagePurchase = invoiceManagePurchaseService.queryById(id);
 		if(invoiceManagePurchase==null) {
 			result.error500("未找到对应实体");
 		}else {

+ 11 - 41
src/main/java/org/jeecg/modules/invoice/entity/InvoiceManagePurchase.java

@@ -11,6 +11,7 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import org.jeecg.common.dto.invoice.PurchaseAddReqDTO;
 import org.springframework.format.annotation.DateTimeFormat;
 import javax.validation.constraints.NotEmpty;
 
@@ -41,24 +42,6 @@ public class InvoiceManagePurchase implements Serializable {
 	@ApiModelProperty("项目名称")
 	@NotEmpty(message = "参数proName不为空")
 	private String proName;
-	@ApiModelProperty("收款条线档案id")
-	@NotEmpty(message = "参数coArchivesId不能为空")
-	private String coArchivesId;
-	@ApiModelProperty("收付款条线")
-	@NotEmpty(message = "参数coArchivesName不能为空")
-	private String coArchivesName;
-	@ApiModelProperty("项目档案里程碑表id")
-	@NotEmpty(message = "参数proBusinessId不能为空")
-	private String proBusinessId;
-	@ApiModelProperty("项目档案里程碑(项目档案—商务,页签中的收款计划)")
-	@NotEmpty(message = "参数proArchivesMilestone不能为空")
-	private String proArchivesMilestone;
-	@ApiModelProperty("金额(里程碑与首付款条线对应金额)")
-	private BigDecimal price;
-	@ApiModelProperty("未收票金额")
-	private BigDecimal uncoPrice;
-	@ApiModelProperty("收票金额")
-	private BigDecimal coPrice;
 	@ApiModelProperty("填写人(当前用户)")
 	@TableField(value = "`current_user`")
 	private String currentUser;
@@ -82,28 +65,15 @@ public class InvoiceManagePurchase implements Serializable {
 	public InvoiceManagePurchase() {
 	}
 
-	public InvoiceManagePurchase(String id, String billcode, String type, String proCode, String proArchivesId, String proName, String coArchivesId,
-	 String coArchivesName, String proBusinessId, String proArchivesMilestone, BigDecimal price, BigDecimal uncoPrice,
-	 BigDecimal coPrice, String currentUser, Date createTime, String createBy, Date updateTime, String updateBy, String delFlag, String pkOrg) {
-		this.id = id;
-		this.billcode = billcode;
-		this.type = type;
-		this.proArchivesId = proArchivesId;
-		this.proCode = proCode;
-		this.proName = proName;
-		this.coArchivesId = coArchivesId;
-		this.coArchivesName = coArchivesName;
-		this.proBusinessId = proBusinessId;
-		this.proArchivesMilestone = proArchivesMilestone;
-		this.price = price;
-		this.uncoPrice = uncoPrice;
-		this.coPrice = coPrice;
-		this.currentUser = currentUser;
-		this.createTime = createTime;
-		this.createBy = createBy;
-		this.updateTime = updateTime;
-		this.updateBy = updateBy;
-		this.delFlag = delFlag;
-		this.pkOrg = pkOrg;
+	public InvoiceManagePurchase(PurchaseAddReqDTO reqDTO) {
+		this.id = reqDTO.getId();
+		this.billcode = reqDTO.getBillcode();
+		this.type = reqDTO.getType();
+		this.proArchivesId = reqDTO.getProArchivesId();
+		this.proCode = reqDTO.getProCode();
+		this.proName = reqDTO.getProName();
+		this.currentUser = reqDTO.getCurrentUser();
+		this.delFlag = "0";
+		this.pkOrg = reqDTO.getPkOrg();
 	}
 }

+ 87 - 0
src/main/java/org/jeecg/modules/invoice/entity/InvoiceManagePurchaseDetail.java

@@ -0,0 +1,87 @@
+package org.jeecg.modules.invoice.entity;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.jeecg.common.dto.invoice.PurchaseDetailAddReqDTO;
+import org.springframework.format.annotation.DateTimeFormat;
+
+ /**
+   * @Author jihaosen
+   * @date 2021/3/2
+   */
+@ApiModel("采购,销售发票详情表")
+@Data
+@TableName("invoice_manage_pirchase_detail")
+public class InvoiceManagePurchaseDetail implements Serializable {
+	private static final long serialVersionUID = -6372683069405898456L;
+	@ApiModelProperty("id")
+	@TableId(type = IdType.UUID)
+	private String id;
+	 @ApiModelProperty("采购,销售发票id")
+	private String purchaseId;
+	@ApiModelProperty("收款条线档案id")
+	private String coArchivesId;
+	@ApiModelProperty("收付款条线")
+	private String coArchivesName;
+	@ApiModelProperty("项目档案里程碑表id")
+	private String proBusinessId;
+	@ApiModelProperty("项目档案里程碑(项目档案—商务,页签中的收款计划)")
+	private String proArchivesMilestone;
+	@ApiModelProperty("金额 (里程碑与首付款条线对应金额)")
+	private java.math.BigDecimal price;
+	@ApiModelProperty("未收票金额")
+	private java.math.BigDecimal uncoPrice;
+	@ApiModelProperty("收票金额")
+	private java.math.BigDecimal coPrice;
+	@ApiModelProperty("创建时间")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+	private Date createTime;
+	@ApiModelProperty("创建人")
+	private String createBy;
+	@ApiModelProperty("修改时间")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+	private Date updateTime;
+	@ApiModelProperty("修改人")
+	private String updateBy;
+	@ApiModelProperty("删除状态(0,正常,1已删除)")
+	private String delFlag;
+	@ApiModelProperty("组织")
+	private String pkOrg;
+
+	public InvoiceManagePurchaseDetail() {
+	}
+
+	 /**
+	  * @desc 添加用
+	  */
+	 public InvoiceManagePurchaseDetail(PurchaseDetailAddReqDTO detail) {
+		 this.purchaseId = detail.getPurchaseId();
+		 this.coArchivesId = detail.getCoArchivesId();
+		 this.coArchivesName = detail.getCoArchivesName();
+		 this.proBusinessId = detail.getProBusinessId();
+		 this.proArchivesMilestone = detail.getProArchivesMilestone();
+		 this.price = detail.getPrice();
+		 this.uncoPrice = detail.getUncoPrice();
+		 this.coPrice = detail.getCoPrice();
+		 this.delFlag = "0";
+		 this.pkOrg = detail.getPkOrg();
+	 }
+
+	 /**
+	  * @desc 删除用
+	  */
+	 public InvoiceManagePurchaseDetail(String delFlag) {
+		 this.delFlag = delFlag;
+	 }
+
+ }

+ 15 - 0
src/main/java/org/jeecg/modules/invoice/mapper/InvoiceManagePurchaseDetailMapper.java

@@ -0,0 +1,15 @@
+package org.jeecg.modules.invoice.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.jeecg.modules.invoice.entity.InvoiceManagePurchaseDetail;
+
+/**
+ * @Description: 采购,销售发票详情表
+ * @author: jeecg-boot
+ * @date2021-03-02
+ * @version: V1.0
+ */
+@Mapper
+public interface InvoiceManagePurchaseDetailMapper extends BaseMapper<InvoiceManagePurchaseDetail> {
+}

+ 2 - 0
src/main/java/org/jeecg/modules/invoice/mapper/InvoiceManagePurchaseMapper.java

@@ -2,6 +2,7 @@ package org.jeecg.modules.invoice.mapper;
 
 import java.util.List;
 
+import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 import org.jeecg.modules.invoice.entity.InvoiceManagePurchase;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -12,6 +13,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @date2021-02-26
  * @version: V1.0
  */
+@Mapper
 public interface InvoiceManagePurchaseMapper extends BaseMapper<InvoiceManagePurchase> {
 
 }

+ 5 - 0
src/main/java/org/jeecg/modules/invoice/mapper/xml/InvoiceManagePurchaseDetailMapper.xml

@@ -0,0 +1,5 @@
+<?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="org.jeecg.modules.invoice.mapper.InvoiceManagePurchaseDetailMapper">
+
+</mapper>

+ 14 - 0
src/main/java/org/jeecg/modules/invoice/service/InvoiceManagePurchaseDetailService.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.invoice.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.invoice.entity.InvoiceManagePurchaseDetail;
+
+/**
+ * @Description: 采购,销售发票详情表
+ * @author: jeecg-boot
+ * @date2021-03-02
+ * @version: V1.0
+ */
+public interface InvoiceManagePurchaseDetailService extends IService<InvoiceManagePurchaseDetail> {
+
+}

+ 18 - 1
src/main/java/org/jeecg/modules/invoice/service/InvoiceManagePurchaseService.java

@@ -1,5 +1,7 @@
 package org.jeecg.modules.invoice.service;
 
+import org.jeecg.common.dto.invoice.PurchaseAddReqDTO;
+import org.jeecg.common.dto.invoice.PurchaseRespDTO;
 import org.jeecg.modules.invoice.entity.InvoiceManagePurchase;
 import com.baomidou.mybatisplus.extension.service.IService;
 
@@ -10,5 +12,20 @@ import com.baomidou.mybatisplus.extension.service.IService;
  * @version: V1.0
  */
 public interface InvoiceManagePurchaseService extends IService<InvoiceManagePurchase> {
-
+    /**
+     * @desc 新增采购,销售发票
+     */
+    void add(PurchaseAddReqDTO reqDTO);
+    /**
+     * @desc 编辑采购,销售发票
+     */
+    boolean edit(PurchaseAddReqDTO reqDTO);
+    /**
+     * @desc 删除采购,销售发票
+     */
+    boolean deleteById(InvoiceManagePurchase invoiceManagePurchase);
+    /**
+     * @desc 通过id查询
+     */
+    PurchaseRespDTO queryById(String id);
 }

+ 18 - 0
src/main/java/org/jeecg/modules/invoice/service/impl/InvoiceManagePirchaseDetailServiceImpl.java

@@ -0,0 +1,18 @@
+package org.jeecg.modules.invoice.service.impl;
+
+import org.jeecg.modules.invoice.entity.InvoiceManagePurchaseDetail;
+import org.jeecg.modules.invoice.mapper.InvoiceManagePurchaseDetailMapper;
+import org.jeecg.modules.invoice.service.InvoiceManagePurchaseDetailService;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 采购,销售发票详情表
+ * @author: jeecg-boot
+ * @date2021-03-02
+ * @version: V1.0
+ */
+@Service
+public class InvoiceManagePirchaseDetailServiceImpl extends ServiceImpl<InvoiceManagePurchaseDetailMapper, InvoiceManagePurchaseDetail> implements InvoiceManagePurchaseDetailService {
+
+}

+ 114 - 0
src/main/java/org/jeecg/modules/invoice/service/impl/InvoiceManagePurchaseServiceImpl.java

@@ -1,10 +1,27 @@
 package org.jeecg.modules.invoice.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.Query;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.google.common.collect.Lists;
+import io.swagger.annotations.ApiModel;
+import org.jeecg.common.dto.invoice.PurchaseAddReqDTO;
+import org.jeecg.common.dto.invoice.PurchaseDetailAddReqDTO;
+import org.jeecg.common.dto.invoice.PurchaseDetailListRespDTO;
+import org.jeecg.common.dto.invoice.PurchaseRespDTO;
 import org.jeecg.modules.invoice.entity.InvoiceManagePurchase;
+import org.jeecg.modules.invoice.entity.InvoiceManagePurchaseDetail;
+import org.jeecg.modules.invoice.mapper.InvoiceManagePurchaseDetailMapper;
 import org.jeecg.modules.invoice.mapper.InvoiceManagePurchaseMapper;
+import org.jeecg.modules.invoice.service.InvoiceManagePurchaseDetailService;
 import org.jeecg.modules.invoice.service.InvoiceManagePurchaseService;
+import org.jeecg.modules.system.service.ISysSerialPatternService;
+import org.jeecg.modules.system.vo.CallResult;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
 
 /**
  * @Description: 采购,销售发票
@@ -13,6 +30,103 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  * @version: V1.0
  */
 @Service
+@Transactional
 public class InvoiceManagePurchaseServiceImpl extends ServiceImpl<InvoiceManagePurchaseMapper, InvoiceManagePurchase> implements InvoiceManagePurchaseService {
+    @Autowired
+    private ISysSerialPatternService sysSerialPatternService;
+    @Autowired
+    private InvoiceManagePurchaseDetailService invoiceManagePurchaseDetailService;
+
+     /**
+       * @Author jihaosen
+       * @date 2021/3/2
+       * @desc 新增采购,销售发票
+       */
+
+    @Override
+    public void add(PurchaseAddReqDTO reqDTO) {
+
+        InvoiceManagePurchase invoiceManagePurchase = new InvoiceManagePurchase(reqDTO);
+        // 设置编码
+        CallResult<String> nextSerial = sysSerialPatternService.getNextSerial(invoiceManagePurchase, "invoice_manage_purchase", "billcode", true);
+        if(!nextSerial.isSucceed()){
+            throw new RuntimeException("获取编号失败");
+        }
+        invoiceManagePurchase.setBillcode(nextSerial.getContent());
+        save(invoiceManagePurchase);
+        for(PurchaseDetailAddReqDTO detail : reqDTO.getDetailList()){
+            detail.setPurchaseId(invoiceManagePurchase.getId());
+            InvoiceManagePurchaseDetail invoiceManagePurchaseDetail = new InvoiceManagePurchaseDetail(detail);
+            invoiceManagePurchaseDetailService.save(invoiceManagePurchaseDetail);
+        }
+
+    }
+
+    /**
+     * @Author jihaosen
+     * @date 2021/3/2
+     * @desc 编辑采购,销售发票
+     */
+    @Override
+    public boolean edit(PurchaseAddReqDTO reqDTO) {
+        InvoiceManagePurchase invoiceManagePurchase = new InvoiceManagePurchase(reqDTO);
+        updateById(invoiceManagePurchase);
+        //删除子表
+        deleteChildrenTable(invoiceManagePurchase.getId());
+         //新增子表数据
+        for(PurchaseDetailAddReqDTO detail : reqDTO.getDetailList()){
+            detail.setPurchaseId(invoiceManagePurchase.getId());
+            InvoiceManagePurchaseDetail invoiceManagePurchaseDetail = new InvoiceManagePurchaseDetail(detail);
+            invoiceManagePurchaseDetailService.save(invoiceManagePurchaseDetail);
+        }
+
+        return true;
+    }
+
+    /**
+     * @Author jihaosen
+     * @date 2021/3/2
+     * @desc 删除采购,销售发票
+     */
+    @Override
+    public boolean deleteById(InvoiceManagePurchase invoiceManagePurchase) {
+        invoiceManagePurchase.setDelFlag("1");
+        updateById(invoiceManagePurchase);
+        //删除子表
+        deleteChildrenTable(invoiceManagePurchase.getId());
+        return true;
+    }
+
+    /**
+     * @desc 根据id查询
+     */
+    @Override
+    public PurchaseRespDTO queryById(String id) {
+        InvoiceManagePurchase invoiceManagePurchase = getById(id);
+        PurchaseRespDTO respDTO = new PurchaseRespDTO(invoiceManagePurchase);
+
+        //获取子数据
+        QueryWrapper<InvoiceManagePurchaseDetail> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("del_flag", "0");
+        queryWrapper.eq("purchase_id", id);
+        List<InvoiceManagePurchaseDetail> details  = invoiceManagePurchaseDetailService.list(queryWrapper);
+        List<PurchaseDetailListRespDTO> list = Lists.newArrayList();
+        for(InvoiceManagePurchaseDetail detail : details){
+            PurchaseDetailListRespDTO detailResp = new PurchaseDetailListRespDTO(detail);
+            list.add(detailResp);
+        }
+        respDTO.setDetailList(list);
+        return respDTO;
+    }
+
+
 
+    /**
+     * @desc 删除子表数据
+     */
+    private void deleteChildrenTable(String id) {
+        QueryWrapper<InvoiceManagePurchaseDetail> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("purchase_id", id).eq("del_flag", "0");
+        invoiceManagePurchaseDetailService.update(new InvoiceManagePurchaseDetail("1"), queryWrapper);
+    }
 }

+ 108 - 151
src/main/java/org/jeecg/modules/prowork/controller/ProWorkLogicController.java

@@ -1,49 +1,45 @@
 package org.jeecg.modules.prowork.controller;
 
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.net.URLDecoder;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
+import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang.StringUtils;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.constant.CommonConstant;
+import org.jeecg.common.dto.prowork.ProWorkLogicAddReqDTO;
 import org.jeecg.common.dto.prowork.ProWorkLogicListReqDTO;
-import org.jeecg.common.system.query.QueryGenerator;
-import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.common.dto.prowork.ProWorkLogicRespDTO;
+import org.jeecg.common.dto.prowork.ProdWorkLogicReqDTO;
+import org.jeecg.common.exception.JeecgBootException;
 import org.jeecg.modules.prowork.entity.ProWorkLogic;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.extern.slf4j.Slf4j;
 import org.jeecg.modules.prowork.service.ProWorkLogicService;
-import org.jeecgframework.poi.excel.ExcelImportUtil;
-import org.jeecgframework.poi.excel.def.NormalExcelConstants;
-import org.jeecgframework.poi.excel.entity.ExportParams;
-import org.jeecgframework.poi.excel.entity.ImportParams;
-import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.BindingResult;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
-import org.springframework.web.multipart.MultipartHttpServletRequest;
-import org.springframework.web.servlet.ModelAndView;
-import com.alibaba.fastjson.JSON;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
 
- /**
+/**
  * @Title: Controller
  * @Description: 日志(实施,开发,服务)
  * @author: jeecg-boot
  * @date2021-03-02
  * @version: V1.0
  */
+ @Api("日志(实施,开发,服务)接口")
 @RestController
 @RequestMapping("/prowork/proWorkLogic")
 @Slf4j
@@ -55,36 +51,68 @@ public class ProWorkLogicController {
 	 @ApiOperation(value = "分页查询接口", notes = "日志分页查询")
 	 @ApiImplicitParams({
 			 @ApiImplicitParam(name="pkOrg", value="组织",required=false, dataType="String"),
+			 @ApiImplicitParam(name="type", value="1.开发 2.实施 3.服务",required=true, dataType="String"),
+			 @ApiImplicitParam(name="billcode", value="单据编号",required=false, dataType="String"),
+			 @ApiImplicitParam(name="proName", value="项目名称",required=false, dataType="String"),
 	 })
 	@GetMapping(value = "/list")
-	public Result<IPage<ProWorkLogic>> queryPageList(ProWorkLogicListReqDTO reqDTO,
+	public Result<IPage<ProWorkLogic>> queryPageList(@Valid ProWorkLogicListReqDTO reqDTO,
 	 @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
 	 @RequestParam(name="pageSize", defaultValue="10") Integer pageSize
 	 ) {
 		Result<IPage<ProWorkLogic>> result = new Result<IPage<ProWorkLogic>>();
-		QueryWrapper<ProWorkLogic> queryWrapper = new QueryWrapper<>();
-		Page<ProWorkLogic> page = new Page<ProWorkLogic>(pageNo, pageSize);
 
-		if(StringUtils.isNotBlank(reqDTO.getBillcode())){
-			queryWrapper.eq("billcode", reqDTO.getBillcode());
-		}
-//		if(StringUtils.isNotBlank(reqDTO.get))
+		try {
 
-		queryWrapper.eq("pkOrg", reqDTO.getPkOrg());
-		queryWrapper.eq("del_flag", CommonConstant.STATUS_NORMAL.toString());
-		IPage<ProWorkLogic> pageList = proWorkLogicService.page(page, queryWrapper);
-		result.setSuccess(true);
-		result.setResult(pageList);
+			QueryWrapper<ProWorkLogic> queryWrapper = new QueryWrapper<>();
+			Page<ProWorkLogic> page = new Page<ProWorkLogic>(pageNo, pageSize);
+			if(StringUtils.isBlank(reqDTO.getType())){
+				throw new JeecgBootException("参数type不能为空");
+			}
+
+			if(StringUtils.isNotBlank(reqDTO.getBillcode())) {
+				queryWrapper.eq("billcode", reqDTO.getBillcode());
+			}
+			if(StringUtils.isNotBlank(reqDTO.getProName())) {
+				queryWrapper.eq("pro_name", reqDTO.getProName());
+			}
+			queryWrapper.eq("type", reqDTO.getType());
+			if(StringUtils.isNotBlank(reqDTO.getPkOrg())) {
+				queryWrapper.eq("pk_org", reqDTO.getPkOrg());
+			}
+
+			queryWrapper.eq("del_flag", CommonConstant.STATUS_NORMAL.toString());
+			IPage<ProWorkLogic> pageList = proWorkLogicService.page(page, queryWrapper);
+			result.setSuccess(true);
+			result.setResult(pageList);
+		}catch (Exception e){
+			e.printStackTrace();
+			log.info(e.getMessage());
+			result.error500("操作失败:" + e.getMessage());
+		}
 		return result;
 	}
-	
-	/**
-	  *   添加
-	 * @param proWorkLogic
-	 * @return
-	 */
+
+	 @ApiOperation(value = "新增接口", notes = "新增日志")
+	 @ApiImplicitParams({
+			 @ApiImplicitParam(name="pkOrg", value="组织",required=false, dataType="String"),
+			 @ApiImplicitParam(name="billcode", value="单据编号",required=false, dataType="String"),
+			 @ApiImplicitParam(name="proId", value="项目id",required=false, dataType="String"),
+			 @ApiImplicitParam(name="proName", value="项目名称",required=false, dataType="String"),
+			 @ApiImplicitParam(name="startDate", value="开始日期",required=false, dataType="String"),
+			 @ApiImplicitParam(name="endDate", value="结束日期",required=false, dataType="String"),
+			 @ApiImplicitParam(name="reporter", value="汇报人",required=false, dataType="String"),
+			 @ApiImplicitParam(name="milesId", value="里程碑id",required=false, dataType="String"),
+			 @ApiImplicitParam(name="milesName", value="里程碑(计划)",required=false, dataType="String"),
+			 @ApiImplicitParam(name="currentUser", value="填写人(当前用户)",required=false, dataType="String"),
+			 @ApiImplicitParam(name="logicId", value="日志id",required=true, dataType="String"),
+			 @ApiImplicitParam(name="proArchivesId", value="项目档案id",required=true, dataType="String"),
+			 @ApiImplicitParam(name="proArchivesMilestone", value="项目档案里程碑",required=true, dataType="String"),
+			 @ApiImplicitParam(name="content", value="工作内容",required=true, dataType="String"),
+			 @ApiImplicitParam(name="duration", value="工作时长",required=true, dataType="String"),
+	 })
 	@PostMapping(value = "/add")
-	public Result<ProWorkLogic> add(@RequestBody ProWorkLogic proWorkLogic, BindingResult bindingResult) {
+	public Result<ProWorkLogic> add(@RequestBody ProWorkLogicAddReqDTO reqDTO, BindingResult bindingResult) {
 		Result<ProWorkLogic> result = new Result<ProWorkLogic>();
 		try {
 			StringBuilder sb = new StringBuilder();
@@ -94,7 +122,7 @@ public class ProWorkLogicController {
 				result.error500(sb.toString());
 				return result;
 			}
-			proWorkLogicService.save(proWorkLogic);
+			proWorkLogicService.add(reqDTO);
 			result.success("添加成功!");
 		} catch (Exception e) {
 			e.printStackTrace();
@@ -103,21 +131,34 @@ public class ProWorkLogicController {
 		}
 		return result;
 	}
-	
-	/**
-	  *  编辑
-	 * @param proWorkLogic
-	 * @return
-	 */
+
+	 @ApiOperation(value = "编辑接口", notes = "编辑日志")
+	 @ApiImplicitParams({
+			 @ApiImplicitParam(name="id", value="id",required=true, dataType="String"),
+			 @ApiImplicitParam(name="pkOrg", value="组织",required=false, dataType="String"),
+			 @ApiImplicitParam(name="billcode", value="单据编号",required=true, dataType="String"),
+			 @ApiImplicitParam(name="proId", value="项目id",required=true, dataType="String"),
+			 @ApiImplicitParam(name="proName", value="项目名称",required=true, dataType="String"),
+			 @ApiImplicitParam(name="startDate", value="开始日期",required=true, dataType="String"),
+			 @ApiImplicitParam(name="endDate", value="结束日期",required=true, dataType="String"),
+			 @ApiImplicitParam(name="reporter", value="汇报人",required=true, dataType="String"),
+			 @ApiImplicitParam(name="milesId", value="里程碑id",required=true, dataType="String"),
+			 @ApiImplicitParam(name="milesName", value="里程碑(计划)",required=true, dataType="String"),
+			 @ApiImplicitParam(name="currentUser", value="填写人(当前用户)",required=true, dataType="String"),
+			 @ApiImplicitParam(name="logicId", value="日志id",required=true, dataType="String"),
+			 @ApiImplicitParam(name="proArchivesId", value="项目档案id",required=true, dataType="String"),
+			 @ApiImplicitParam(name="proArchivesMilestone", value="项目档案里程碑",required=true, dataType="String"),
+			 @ApiImplicitParam(name="content", value="工作内容",required=true, dataType="String"),
+			 @ApiImplicitParam(name="duration", value="工作时长",required=true, dataType="String"),
+	 })
 	@PutMapping(value = "/edit")
-	public Result<ProWorkLogic> edit(@RequestBody ProWorkLogic proWorkLogic) {
+	public Result<ProWorkLogic> edit(@RequestBody ProWorkLogicAddReqDTO reqDTO) {
 		Result<ProWorkLogic> result = new Result<ProWorkLogic>();
-		ProWorkLogic proWorkLogicEntity = proWorkLogicService.getById(proWorkLogic.getId());
+		ProWorkLogic proWorkLogicEntity = proWorkLogicService.getById(reqDTO.getId());
 		if(proWorkLogicEntity==null) {
 			result.error500("未找到对应实体");
 		}else {
-			boolean ok = proWorkLogicService.updateById(proWorkLogic);
-			//TODO 返回false说明什么?
+			boolean ok = proWorkLogicService.edit(reqDTO);
 			if(ok) {
 				result.success("修改成功!");
 			}
@@ -125,20 +166,19 @@ public class ProWorkLogicController {
 		
 		return result;
 	}
-	
-	/**
-	  *   通过id删除
-	 * @param id
-	 * @return
-	 */
+
+	 @ApiOperation(value = "通过id删除接口", notes = "通过id删除日志")
+	 @ApiImplicitParams({
+			 @ApiImplicitParam(name="id", value="id",required=false, dataType="String"),
+	 })
 	@DeleteMapping(value = "/delete")
-	public Result<ProWorkLogic> delete(@RequestParam(name="id",required=true) String id) {
+	public Result<ProWorkLogic> delete(@RequestBody ProdWorkLogicReqDTO reqDTO) {
 		Result<ProWorkLogic> result = new Result<ProWorkLogic>();
-		ProWorkLogic proWorkLogic = proWorkLogicService.getById(id);
+		ProWorkLogic proWorkLogic = proWorkLogicService.getById(reqDTO.getId());
 		if(proWorkLogic==null) {
 			result.error500("未找到对应实体");
 		}else {
-			boolean ok = proWorkLogicService.removeById(id);
+			boolean ok = proWorkLogicService.dropById(proWorkLogic);
 			if(ok) {
 				result.success("删除成功!");
 			}
@@ -147,32 +187,19 @@ public class ProWorkLogicController {
 		return result;
 	}
 	
-	/**
-	  *  批量删除
-	 * @param ids
-	 * @return
-	 */
-	@DeleteMapping(value = "/deleteBatch")
-	public Result<ProWorkLogic> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
-		Result<ProWorkLogic> result = new Result<ProWorkLogic>();
-		if(ids==null || "".equals(ids.trim())) {
-			result.error500("参数不识别!");
-		}else {
-			this.proWorkLogicService.removeByIds(Arrays.asList(ids.split(",")));
-			result.success("删除成功!");
-		}
-		return result;
-	}
-	
 	/**
 	  * 通过id查询
 	 * @param id
 	 * @return
 	 */
+	@ApiOperation(value = "通过id查询接口", notes = "通过id查询日志")
+	@ApiImplicitParams({
+			@ApiImplicitParam(name="id", value="id",required=false, dataType="String"),
+	})
 	@GetMapping(value = "/queryById")
-	public Result<ProWorkLogic> queryById(@RequestParam(name="id",required=true) String id) {
-		Result<ProWorkLogic> result = new Result<ProWorkLogic>();
-		ProWorkLogic proWorkLogic = proWorkLogicService.getById(id);
+	public Result<ProWorkLogicRespDTO> queryById(@RequestParam(name="id",required=true) String id) {
+		Result<ProWorkLogicRespDTO> result = new Result<ProWorkLogicRespDTO>();
+		ProWorkLogicRespDTO proWorkLogic = proWorkLogicService.queryById(id);
 		if(proWorkLogic==null) {
 			result.error500("未找到对应实体");
 		}else {
@@ -181,74 +208,4 @@ public class ProWorkLogicController {
 		}
 		return result;
 	}
-
-  /**
-      * 导出excel
-   *
-   * @param request
-   * @param response
-   */
-  @RequestMapping(value = "/exportXls")
-  public ModelAndView exportXls(HttpServletRequest request, HttpServletResponse response) {
-      // Step.1 组装查询条件
-      QueryWrapper<ProWorkLogic> queryWrapper = null;
-      try {
-          String paramsStr = request.getParameter("paramsStr");
-          if (oConvertUtils.isNotEmpty(paramsStr)) {
-              String deString = URLDecoder.decode(paramsStr, "UTF-8");
-              ProWorkLogic proWorkLogic = JSON.parseObject(deString, ProWorkLogic.class);
-              queryWrapper = QueryGenerator.initQueryWrapper(proWorkLogic, request.getParameterMap());
-          }
-      } catch (UnsupportedEncodingException e) {
-          e.printStackTrace();
-      }
-
-      //Step.2 AutoPoi 导出Excel
-      ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
-      List<ProWorkLogic> pageList = proWorkLogicService.list(queryWrapper);
-      //导出文件名称
-      mv.addObject(NormalExcelConstants.FILE_NAME, "日志(实施,开发,服务)列表");
-      mv.addObject(NormalExcelConstants.CLASS, ProWorkLogic.class);
-      mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("日志(实施,开发,服务)列表数据", "导出人:Jeecg", "导出信息"));
-      mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
-      return mv;
-  }
-
-  /**
-      * 通过excel导入数据
-   *
-   * @param request
-   * @param response
-   * @return
-   */
-  @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
-  public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
-      MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
-      Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
-      for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
-          MultipartFile file = entity.getValue();// 获取上传文件对象
-          ImportParams params = new ImportParams();
-          params.setTitleRows(2);
-          params.setHeadRows(1);
-          params.setNeedSave(true);
-          try {
-              List<ProWorkLogic> listProWorkLogics = ExcelImportUtil.importExcel(file.getInputStream(), ProWorkLogic.class, params);
-              for (ProWorkLogic proWorkLogicExcel : listProWorkLogics) {
-                  proWorkLogicService.save(proWorkLogicExcel);
-              }
-              return Result.ok("文件导入成功!数据行数:" + listProWorkLogics.size());
-          } catch (Exception e) {
-              log.error(e.getMessage());
-              return Result.error("文件导入失败!");
-          } finally {
-              try {
-                  file.getInputStream().close();
-              } catch (IOException e) {
-                  e.printStackTrace();
-              }
-          }
-      }
-      return Result.ok("文件导入失败!");
-  }
-
 }

+ 298 - 0
src/main/java/org/jeecg/modules/prowork/controller/ProWorkMilestoneController.java

@@ -0,0 +1,298 @@
+package org.jeecg.modules.prowork.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.prowork.entity.proWorkMilestone;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.modules.prowork.service.ProWorkMilestoneService;
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+
+ /**
+ * @Title: Controller
+ * @Description: 项目工作--里程碑确认单
+ * @author: jeecg-boot
+ * @date2021-03-03
+ * @version: V1.0
+ */
+@Api("里程碑确认单接口")
+@RestController
+@RequestMapping("/prowork/proWorkMilestone")
+@Slf4j
+ class ProWorkMilestoneController {
+	@Autowired
+	private ProWorkMilestoneService proWorkMilestoneService;
+
+
+	 @ApiOperation(value = "分页查询接口", notes = "里程碑确认单分页查询")
+	 @ApiImplicitParams({
+			 @ApiImplicitParam(name="pkOrg", value="组织",required=false, dataType="String"),
+			 @ApiImplicitParam(name="type", value="1.开发 2.实施 3.服务",required=true, dataType="String"),
+	 })
+	@GetMapping(value = "/list")
+	public Result<IPage<proWorkMilestone>> queryPageList(@Valid proWorkMilestone proWorkMilestone,
+	  @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+	  @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+	  HttpServletRequest req) {
+		Result<IPage<proWorkMilestone>> result = new Result<IPage<proWorkMilestone>>();
+		QueryWrapper<proWorkMilestone> queryWrapper = QueryGenerator.initQueryWrapper(proWorkMilestone, req.getParameterMap());
+		queryWrapper.orderByDesc("create_time");
+		Page<proWorkMilestone> page = new Page<proWorkMilestone>(pageNo, pageSize);
+		IPage<proWorkMilestone> pageList = proWorkMilestoneService.page(page, queryWrapper);
+		result.setSuccess(true);
+		result.setResult(pageList);
+		return result;
+	}
+
+	 @ApiOperation(value = "新增", notes = "里程碑确认单新增")
+	 @ApiImplicitParams({
+			 @ApiImplicitParam(name="pkOrg", value="组织",required=false, dataType="String"),
+			 @ApiImplicitParam(name="billcode", value="单据编号",required=true, dataType="String"),
+			 @ApiImplicitParam(name="type", value="1.开发 2.实施 3.服务",required=true, dataType="String"),
+			 @ApiImplicitParam(name="proId", value="项目档案id",required=true, dataType="String"),
+			 @ApiImplicitParam(name="proCode", value="项目档案编码",required=true, dataType="String"),
+			 @ApiImplicitParam(name="proName", value="项目档案名称",required=true, dataType="String"),
+			 @ApiImplicitParam(name="cusId", value="客户档案id",required=true, dataType="String"),
+			 @ApiImplicitParam(name="cusCode", value="客户编码",required=true, dataType="String"),
+			 @ApiImplicitParam(name="mileId", value="里程碑id",required=true, dataType="String"),
+			 @ApiImplicitParam(name="mileName", value="里程碑(计划)",required=true, dataType="String"),
+			 @ApiImplicitParam(name="mileId", value="里程碑确认(0,未确认 1,确认)",required=true, dataType="String"),
+			 @ApiImplicitParam(name="mileId", value="里程碑id",required=true, dataType="String"),
+			 @ApiImplicitParam(name="mileId", value="里程碑id",required=true, dataType="String"),
+
+			 //	@ApiModelProperty("项目档案")
+			 //	private Integer cusId;
+			 //	@ApiModelProperty("客户编码")
+			 //	private String cusCode;
+			 //	@ApiModelProperty("里程碑id")
+			 //	private String mileId;
+			 //	@ApiModelProperty("里程碑(计划)")
+			 //	private String mileName;
+			 //	@ApiModelProperty("里程碑确认(0,未确认 1,确认)")
+			 //	private Integer mileConfirm;
+			 //	@ApiModelProperty("确认时间")
+			 //	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+			 //    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+			 //	private Date confirmTime;
+			 //	@ApiModelProperty("工作内容")
+			 //	private String content;
+			 //	@ApiModelProperty("工作时长")
+			 //	private Double duration;
+			 //	@ApiModelProperty("文件id")
+			 //	private String updateFileId;
+			 //	@ApiModelProperty("填写人(当前用户)")
+			 //	private String currentUser;
+			 //	@ApiModelProperty("创建时间")
+			 //	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+			 //    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+			 //	private Date createTime;
+			 //	@ApiModelProperty("创建人")
+			 //	private String createBy;
+			 //	@ApiModelProperty("修改时间")
+			 //	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+			 //    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+			 //	private Date updateTime;
+			 //	@ApiModelProperty("修改人")
+			 //	private String updateBy;
+			 //	@ApiModelProperty("删除状态(0,正常,1已删除)")
+			 //	private String delFlag;
+			 //	@ApiModelProperty("组织")
+			 //	private String pkOrg;
+	 })
+	@PostMapping(value = "/add")
+	public Result<proWorkMilestone> add(@RequestBody proWorkMilestone proWorkMilestone, BindingResult bindingResult) {
+		Result<proWorkMilestone> result = new Result<proWorkMilestone>();
+		try {
+			StringBuilder sb = new StringBuilder();
+			if (bindingResult.hasErrors()){
+				//记录错误信息
+				bindingResult.getAllErrors().stream().forEach(error -> sb.append(error.getDefaultMessage() + "<br/>"));
+				result.error500(sb.toString());
+				return result;
+			}
+			proWorkMilestoneService.save(proWorkMilestone);
+			result.success("添加成功!");
+		} catch (Exception e) {
+			e.printStackTrace();
+			log.info(e.getMessage());
+			result.error500("操作失败");
+		}
+		return result;
+	}
+	
+	/**
+	  *  编辑
+	 * @param proWorkMilestone
+	 * @return
+	 */
+	@PutMapping(value = "/edit")
+	public Result<proWorkMilestone> edit(@RequestBody proWorkMilestone proWorkMilestone) {
+		Result<proWorkMilestone> result = new Result<proWorkMilestone>();
+		proWorkMilestone proWorkMilestoneEntity = proWorkMilestoneService.getById(proWorkMilestone.getId());
+		if(proWorkMilestoneEntity==null) {
+			result.error500("未找到对应实体");
+		}else {
+			boolean ok = proWorkMilestoneService.updateById(proWorkMilestone);
+			//TODO 返回false说明什么?
+			if(ok) {
+				result.success("修改成功!");
+			}
+		}
+		
+		return result;
+	}
+	
+	/**
+	  *   通过id删除
+	 * @param id
+	 * @return
+	 */
+	@DeleteMapping(value = "/delete")
+	public Result<proWorkMilestone> delete(@RequestParam(name="id",required=true) String id) {
+		Result<proWorkMilestone> result = new Result<proWorkMilestone>();
+		proWorkMilestone proWorkMilestone = proWorkMilestoneService.getById(id);
+		if(proWorkMilestone==null) {
+			result.error500("未找到对应实体");
+		}else {
+			boolean ok = proWorkMilestoneService.removeById(id);
+			if(ok) {
+				result.success("删除成功!");
+			}
+		}
+		
+		return result;
+	}
+	
+	/**
+	  *  批量删除
+	 * @param ids
+	 * @return
+	 */
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<proWorkMilestone> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		Result<proWorkMilestone> result = new Result<proWorkMilestone>();
+		if(ids==null || "".equals(ids.trim())) {
+			result.error500("参数不识别!");
+		}else {
+			this.proWorkMilestoneService.removeByIds(Arrays.asList(ids.split(",")));
+			result.success("删除成功!");
+		}
+		return result;
+	}
+	
+	/**
+	  * 通过id查询
+	 * @param id
+	 * @return
+	 */
+	@GetMapping(value = "/queryById")
+	public Result<proWorkMilestone> queryById(@RequestParam(name="id",required=true) String id) {
+		Result<proWorkMilestone> result = new Result<proWorkMilestone>();
+		proWorkMilestone proWorkMilestone = proWorkMilestoneService.getById(id);
+		if(proWorkMilestone==null) {
+			result.error500("未找到对应实体");
+		}else {
+			result.setResult(proWorkMilestone);
+			result.setSuccess(true);
+		}
+		return result;
+	}
+
+  /**
+      * 导出excel
+   *
+   * @param request
+   * @param response
+   */
+  @RequestMapping(value = "/exportXls")
+  public ModelAndView exportXls(HttpServletRequest request, HttpServletResponse response) {
+      // Step.1 组装查询条件
+      QueryWrapper<proWorkMilestone> queryWrapper = null;
+      try {
+          String paramsStr = request.getParameter("paramsStr");
+          if (oConvertUtils.isNotEmpty(paramsStr)) {
+              String deString = URLDecoder.decode(paramsStr, "UTF-8");
+              proWorkMilestone proWorkMilestone = JSON.parseObject(deString, proWorkMilestone.class);
+              queryWrapper = QueryGenerator.initQueryWrapper(proWorkMilestone, request.getParameterMap());
+          }
+      } catch (UnsupportedEncodingException e) {
+          e.printStackTrace();
+      }
+
+      //Step.2 AutoPoi 导出Excel
+      ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
+      List<proWorkMilestone> pageList = proWorkMilestoneService.list(queryWrapper);
+      //导出文件名称
+      mv.addObject(NormalExcelConstants.FILE_NAME, "项目工作--里程碑确认单列表");
+      mv.addObject(NormalExcelConstants.CLASS, proWorkMilestone.class);
+      mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("项目工作--里程碑确认单列表数据", "导出人:Jeecg", "导出信息"));
+      mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
+      return mv;
+  }
+
+  /**
+      * 通过excel导入数据
+   *
+   * @param request
+   * @param response
+   * @return
+   */
+  @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+  public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+      MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+      Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
+      for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
+          MultipartFile file = entity.getValue();// 获取上传文件对象
+          ImportParams params = new ImportParams();
+          params.setTitleRows(2);
+          params.setHeadRows(1);
+          params.setNeedSave(true);
+          try {
+              List<proWorkMilestone> listproWorkMilestones = ExcelImportUtil.importExcel(file.getInputStream(), proWorkMilestone.class, params);
+              for (proWorkMilestone proWorkMilestoneExcel : listproWorkMilestones) {
+                  proWorkMilestoneService.save(proWorkMilestoneExcel);
+              }
+              return Result.ok("文件导入成功!数据行数:" + listproWorkMilestones.size());
+          } catch (Exception e) {
+              log.error(e.getMessage());
+              return Result.error("文件导入失败!");
+          } finally {
+              try {
+                  file.getInputStream().close();
+              } catch (IOException e) {
+                  e.printStackTrace();
+              }
+          }
+      }
+      return Result.ok("文件导入失败!");
+  }
+
+}

+ 21 - 18
src/main/java/org/jeecg/modules/prowork/entity/ProWorkLogic.java

@@ -3,11 +3,13 @@ package org.jeecg.modules.prowork.entity;
 import java.io.Serializable;
 import java.util.Date;
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import org.jeecg.common.dto.prowork.ProWorkLogicAddReqDTO;
 import org.springframework.format.annotation.DateTimeFormat;
 
 /**
@@ -25,6 +27,8 @@ public class ProWorkLogic implements Serializable {
 	private String id;
 	@ApiModelProperty("单据编号")
 	private String billcode;
+    @ApiModelProperty("1.开发 2.实施 3.服务")
+    private String type;
 	@ApiModelProperty("项目id")
 	private String proId;
 	@ApiModelProperty("项目名称")
@@ -37,11 +41,14 @@ public class ProWorkLogic implements Serializable {
 	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
 	private Date endDate;
+	@ApiModelProperty("汇报人")
+	private String reporter;
 	@ApiModelProperty("里程碑id")
 	private String milesId;
 	@ApiModelProperty("里程碑(计划)")
 	private String milesName;
 	@ApiModelProperty("填写人(当前用户)")
+    @TableField(value = "`current_user`")
 	private String currentUser;
 	@ApiModelProperty("创建时间")
 	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@@ -63,23 +70,19 @@ public class ProWorkLogic implements Serializable {
 	public ProWorkLogic() {
 	}
 
-	public ProWorkLogic(String id, String billcode, String proId, String proName, Date startDate, Date endDate,
-						String milesId, String milesName, String currentUser, Date createTime, String createBy, Date updateTime,
-						String updateBy, String delFlag, String pkOrg) {
-		this.id = id;
-		this.billcode = billcode;
-		this.proId = proId;
-		this.proName = proName;
-		this.startDate = startDate;
-		this.endDate = endDate;
-		this.milesId = milesId;
-		this.milesName = milesName;
-		this.currentUser = currentUser;
-		this.createTime = createTime;
-		this.createBy = createBy;
-		this.updateTime = updateTime;
-		this.updateBy = updateBy;
-		this.delFlag = delFlag;
-		this.pkOrg = pkOrg;
+	public ProWorkLogic(ProWorkLogicAddReqDTO reqDTO) {
+		this.id = reqDTO.getId();
+		this.billcode = reqDTO.getBillcode();
+		this.type = reqDTO.getType();
+		this.proId = reqDTO.getProId();
+		this.proName = reqDTO.getProName();
+		this.startDate = reqDTO.getStartDate();
+		this.endDate = reqDTO.getEndDate();
+		this.reporter = reqDTO.getReporter();
+		this.milesId = reqDTO.getMilesId();
+		this.milesName = reqDTO.getMilesName();
+		this.currentUser = reqDTO.getCurrentUser();
+		this.delFlag = "0";
+		this.pkOrg = reqDTO.getPkOrg();
 	}
 }

+ 16 - 17
src/main/java/org/jeecg/modules/prowork/entity/proWorkLogicContent.java

@@ -10,6 +10,7 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import org.jeecg.common.dto.prowork.ProWorkLogicContentAddReqDTO;
 import org.springframework.format.annotation.DateTimeFormat;
 import org.jeecgframework.poi.excel.annotation.Excel;
 
@@ -22,9 +23,9 @@ import org.jeecgframework.poi.excel.annotation.Excel;
 @Data
 @ApiModel(value = "日志详情(实施,开发,服务)")
 @TableName("pro_work_logic_content")
-public class proWorkLogicContent implements Serializable {
-    private static final long serialVersionUID = 1L;
-    @ApiModelProperty("id")
+public class ProWorkLogicContent implements Serializable {
+	private static final long serialVersionUID = -8092464265175600218L;
+	@ApiModelProperty("id")
 	@TableId(type = IdType.UUID)
 	private String id;
 	@ApiModelProperty("日志id")
@@ -54,22 +55,20 @@ public class proWorkLogicContent implements Serializable {
 	@ApiModelProperty("组织")
 	private String pkOrg;
 
-	public proWorkLogicContent() {
+	public ProWorkLogicContent() {
 	}
 
-	public proWorkLogicContent(String id, String logicId, String proArchivesId, String proArchivesMilestone, String content,
-	   Double duration, Date createTime, String createBy, Date updateTime, String updateBy, String delFlag, String pkOrg) {
-		this.id = id;
-		this.logicId = logicId;
-		this.proArchivesId = proArchivesId;
-		this.proArchivesMilestone = proArchivesMilestone;
-		this.content = content;
-		this.duration = duration;
-		this.createTime = createTime;
-		this.createBy = createBy;
-		this.updateTime = updateTime;
-		this.updateBy = updateBy;
+	public ProWorkLogicContent(ProWorkLogicContentAddReqDTO detail) {
+		this.logicId = detail.getLogicId();
+		this.proArchivesId = detail.getProArchivesId();
+		this.proArchivesMilestone = detail.getProArchivesMilestone();
+		this.content = detail.getContent();
+		this.duration = detail.getDuration();
+		this.delFlag = "0";
+		this.pkOrg = detail.getPkOrg();
+	}
+
+	public ProWorkLogicContent(String delFlag){
 		this.delFlag = delFlag;
-		this.pkOrg = pkOrg;
 	}
 }

+ 101 - 0
src/main/java/org/jeecg/modules/prowork/entity/proWorkMilestone.java

@@ -0,0 +1,101 @@
+package org.jeecg.modules.prowork.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import javax.validation.constraints.NotEmpty;
+
+@ApiModel("里程碑确认单")
+@Data
+@TableName("pro_work_milestone")
+public class proWorkMilestone implements Serializable {
+	private static final long serialVersionUID = 3883624886849611941L;
+	@ApiModelProperty("id")
+	@TableId(type = IdType.UUID)
+	private String id;
+	@ApiModelProperty("单据编号")
+	private String billcode;
+	@ApiModelProperty("1.开发 2.实施 3.服务")
+	@NotEmpty(message = "参数type不能为空")
+	private String type;
+	@ApiModelProperty("项目档案id")
+	private String proId;
+	@ApiModelProperty("项目档案编码")
+	private String proCode;
+	@ApiModelProperty("项目档案名称")
+	private String proName;
+	@ApiModelProperty("客户档案id")
+	private Integer cusId;
+	@ApiModelProperty("客户编码")
+	private String cusCode;
+	@ApiModelProperty("里程碑id")
+	private String mileId;
+	@ApiModelProperty("里程碑(计划)")
+	private String mileName;
+	@ApiModelProperty("里程碑确认(0,未确认 1,确认)")
+	private Integer mileConfirm;
+	@ApiModelProperty("确认时间")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+	private Date confirmTime;
+	@ApiModelProperty("工作内容")
+	private String content;
+	@ApiModelProperty("工作时长")
+	private Double duration;
+	@ApiModelProperty("文件id")
+	private String updateFileId;
+	@ApiModelProperty("填写人(当前用户)")
+	private String currentUser;
+	@ApiModelProperty("创建时间")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+	private Date createTime;
+	@ApiModelProperty("创建人")
+	private String createBy;
+	@ApiModelProperty("修改时间")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+	private Date updateTime;
+	@ApiModelProperty("修改人")
+	private String updateBy;
+	@ApiModelProperty("删除状态(0,正常,1已删除)")
+	private String delFlag;
+	@ApiModelProperty("组织")
+	private String pkOrg;
+
+	public proWorkMilestone() {
+	}
+
+	public proWorkMilestone(String id, String billcode, String proId, String proCode, String proName, Integer cusId, String cusCode, String mileId, String mileName, Integer mileConfirm, Date confirmTime, String content, Double duration, String updateFileId, String currentUser, Date createTime, String createBy, Date updateTime, String updateBy, String delFlag, String pkOrg) {
+		this.id = id;
+		this.billcode = billcode;
+		this.type = type;
+		this.proId = proId;
+		this.proCode = proCode;
+		this.proName = proName;
+		this.cusId = cusId;
+		this.cusCode = cusCode;
+		this.mileId = mileId;
+		this.mileName = mileName;
+		this.mileConfirm = mileConfirm;
+		this.confirmTime = confirmTime;
+		this.content = content;
+		this.duration = duration;
+		this.updateFileId = updateFileId;
+		this.currentUser = currentUser;
+		this.createTime = createTime;
+		this.createBy = createBy;
+		this.updateTime = updateTime;
+		this.updateBy = updateBy;
+		this.delFlag = delFlag;
+		this.pkOrg = pkOrg;
+	}
+}

+ 0 - 3
src/main/java/org/jeecg/modules/prowork/mapper/ProWorkLogicMapper.java

@@ -1,9 +1,6 @@
 package org.jeecg.modules.prowork.mapper;
 
-import java.util.List;
-
 import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Param;
 import org.jeecg.modules.prowork.entity.ProWorkLogic;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 

+ 14 - 0
src/main/java/org/jeecg/modules/prowork/mapper/ProWorkMilestoneMapper.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.prowork.mapper;
+
+import org.jeecg.modules.prowork.entity.proWorkMilestone;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 项目工作--里程碑确认单
+ * @author: jeecg-boot
+ * @date2021-03-03
+ * @version: V1.0
+ */
+public interface ProWorkMilestoneMapper extends BaseMapper<proWorkMilestone> {
+
+}

+ 3 - 5
src/main/java/org/jeecg/modules/prowork/mapper/proWorkLogicContentMapper.java

@@ -1,9 +1,6 @@
 package org.jeecg.modules.prowork.mapper;
 
-import java.util.List;
-
-import org.apache.ibatis.annotations.Param;
-import org.jeecg.modules.prowork.entity.proWorkLogicContent;
+import org.jeecg.modules.prowork.entity.ProWorkLogicContent;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
 /**
@@ -12,6 +9,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @date2021-03-02
  * @version: V1.0
  */
-public interface proWorkLogicContentMapper extends BaseMapper<proWorkLogicContent> {
+
+public interface ProWorkLogicContentMapper extends BaseMapper<ProWorkLogicContent> {
 
 }

+ 1 - 1
src/main/java/org/jeecg/modules/prowork/mapper/xml/ProWorkLogicContentMapper.xml

@@ -1,5 +1,5 @@
 <?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="org.jeecg.modules.prowork.mapper.proWorkLogicContentMapper">
+<mapper namespace="org.jeecg.modules.prowork.mapper.ProWorkLogicContentMapper">
 
 </mapper>

+ 5 - 0
src/main/java/org/jeecg/modules/prowork/mapper/xml/ProWorkMilestoneMapper.xml

@@ -0,0 +1,5 @@
+<?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="org.jeecg.modules.prowork.mapper.ProWorkMilestoneMapper">
+
+</mapper>

+ 18 - 1
src/main/java/org/jeecg/modules/prowork/service/ProWorkLogicService.java

@@ -1,5 +1,7 @@
 package org.jeecg.modules.prowork.service;
 
+import org.jeecg.common.dto.prowork.ProWorkLogicAddReqDTO;
+import org.jeecg.common.dto.prowork.ProWorkLogicRespDTO;
 import org.jeecg.modules.prowork.entity.ProWorkLogic;
 import com.baomidou.mybatisplus.extension.service.IService;
 
@@ -10,5 +12,20 @@ import com.baomidou.mybatisplus.extension.service.IService;
  * @version: V1.0
  */
 public interface ProWorkLogicService extends IService<ProWorkLogic> {
-
+    /**
+     * @desc 新增日志(实施,开发,服务)
+     */
+    void add(ProWorkLogicAddReqDTO reqDTO) throws Exception;
+    /**
+     * @desc 编辑日志(实施,开发,服务)
+     */
+    boolean edit(ProWorkLogicAddReqDTO reqDTO);
+    /**
+     * @desc 删除日志(实施,开发,服务)
+     */
+    boolean dropById(ProWorkLogic proWorkLogic);
+    /**
+     * @desc 通过id查询日志(实施,开发,服务)
+     */
+    ProWorkLogicRespDTO queryById(String id);
 }

+ 14 - 0
src/main/java/org/jeecg/modules/prowork/service/ProWorkMilestoneService.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.prowork.service;
+
+import org.jeecg.modules.prowork.entity.proWorkMilestone;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 项目工作--里程碑确认单
+ * @author: jeecg-boot
+ * @date2021-03-03
+ * @version: V1.0
+ */
+public interface ProWorkMilestoneService extends IService<proWorkMilestone> {
+
+}

+ 105 - 0
src/main/java/org/jeecg/modules/prowork/service/impl/ProWorkLogicServiceImpl.java

@@ -1,10 +1,26 @@
 package org.jeecg.modules.prowork.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.google.common.collect.Lists;
+import io.swagger.annotations.ApiModel;
+import org.jeecg.common.dto.prowork.ProWorkLogicAddReqDTO;
+import org.jeecg.common.dto.prowork.ProWorkLogicContentAddReqDTO;
+import org.jeecg.common.dto.prowork.ProWorkLogicContentListRespDTO;
+import org.jeecg.common.dto.prowork.ProWorkLogicRespDTO;
+import org.jeecg.common.exception.JeecgBootException;
 import org.jeecg.modules.prowork.entity.ProWorkLogic;
+import org.jeecg.modules.prowork.entity.ProWorkLogicContent;
 import org.jeecg.modules.prowork.mapper.ProWorkLogicMapper;
+import org.jeecg.modules.prowork.service.ProWorkLogicContentService;
 import org.jeecg.modules.prowork.service.ProWorkLogicService;
+import org.jeecg.modules.system.service.ISysSerialPatternService;
+import org.jeecg.modules.system.vo.CallResult;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
 
 /**
  * @Description: 日志(实施,开发,服务)
@@ -14,5 +30,94 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  */
 @Service
 public class ProWorkLogicServiceImpl extends ServiceImpl<ProWorkLogicMapper, ProWorkLogic> implements ProWorkLogicService {
+    @Autowired
+    private ProWorkLogicContentService proWorkLogicContentService;
+    @Autowired
+    private ISysSerialPatternService sysSerialPatternService;
+
+    /**
+     * @desc 新增
+     */
+    @Override
+    public void add(ProWorkLogicAddReqDTO reqDTO) throws Exception {
+        if(CollectionUtils.isEmpty(reqDTO.getDetailList())){
+            throw new JeecgBootException("子表不能为空");
+        }
+        ProWorkLogic proWorkLogic = new ProWorkLogic(reqDTO);
+        // 设置编码
+        CallResult<String> nextSerial = sysSerialPatternService.getNextSerial(proWorkLogic, "pro_work_logic", "billcode", true);
+        if(!nextSerial.isSucceed()){
+            throw new RuntimeException("获取编号失败");
+        }
+        proWorkLogic.setBillcode(nextSerial.getContent());
+        save(proWorkLogic);
+        //添加子表
+        for(ProWorkLogicContentAddReqDTO detail : reqDTO.getDetailList()){
+            detail.setLogicId(proWorkLogic.getId());
+            ProWorkLogicContent proWorkLogicContent =  new ProWorkLogicContent(detail);
+            proWorkLogicContentService.save(proWorkLogicContent);
+        }
+    }
+
+    /**
+     * @desc 编辑
+     */
+    @Override
+    public boolean edit(ProWorkLogicAddReqDTO reqDTO) {
+        ProWorkLogic proWorkLogic = new ProWorkLogic(reqDTO);
+        updateById(proWorkLogic);
+        //删除子表
+        deletChildren(reqDTO.getId());
+        //添加子表
+        for(ProWorkLogicContentAddReqDTO detail : reqDTO.getDetailList()){
+            detail.setLogicId(proWorkLogic.getId());
+            ProWorkLogicContent proWorkLogicContent =  new ProWorkLogicContent(detail);
+            proWorkLogicContentService.save(proWorkLogicContent);
+        }
+        return true;
+    }
+
+    /**
+     * @desc 通过id删除
+     */
+    @Override
+    public boolean dropById(ProWorkLogic proWorkLogic) {
+        proWorkLogic.setDelFlag("1");
+        updateById(proWorkLogic);
+        //删除子表
+        deletChildren(proWorkLogic.getId());
+        return true;
+    }
+
+    /**
+     * @desc 通过id查询日志(实施,开发,服务)
+     */
+    @Override
+    public ProWorkLogicRespDTO queryById(String id) {
+        ProWorkLogic proWorkLogic = getById(id);
+        ProWorkLogicRespDTO respDTO = new ProWorkLogicRespDTO(proWorkLogic);
+        //查询子表
+        QueryWrapper<ProWorkLogicContent> queryWrapper = new QueryWrapper();
+        queryWrapper.eq("del_flag", "0");
+        queryWrapper.eq("logic_id", id);
+        List<ProWorkLogicContent> list = proWorkLogicContentService.list(queryWrapper);
+        List<ProWorkLogicContentListRespDTO> contentListRespDTOS = Lists.newArrayList();
+        for(ProWorkLogicContent proWorkLogicContent : list){
+            contentListRespDTOS.add(new ProWorkLogicContentListRespDTO(proWorkLogicContent));
+        }
+        respDTO.setDetailList(contentListRespDTOS);
+        return respDTO;
+    }
+
+
 
+    /**
+     * @desc 删除子表
+     */
+    private void deletChildren(String id) {
+        QueryWrapper<ProWorkLogicContent> queryWrapper = new QueryWrapper();
+        queryWrapper.eq("del_flag", "0");
+        queryWrapper.eq("logic_id", id);
+        proWorkLogicContentService.update(new ProWorkLogicContent("1"), queryWrapper);
+    }
 }

+ 18 - 0
src/main/java/org/jeecg/modules/prowork/service/impl/ProWorkMilestoneServiceImpl.java

@@ -0,0 +1,18 @@
+package org.jeecg.modules.prowork.service.impl;
+
+import org.jeecg.modules.prowork.entity.proWorkMilestone;
+import org.jeecg.modules.prowork.mapper.ProWorkMilestoneMapper;
+import org.jeecg.modules.prowork.service.ProWorkMilestoneService;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 项目工作--里程碑确认单
+ * @author: jeecg-boot
+ * @date2021-03-03
+ * @version: V1.0
+ */
+@Service
+public class ProWorkMilestoneServiceImpl extends ServiceImpl<ProWorkMilestoneMapper, proWorkMilestone> implements ProWorkMilestoneService {
+
+}

+ 4 - 4
src/main/java/org/jeecg/modules/prowork/service/impl/proWorkLogicContentServiceImpl.java

@@ -1,8 +1,8 @@
 package org.jeecg.modules.prowork.service.impl;
 
-import org.jeecg.modules.prowork.entity.proWorkLogicContent;
-import org.jeecg.modules.prowork.mapper.proWorkLogicContentMapper;
-import org.jeecg.modules.prowork.service.proWorkLogicContentService;
+import org.jeecg.modules.prowork.entity.ProWorkLogicContent;
+import org.jeecg.modules.prowork.mapper.ProWorkLogicContentMapper;
+import org.jeecg.modules.prowork.service.ProWorkLogicContentService;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 
@@ -13,5 +13,5 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  * @version: V1.0
  */
 @Service
-public class proWorkLogicContentServiceImpl extends ServiceImpl<proWorkLogicContentMapper, proWorkLogicContent> implements proWorkLogicContentService {
+public class ProWorkLogicContentServiceImpl extends ServiceImpl<ProWorkLogicContentMapper, ProWorkLogicContent> implements ProWorkLogicContentService {
 }

+ 2 - 2
src/main/java/org/jeecg/modules/prowork/service/proWorkLogicContentService.java

@@ -1,6 +1,6 @@
 package org.jeecg.modules.prowork.service;
 
-import org.jeecg.modules.prowork.entity.proWorkLogicContent;
+import org.jeecg.modules.prowork.entity.ProWorkLogicContent;
 import com.baomidou.mybatisplus.extension.service.IService;
 
 /**
@@ -9,6 +9,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
  * @date2021-03-02
  * @version: V1.0
  */
-public interface proWorkLogicContentService extends IService<proWorkLogicContent> {
+public interface ProWorkLogicContentService extends IService<ProWorkLogicContent> {
 
 }