ezhizao_zx 1 rok pred
rodič
commit
75aea065e5
25 zmenil súbory, kde vykonal 830 pridanie a 88 odobranie
  1. 1 1
      src/main/java/cn/ezhizao/framework/web/domain/BaseEntity.java
  2. 157 0
      src/main/java/cn/ezhizao/project/business/collection/domain/BizCollection.java
  3. 29 0
      src/main/java/cn/ezhizao/project/business/collection/mapper/BizCollectionMapper.java
  4. 30 0
      src/main/java/cn/ezhizao/project/business/collection/service/IBizCollectionService.java
  5. 43 0
      src/main/java/cn/ezhizao/project/business/collection/service/impl/BizCollectionServiceImpl.java
  6. 41 3
      src/main/java/cn/ezhizao/project/business/company/util/QiChaChaRequest.java
  7. 31 4
      src/main/java/cn/ezhizao/project/business/order/domain/BizArchiveInput.java
  8. 2 0
      src/main/java/cn/ezhizao/project/business/order/mapper/BizArchiveInputDetailMapper.java
  9. 2 0
      src/main/java/cn/ezhizao/project/business/order/mapper/BizArchiveInputDetailProcessMapper.java
  10. 2 0
      src/main/java/cn/ezhizao/project/business/order/service/IBizArchiveInputDetailProcessService.java
  11. 4 0
      src/main/java/cn/ezhizao/project/business/order/service/IBizArchiveInputDetailService.java
  12. 1 0
      src/main/java/cn/ezhizao/project/business/order/service/impl/BizArchiveInputDetailProcessServiceImpl.java
  13. 11 1
      src/main/java/cn/ezhizao/project/business/order/service/impl/BizArchiveInputDetailServiceImpl.java
  14. 5 0
      src/main/java/cn/ezhizao/project/business/order/service/impl/BizArchiveInputServiceImpl.java
  15. 173 18
      src/main/java/cn/ezhizao/project/business/workOrder/controller/BizWorkOrderController.java
  16. 89 38
      src/main/java/cn/ezhizao/project/business/workOrder/domain/BizWorkOrder.java
  17. 17 0
      src/main/java/cn/ezhizao/project/business/workOrder/domain/BizWorkOrderDetail.java
  18. 8 0
      src/main/java/cn/ezhizao/project/business/workOrder/mapper/BizWorkOrderMapper.java
  19. 10 0
      src/main/java/cn/ezhizao/project/business/workOrder/service/IBizWorkOrderService.java
  20. 5 0
      src/main/java/cn/ezhizao/project/business/workOrder/service/impl/BizWorkOrderServiceImpl.java
  21. 9 0
      src/main/resources/mybatis/business/BizArchiveInputDetailMapper.xml
  22. 63 23
      src/main/resources/mybatis/business/BizArchiveInputMapper.xml
  23. 51 0
      src/main/resources/mybatis/business/BizCollectionMapper.xml
  24. 21 0
      src/main/resources/mybatis/business/BizWorkOrderDetailMapper.xml
  25. 25 0
      src/main/resources/mybatis/business/BizWorkOrderMapper.xml

+ 1 - 1
src/main/java/cn/ezhizao/framework/web/domain/BaseEntity.java

@@ -40,7 +40,7 @@ public class BaseEntity implements Serializable
     /** 创建时间 */
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @TableField(value="create_time",fill= FieldFill.INSERT)
-    @Excel(name = "发单日期", width = 30, dateFormat = "yyyy-MM-dd",sort = 99)
+    @Excel(name = "创建日期", width = 30, dateFormat = "yyyy-MM-dd",sort = 99)
     private Date createTime;
 
     /** 更新者 */

+ 157 - 0
src/main/java/cn/ezhizao/project/business/collection/domain/BizCollection.java

@@ -0,0 +1,157 @@
+package cn.ezhizao.project.business.collection.domain;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.baomidou.mybatisplus.annotation.TableName;
+import cn.ezhizao.framework.web.domain.BaseEntity;
+import lombok.Data;
+import io.swagger.annotations.ApiModelProperty;
+import cn.ezhizao.framework.aspectj.lang.annotation.Excel;
+
+/**
+ * 收款对象 biz_collection
+ *
+ * @author ruoyi
+ * @date 2023-12-29
+ */
+@Data
+@TableName(value = "biz_collection")
+public class BizCollection extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 收款流水号 */
+    @Excel(name = "收款流水号")
+    @ApiModelProperty(value = "收款流水号")
+    private String flowNo;
+
+    /** 服务公司id */
+    @ApiModelProperty(value = "收款流水号")
+    private Long subsidiaryId;
+
+    /** 服务公司 */
+    @Excel(name = "服务公司")
+    @ApiModelProperty(value = "服务公司")
+    private String subsidiary;
+
+    /** 服务公司账户 */
+    @Excel(name = "服务公司账户")
+    @ApiModelProperty(value = "服务公司账户")
+    private String subsidiaryName;
+
+    /** 服务公司账号 */
+    @Excel(name = "服务公司账号")
+    @ApiModelProperty(value = "服务公司账号")
+    private String subsidiaryBankAccount;
+
+    /** 服务公司开户行 */
+    @Excel(name = "服务公司开户行")
+    @ApiModelProperty(value = "服务公司开户行")
+    private String subsidiaryBankName;
+
+    /** 客户 Id */
+    @ApiModelProperty(value = "服务公司开户行")
+    private Long companyId;
+
+    /** 合同外键 */
+    @ApiModelProperty(value = "服务公司开户行")
+    private Long contractId;
+
+    /** 客户 名称 */
+    @Excel(name = "客户 名称")
+    @ApiModelProperty(value = "客户 名称")
+    private String companyName;
+
+    /** 应收金额 */
+    @Excel(name = "应收金额")
+    @ApiModelProperty(value = "应收金额")
+    private BigDecimal amount;
+
+    /** 收款金额 */
+    @Excel(name = "收款金额")
+    @ApiModelProperty(value = "收款金额")
+    private BigDecimal arriveAmount;
+
+    /** 到账日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "到账日期", width = 30, dateFormat = "yyyy-MM-dd")
+    @ApiModelProperty(value = "到账日期")
+    private Date arriveDate;
+
+    /** 到账时间 */
+    @Excel(name = "到账时间")
+    @ApiModelProperty(value = "到账时间")
+    private String arriveTime;
+
+    /** 审核状态 */
+    @Excel(name = "审核状态")
+    @ApiModelProperty(value = "审核状态")
+    private Integer status;
+
+    /** 申请人id */
+    @ApiModelProperty(value = "审核状态")
+    private Long applierId;
+
+    /** 审核时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "审核时间", width = 30, dateFormat = "yyyy-MM-dd")
+    @ApiModelProperty(value = "审核时间")
+    private Date verifyDate;
+
+    /** 审核描述 */
+    @Excel(name = "审核描述")
+    @ApiModelProperty(value = "审核描述")
+    private String verifyComment;
+
+    /** 到款状态 */
+    @Excel(name = "到款状态")
+    @ApiModelProperty(value = "到款状态")
+    private Integer arriveStatus;
+
+    /** 付款名称 */
+    @Excel(name = "付款名称")
+    @ApiModelProperty(value = "付款名称")
+    private String applyName;
+
+    /** 付款账号 */
+    @Excel(name = "付款账号")
+    @ApiModelProperty(value = "付款账号")
+    private String appyAccount;
+
+    /** 新签/续签 */
+    @Excel(name = "新签/续签")
+    @ApiModelProperty(value = "新签/续签")
+    private Integer isNew;
+
+    /** 项目/非项目 */
+    @Excel(name = "项目/非项目")
+    @ApiModelProperty(value = "项目/非项目")
+    private Integer isProject;
+
+    /** 项目编号 */
+    @Excel(name = "项目编号")
+    @ApiModelProperty(value = "项目编号")
+    private String projectNo;
+
+    /** 项目名称 */
+    @Excel(name = "项目名称")
+    @ApiModelProperty(value = "项目名称")
+    private String projectName;
+
+    /** 项目主体名称 */
+    @Excel(name = "项目主体名称")
+    @ApiModelProperty(value = "项目主体名称")
+    private String projectMainName;
+
+    /** 实际付款时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "实际付款时间", width = 30, dateFormat = "yyyy-MM-dd")
+    @ApiModelProperty(value = "实际付款时间")
+    private Date actuallyDate;
+
+    /** 主程序账套外键 */
+    @ApiModelProperty(value = "实际付款时间")
+    private Long mainAccountSetsId;
+
+}

+ 29 - 0
src/main/java/cn/ezhizao/project/business/collection/mapper/BizCollectionMapper.java

@@ -0,0 +1,29 @@
+package cn.ezhizao.project.business.collection.mapper;
+
+import java.util.List;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import cn.ezhizao.project.business.collection.domain.BizCollection;
+
+/**
+ * 收款Mapper接口
+ *
+ * @author ruoyi
+ * @date 2023-12-29
+ */
+public interface BizCollectionMapper extends BaseMapper<BizCollection>
+{
+    /**
+     * 查询收款列表
+     *
+     * @param bizCollection 收款
+     * @return 收款集合
+     */
+    public List<BizCollection> getList(BizCollection bizCollection);
+
+    /**
+     * 物理删除
+     * @param bizCollection
+     * @return 删除结果
+    */
+    public int physicalDelete(BizCollection bizCollection);
+}

+ 30 - 0
src/main/java/cn/ezhizao/project/business/collection/service/IBizCollectionService.java

@@ -0,0 +1,30 @@
+package cn.ezhizao.project.business.collection.service;
+
+import java.util.List;
+import com.baomidou.mybatisplus.extension.service.IService;
+import cn.ezhizao.project.business.collection.domain.BizCollection;
+
+/**
+ * 收款Service接口
+ *
+ * @author ruoyi
+ * @date 2023-12-29
+ */
+public interface IBizCollectionService extends IService<BizCollection>
+{
+    /**
+     * 查询收款列表
+     *
+     * @param bizCollection 收款
+     * @return 收款集合
+     */
+    public List<BizCollection> getList(BizCollection bizCollection);
+
+    /**
+     * 物理删除
+     * @param bizCollection
+     * @return 删除结果
+     */
+    public int physicalDelete(BizCollection bizCollection);
+
+}

+ 43 - 0
src/main/java/cn/ezhizao/project/business/collection/service/impl/BizCollectionServiceImpl.java

@@ -0,0 +1,43 @@
+package cn.ezhizao.project.business.collection.service.impl;
+
+import java.util.List;
+import javax.annotation.Resource;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import cn.ezhizao.project.business.collection.mapper.BizCollectionMapper;
+import cn.ezhizao.project.business.collection.domain.BizCollection;
+import cn.ezhizao.project.business.collection.service.IBizCollectionService;
+
+/**
+ * 收款Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2023-12-29
+ */
+@Service
+public class BizCollectionServiceImpl  extends ServiceImpl<BizCollectionMapper, BizCollection> implements IBizCollectionService
+{
+    @Resource
+    private BizCollectionMapper bizCollectionMapper;
+
+    /**
+     * 查询收款列表
+     *
+     * @param bizCollection 收款
+     * @return 收款
+     */
+    @Override
+    public List<BizCollection> getList(BizCollection bizCollection)
+    {
+        return bizCollectionMapper.getList(bizCollection);
+    }
+
+    /**
+     * 物理删除
+     * @param bizCollection
+     * @return 删除结果
+     */
+    @Override
+    public int physicalDelete(BizCollection bizCollection){ return bizCollectionMapper.physicalDelete(bizCollection); };
+
+}

+ 41 - 3
src/main/java/cn/ezhizao/project/business/company/util/QiChaChaRequest.java

@@ -2,19 +2,29 @@ package cn.ezhizao.project.business.company.util;
 
 import cn.ezhizao.common.constant.Constants;
 import cn.ezhizao.common.utils.http.HttpUtils;
+import cn.hutool.json.JSONException;
+import cn.hutool.json.JSONObject;
 import org.apache.commons.codec.digest.DigestUtils;
 
+import java.io.IOException;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.regex.Pattern;
+
+import static java.lang.System.out;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
 
 
 public class QiChaChaRequest {
     private static final String appkey = "appkey";
     private static final String secretKey = "secretKey";
 
-    public static String getCompanyInfo(String companyName) {
-        String path = "https://api.qichacha.com/ECIInfoVerify/Get";
-        String paramStr = "keyword="+companyName;
+    public static String getCompanyInfo(String param) {
+        String path = "https://api.qichacha.com/ECIV4/GetBasicDetailsByName";
+        String paramStr = "keyword="+param+"&key="+appkey;
+
         String status = "";
         Map<String, String> headers = new HashMap<String, String>();
         String[] autherHeader = RandomAuthentHeader();
@@ -30,4 +40,32 @@ public class QiChaChaRequest {
         String timeSpan = String.valueOf(System.currentTimeMillis() / 1000);
         return new String[] { DigestUtils.md5Hex(appkey.concat(timeSpan).concat(secretKey)).toUpperCase(), timeSpan };
     }
+
+    static class HttpCodeRegex {
+        private static final String ABNORMAL_REGIX = "(101)|(102)";
+        private static final Pattern pattern = Pattern.compile(ABNORMAL_REGIX);
+        protected static boolean isAbnornalRequest(final String status) {
+            return pattern.matcher(status).matches();
+        }
+    }
+
+    // 解析JSON
+    protected static String FormartJson(String jsonString, String key) throws JSONException {
+        JSONObject jObject = new JSONObject(jsonString);
+        return (String) jObject.get(key);
+    }
+
+    // pretty print 返回值
+    protected static void PrettyPrintJson(String jsonString) throws JSONException {
+        try {
+            ObjectMapper mapper = new ObjectMapper();
+            Object obj = mapper.readValue(jsonString, Object.class);
+            String indented = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(obj);
+            out.println(indented);
+        } catch (JsonProcessingException e) {
+            e.printStackTrace();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
 }

+ 31 - 4
src/main/java/cn/ezhizao/project/business/order/domain/BizArchiveInput.java

@@ -43,9 +43,14 @@ public class BizArchiveInput extends BaseEntity {
     private Long fromId;
 
     @TableField(exist = false)
-    @Excel(name = "客户名称")
+    @Excel(name = "客户名称", sort = 1)
     private String companyName;
 
+    @TableField(exist = false)
+    @ApiModelProperty("税号")
+    @Excel(name = "税号", sort = 2)
+    private String socialCreditCode;
+
     @ApiModelProperty("签单人")
     private Long signerId;
 
@@ -96,6 +101,7 @@ public class BizArchiveInput extends BaseEntity {
     private String proofUrl;
 
     @ApiModelProperty("变更类型")
+    @TableField(exist = false)
     private String alterType;
     /**
      * 合同编号
@@ -202,9 +208,6 @@ public class BizArchiveInput extends BaseEntity {
     @ApiModelProperty("来源外键")
     private Long sourceId;
 
-    @TableField(exist = false)
-    @ApiModelProperty("税号")
-    private String socialCreditCode;
 
     @ApiModelProperty("状态")
     private Integer status;
@@ -214,4 +217,28 @@ public class BizArchiveInput extends BaseEntity {
 
     @ApiModelProperty("解除合同状态")
     private Integer dissolution;
+
+    @ApiModelProperty("变更次数")
+    @TableField(exist = false)
+    private Integer alterNumber;
+
+    @TableField(exist = false)
+    private Integer isKeepAccount;
+    @TableField(exist = false)
+    private Integer isSocialSecurity;
+    @TableField(exist = false)
+    private Integer isHousingFund;
+    @TableField(exist = false)
+    private Integer isReturnTax;
+
+    @TableField(exist = false)
+    private Integer isRegister;
+    @TableField(exist = false)
+    private Integer isAlter;
+    @TableField(exist = false)
+    private Integer isLogout;
+    @TableField(exist = false)
+    private Integer isQualified;
+    @TableField(exist = false)
+    private Integer isOther;
 }

+ 2 - 0
src/main/java/cn/ezhizao/project/business/order/mapper/BizArchiveInputDetailMapper.java

@@ -26,4 +26,6 @@ public interface BizArchiveInputDetailMapper extends BaseMapper<BizArchiveInputD
      * @return 删除结果
     */
     public int physicalDelete(BizArchiveInputDetail bizArchiveInputDetail);
+
+    BizArchiveInputDetail getDetail(BizArchiveInputDetail id);
 }

+ 2 - 0
src/main/java/cn/ezhizao/project/business/order/mapper/BizArchiveInputDetailProcessMapper.java

@@ -26,4 +26,6 @@ public interface BizArchiveInputDetailProcessMapper extends BaseMapper<BizArchiv
      * @return 删除结果
     */
     public int physicalDelete(BizArchiveInputDetailProcess bizArchiveInputDetailProcess);
+
+    BizArchiveInputDetailProcess getDetail(Long id);
 }

+ 2 - 0
src/main/java/cn/ezhizao/project/business/order/service/IBizArchiveInputDetailProcessService.java

@@ -27,4 +27,6 @@ public interface IBizArchiveInputDetailProcessService extends IService<BizArchiv
      */
     public int physicalDelete(BizArchiveInputDetailProcess bizArchiveInputDetailProcess);
 
+
+
 }

+ 4 - 0
src/main/java/cn/ezhizao/project/business/order/service/IBizArchiveInputDetailService.java

@@ -1,6 +1,8 @@
 package cn.ezhizao.project.business.order.service;
 
 import java.util.List;
+
+import cn.ezhizao.project.business.order.domain.BizArchiveInputDetailProcess;
 import com.baomidou.mybatisplus.extension.service.IService;
 import cn.ezhizao.project.business.order.domain.BizArchiveInputDetail;
 
@@ -27,4 +29,6 @@ public interface IBizArchiveInputDetailService extends IService<BizArchiveInputD
      */
     public int physicalDelete(BizArchiveInputDetail bizArchiveInputDetail);
 
+    public BizArchiveInputDetail getDetail(BizArchiveInputDetail detail);
+
 }

+ 1 - 0
src/main/java/cn/ezhizao/project/business/order/service/impl/BizArchiveInputDetailProcessServiceImpl.java

@@ -40,4 +40,5 @@ public class BizArchiveInputDetailProcessServiceImpl  extends ServiceImpl<BizArc
     @Override
     public int physicalDelete(BizArchiveInputDetailProcess bizArchiveInputDetailProcess){ return bizArchiveInputDetailProcessMapper.physicalDelete(bizArchiveInputDetailProcess); };
 
+
 }

+ 11 - 1
src/main/java/cn/ezhizao/project/business/order/service/impl/BizArchiveInputDetailServiceImpl.java

@@ -2,6 +2,8 @@ package cn.ezhizao.project.business.order.service.impl;
 
 import java.util.List;
 import javax.annotation.Resource;
+
+import cn.ezhizao.project.business.order.domain.BizArchiveInputDetailProcess;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 import cn.ezhizao.project.business.order.mapper.BizArchiveInputDetailMapper;
@@ -38,6 +40,14 @@ public class BizArchiveInputDetailServiceImpl  extends ServiceImpl<BizArchiveInp
      * @return 删除结果
      */
     @Override
-    public int physicalDelete(BizArchiveInputDetail bizArchiveInputDetail){ return bizArchiveInputDetailMapper.physicalDelete(bizArchiveInputDetail); };
+    public int physicalDelete(BizArchiveInputDetail bizArchiveInputDetail){ return bizArchiveInputDetailMapper.physicalDelete(bizArchiveInputDetail); }
+
+    @Override
+    public BizArchiveInputDetail getDetail(BizArchiveInputDetail detail){
+        return bizArchiveInputDetailMapper.getDetail(detail);
+    }
+
+
+
 
 }

+ 5 - 0
src/main/java/cn/ezhizao/project/business/order/service/impl/BizArchiveInputServiceImpl.java

@@ -109,6 +109,7 @@ public class BizArchiveInputServiceImpl extends ServiceImpl<BizArchiveInputMappe
     @Override
     public boolean verify(BizArchiveInput bizArchiveInput) {
         super.updateById(bizArchiveInput);
+        Long userId = SecurityUtils.getUserId();
         List<BizArchiveInputDetail> details = archiveInputDetailService.query().eq("contract_id", bizArchiveInput.getId()).list();
         details.forEach(l -> {
             BizArchiveInputDetail detail = bizArchiveInput.getDetails().stream().filter(v -> v.getId().equals(l.getId())).findFirst().orElse(l);
@@ -143,6 +144,7 @@ public class BizArchiveInputServiceImpl extends ServiceImpl<BizArchiveInputMappe
                         workOrder.setMonthNum(l.getFreeNum() + l.getServiceNum());
                         workOrder.setWorkOrderNo("workOrder_" + snowflakeIdWorker.nextId());
                         workOrder.setId(snowflakeIdWorker.nextId());
+                        workOrder.setServiceId(workOrder.getServiceId() == null ? userId : workOrder.getServiceId());
                         newWorkOrders.add(workOrder);
                         BizWorkOrderDetail bizWorkOrderDetail = new BizWorkOrderDetail();
                         bizWorkOrderDetail.setCompanyId(l.getCompanyId());
@@ -177,6 +179,7 @@ public class BizArchiveInputServiceImpl extends ServiceImpl<BizArchiveInputMappe
                             workOrder.setMonthNum(l.getFreeNum() + l.getServiceNum());
                             workOrder.setWorkOrderNo("workOrder_" + snowflakeIdWorker.nextId());
                             workOrder.setId(snowflakeIdWorker.nextId());
+                            workOrder.setServiceId(workOrder.getServiceId() == null ? userId : workOrder.getServiceId());
                             newWorkOrders.add(workOrder);
                             BizWorkOrderDetail bizWorkOrderDetail = new BizWorkOrderDetail();
                             bizWorkOrderDetail.setCompanyId(l.getCompanyId());
@@ -209,6 +212,7 @@ public class BizArchiveInputServiceImpl extends ServiceImpl<BizArchiveInputMappe
                                     changeWorkOrderDetails.add(bizWorkOrderDetail);
                                 }
                                 v.setMonthNum(monthNum);
+                                v.setServiceId(v.getServiceId() == null ? userId : v.getServiceId());
                                 if (v.getStartMonth() != null) {
                                     DateTime startMonth = DateTime.of(v.getStartMonth());
                                     v.setEndMonth(startMonth.offset(DateField.MONTH, monthNum - 1).toSqlDate());
@@ -282,6 +286,7 @@ public class BizArchiveInputServiceImpl extends ServiceImpl<BizArchiveInputMappe
                         workOrder.setCompanyId(bizArchiveInput.getCompanyId());
                         workOrder.setDistrictCode(l.getDistrictCode());
                         workOrder.setDistrict(l.getDistrict());
+                        workOrder.setServiceId(workOrder.getServiceId() == null ? userId : workOrder.getServiceId());
                         if (workOrder.getId() == null) {
                             newWorkOrders.add(workOrder);
                         } else {

+ 173 - 18
src/main/java/cn/ezhizao/project/business/workOrder/controller/BizWorkOrderController.java

@@ -1,13 +1,31 @@
 package cn.ezhizao.project.business.workOrder.controller;
 
+import java.math.BigDecimal;
+import java.math.MathContext;
+import java.math.RoundingMode;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 
+import cn.ezhizao.common.utils.SecurityUtils;
 import cn.ezhizao.common.utils.uuid.SnowflakeIdWorker;
+import cn.ezhizao.framework.security.LoginUser;
+import cn.ezhizao.project.business.collection.domain.BizCollection;
+import cn.ezhizao.project.business.collection.service.impl.BizCollectionServiceImpl;
 import cn.ezhizao.project.business.entrust.domain.BizEntrust;
 import cn.ezhizao.project.business.entrust.service.IBizEntrustService;
+import cn.ezhizao.project.business.order.domain.BizArchiveInput;
+import cn.ezhizao.project.business.order.domain.BizArchiveInputDetail;
+import cn.ezhizao.project.business.order.domain.BizArchiveInputDetailProcess;
+import cn.ezhizao.project.business.order.service.IBizArchiveInputDetailProcessService;
+import cn.ezhizao.project.business.order.service.IBizArchiveInputDetailService;
+import cn.ezhizao.project.business.order.service.impl.BizArchiveInputServiceImpl;
+import cn.ezhizao.project.business.workOrder.domain.BizWorkOrderDetail;
+import cn.ezhizao.project.business.workOrder.service.IBizWorkOrderDetailService;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -35,32 +53,42 @@ import cn.ezhizao.framework.web.page.TableDataInfo;
  */
 @RestController
 @RequestMapping("/business/workOrder")
-public class BizWorkOrderController extends BaseController
-{
+public class BizWorkOrderController extends BaseController {
     @Resource
     private IBizWorkOrderService bizWorkOrderService;
 
     @Resource
     private IBizEntrustService entrustService;
 
+    @Resource
+    private BizCollectionServiceImpl bizCollectionService;
+
     @Resource
     private SnowflakeIdWorker snowflakeIdWorker;
 
+    @Resource
+    private BizArchiveInputServiceImpl bizArchiveInputService;
+
+    @Resource
+    private IBizArchiveInputDetailService bizArchiveInputDetailService;
+
+    @Resource
+    private IBizWorkOrderDetailService bizWorkOrderDetailService;
+
     /**
      * 查询工单信息列表
      */
     @PreAuthorize("@ss.hasAnyPermi('business:workOrder:list,business:workOrder:noContract:list')")
     @GetMapping("/list")
-    public TableDataInfo list(BizWorkOrder bizWorkOrder) throws NoSuchFieldException, IllegalAccessException
-    {
+    public TableDataInfo list(BizWorkOrder bizWorkOrder) throws NoSuchFieldException, IllegalAccessException {
         setTenantId(bizWorkOrder);
 
         startPage();
         //排序
         startOrderBy();
         //根据客户名称模糊查询去除两边空格
-        if( bizWorkOrder.getCompanyName()!=null){
-            if(!bizWorkOrder.getCompanyName().equals(""))
+        if (bizWorkOrder.getCompanyName() != null) {
+            if (!bizWorkOrder.getCompanyName().equals(""))
                 bizWorkOrder.setCompanyName(bizWorkOrder.getCompanyName().trim());
         }
         List<BizWorkOrder> list = bizWorkOrderService.getList(bizWorkOrder);
@@ -70,17 +98,148 @@ public class BizWorkOrderController extends BaseController
         list.forEach(v -> {
             v.setEntrusts(entrusts.stream().filter(e -> e.getWorkOrderId().equals(v.getId())).collect(Collectors.toList()));
         });
+
+        //判断是否是合同查询
+        if (bizWorkOrder.getNoContract() == 0) {
+            for (BizWorkOrder v : list) {
+                BizWorkOrderDetail workOrderDetail = new BizWorkOrderDetail();
+                workOrderDetail.setWorkOrderId(v.getId());
+                //查询工单明细
+                List<BizWorkOrderDetail> detailList = bizWorkOrderDetailService.getList(workOrderDetail);
+
+                //查询合同收款金额
+                BizArchiveInput bizArchiveInput = bizArchiveInputService.getById(v.getContractId());
+                BigDecimal money=new BigDecimal(0);
+                if(bizArchiveInput!=null){
+                    money = bizArchiveInput.getTrueAmount();
+                }
+
+                //如果是单次工单
+                if (v.getType() == 2) {
+                    BizCollection collection =new BizCollection();
+                    collection.setContractId(v.getContractId());
+                    collection.setStatus(1);
+                    //查询收款数据
+                    List<BizCollection>  colList =bizCollectionService.getList(collection);
+                    //已收款金额
+                    BigDecimal collectionMoney = new BigDecimal(0);
+                    //计算收款金额
+                    for (BizCollection d : colList) {
+                        BigDecimal addMoney = d.getAmount();
+                        if (addMoney!=null) {
+                            collectionMoney=collectionMoney.add(addMoney);
+                        }else{
+                            addMoney=new BigDecimal(0);
+                        }
+                    }
+                    //判断是否全部收款
+                     if (collectionMoney.compareTo(money) == 0) {
+                        v.setOnceContractStatus("已收款");
+                    } else if (collectionMoney.compareTo(money) < 0) {
+                        v.setOnceContractStatus("部分收款");
+                    }else if (collectionMoney.compareTo(new BigDecimal(0)) == 0) {
+                        v.setOnceContractStatus("未收款");
+                    }
+                }
+                //如果是循环工单
+                if (v.getType() == 1 && detailList.size()>0) {
+
+                    //判断是否有起始月份
+                    BizArchiveInputDetail detail = new BizArchiveInputDetail();
+                    detail.setContractId(v.getContractId());
+                    detail.setTaskTypeId(v.getTaskTypeId());
+                    detail = bizArchiveInputDetailService.getDetail(detail);
+                    if (v.getStartMonth() != null) {
+                        //月数
+                        Integer monthNum = 0;
+                        //如果只有一个合同
+                        if(detailList.size()==1){
+                            //且收款金额为0
+                            if(detailList.get(0).getTotalityMoney()==null||detailList.get(0).getTotalityMoney().compareTo(new BigDecimal(0))==0){
+                                v.setClosingMonth("未收款");
+                            }
+                        }else {
+                            //根据单价计算月数
+                            for (BizWorkOrderDetail d : detailList) {
+                                //如果收款金额大于0
+                                if (d.getTotalityMoney() != null && d.getTotalityMoney().compareTo(new BigDecimal(0)) > 0) {
+                                    detail.setContractId(d.getContractId());
+                                    detail.setTaskTypeId(d.getTaskTypeId());
+                                    detail = bizArchiveInputDetailService.getDetail(detail);
+                                    BigDecimal price = detail.getPrice();
+                                    monthNum += d.getTotalityMoney().divide(price, MathContext.DECIMAL64).setScale(0, RoundingMode.DOWN).intValue();
+                                }
+                            }
+                            //判断收款月数是否等于服务月数
+                            if (detail.getServiceNum() == monthNum) {
+                                //如果服务月数等于收款月数则加上赠送月数
+                                monthNum += detail.getFreeNum();
+                            }
+                            //设置收款截止月
+                            Calendar rightNow = Calendar.getInstance();
+                            rightNow.setTime(v.getStartMonth());
+                            rightNow.add(Calendar.MONTH, monthNum == 0 ? monthNum : monthNum - 1);
+                            Date closingMonth = rightNow.getTime();
+                            // 创建一个SimpleDateFormat对象,指定日期格式
+                            SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月");
+                            // 将Date对象转换为字符串
+                            String dateString = sdf.format(closingMonth);
+                            v.setClosingMonth("收款截止" + dateString);
+                        }
+
+                    } else {
+                        v.setClosingMonth("-");
+                    }
+
+                }
+            }
+
+        }
+
+
         return getDataTable(list);
     }
 
     /**
-     * 导出工单信息列表
+     * 首页查询工单信息列表
      */
+    @GetMapping("/indexList")
+    public TableDataInfo indexList(BizWorkOrder bizWorkOrder) throws NoSuchFieldException, IllegalAccessException {
+        setTenantId(bizWorkOrder);
+        //排序
+        startOrderBy();
+        //获取当前登录用户Id
+        bizWorkOrder.setServiceId(SecurityUtils.getLoginUser().getUserId());
+        //根据客户名称模糊查询去除两边空格
+        if (bizWorkOrder.getCompanyName() != null) {
+            if (!bizWorkOrder.getCompanyName().equals(""))
+                bizWorkOrder.setCompanyName(bizWorkOrder.getCompanyName().trim());
+        }
+        List<BizWorkOrder> list = bizWorkOrderService.getIndexList(bizWorkOrder);
+        BizEntrust entrustConditions = new BizEntrust();
+        entrustConditions.setWorkOrderIds(list.stream().map(BizWorkOrder::getId).collect(Collectors.toList()));
+        List<BizEntrust> entrusts = entrustService.getList(entrustConditions);
+        list.forEach(v -> {
+            v.setEntrusts(entrusts.stream().filter(e -> e.getWorkOrderId().equals(v.getId())).collect(Collectors.toList()));
+        });
+
+        for (BizWorkOrder v:list){
+            if(v.getNoContract()==1){
+                v.setTaskTypeName(v.getRemark());
+            }
+        }
+
+        return getDataTable(list);
+    }
+
+
+        /**
+         * 导出工单信息列表
+         */
     @PreAuthorize("@ss.hasPermi('business:workOrder:export')")
     @Log(title = "工单信息", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
-    public void export(HttpServletResponse response, BizWorkOrder bizWorkOrder) throws NoSuchFieldException, IllegalAccessException
-    {
+    public void export(HttpServletResponse response, BizWorkOrder bizWorkOrder) throws NoSuchFieldException, IllegalAccessException {
         setTenantId(bizWorkOrder);
         List<BizWorkOrder> list = bizWorkOrderService.getList(bizWorkOrder);
         ExcelUtil<BizWorkOrder> util = new ExcelUtil<BizWorkOrder>(BizWorkOrder.class);
@@ -92,8 +251,7 @@ public class BizWorkOrderController extends BaseController
      */
     @PreAuthorize("@ss.hasPermi('business:workOrder:query')")
     @GetMapping(value = "/{id}")
-    public AjaxResult getInfo(@PathVariable("id") Long id)
-    {
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
         return success(bizWorkOrderService.getById(id));
     }
 
@@ -103,8 +261,7 @@ public class BizWorkOrderController extends BaseController
     @PreAuthorize("@ss.hasPermi('business:workOrder:add')")
     @Log(title = "工单信息", businessType = BusinessType.INSERT)
     @PostMapping
-    public AjaxResult add(@RequestBody BizWorkOrder bizWorkOrder) throws NoSuchFieldException, IllegalAccessException
-    {
+    public AjaxResult add(@RequestBody BizWorkOrder bizWorkOrder) throws NoSuchFieldException, IllegalAccessException {
         setTenantId(bizWorkOrder);
         bizWorkOrder.setWorkOrderNo("workOrder_" + snowflakeIdWorker.nextId());
         return toAjax(bizWorkOrderService.save(bizWorkOrder));
@@ -116,8 +273,7 @@ public class BizWorkOrderController extends BaseController
     @PreAuthorize("@ss.hasPermi('business:workOrder:edit')")
     @Log(title = "工单信息", businessType = BusinessType.UPDATE)
     @PutMapping
-    public AjaxResult edit(@RequestBody BizWorkOrder bizWorkOrder) throws NoSuchFieldException, IllegalAccessException
-    {
+    public AjaxResult edit(@RequestBody BizWorkOrder bizWorkOrder) throws NoSuchFieldException, IllegalAccessException {
         setTenantId(bizWorkOrder);
         return toAjax(bizWorkOrderService.updateById(bizWorkOrder));
     }
@@ -127,9 +283,8 @@ public class BizWorkOrderController extends BaseController
      */
     @PreAuthorize("@ss.hasPermi('business:workOrder:remove')")
     @Log(title = "工单信息", businessType = BusinessType.DELETE)
-	@DeleteMapping("/{ids}")
-    public AjaxResult remove(@PathVariable List<Long> ids)
-    {
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable List<Long> ids) {
         return toAjax(bizWorkOrderService.removeBatchByIds(ids));
     }
 

+ 89 - 38
src/main/java/cn/ezhizao/project/business/workOrder/domain/BizWorkOrder.java

@@ -21,19 +21,23 @@ import cn.ezhizao.framework.aspectj.lang.annotation.Excel;
  */
 @Data
 @TableName(value = "biz_work_order")
-public class BizWorkOrder extends BaseEntity
-{
+public class BizWorkOrder extends BaseEntity {
     private static final long serialVersionUID = 1L;
 
-    /** 合同外键 */
+    /**
+     * 合同外键
+     */
     @ApiModelProperty(value = "${comment}")
     private Long contractId;
 
-    /** 客户外键 */
+    /**
+     * 客户外键
+     */
     @ApiModelProperty(value = "${comment}")
     private Long companyId;
 
     @ApiModelProperty("客户名称")
+    @Excel(name = "客户名称", sort = 1)
     @TableField(exist = false)
     private String companyName;
 
@@ -47,94 +51,138 @@ public class BizWorkOrder extends BaseEntity
     @ApiModelProperty("合同流程外键")
     private Long contractDetailProcessId;
 
-    /** 工单类型 1循环 2代办 */
-    @Excel(name = "工单类型 1循环 2代办")
+    /**
+     * 工单类型 1循环 2代办
+     */
+    @Excel(name = "工单类型", readConverterExp = "1=循环工单,2=代办工单", sort = 2)
     @ApiModelProperty(value = "工单类型 1循环 2代办")
     private Integer type;
 
-    /** 无合同 */
-    @Excel(name = "无合同")
+    /**
+     * 无合同
+     */
+    @Excel(name = "无合同", readConverterExp = "0=合同工单,1=非合同工单", sort = 3)
     @ApiModelProperty(value = "无合同")
     private Integer noContract;
 
-
-
-    /** 编号 */
-    @Excel(name = "编号")
+    /**
+     * 编号
+     */
+    @Excel(name = "编号", sort = 4)
     @ApiModelProperty(value = "编号")
     private String workOrderNo;
 
-    /** 任务类型 任务表外键 任务明细表 */
+    /**
+     * 任务类型 任务表外键 任务明细表
+     */
     @ApiModelProperty(value = "任务外键")
     private Long taskTypeId;
 
     @TableField(exist = false)
+    @Excel(name = "任务类型", sort = 5)
     private String taskTypeName;
 
-    /** 任务类型 任务表外键 任务明细表 */
+    /**
+     * 任务类型 任务表外键 任务明细表
+     */
     @ApiModelProperty(value = "任务明细外键")
     private Long taskTypeDetailId;
 
     @TableField(exist = false)
+    @Excel(name = "任务详情", sort = 6)
     private String taskTypeDetailName;
 
-    /** 开始月 */
+    /**
+     * 收款截至月
+     */
+    @TableField(exist = false)
+    private String closingMonth;
+
+    /**
+     * 单次合同收款状态
+     */
+    @TableField(exist = false)
+    private String onceContractStatus;
+
+    /**
+     * 开始月
+     */
     @JsonFormat(pattern = "yyyy-MM-dd")
-    @Excel(name = "开始月", width = 30, dateFormat = "yyyy-MM-dd")
+    @Excel(name = "开始月", width = 30, dateFormat = "yyyy年MM月", sort = 7)
     @ApiModelProperty(value = "开始月")
     private Date startMonth;
 
-    /** 结束月 */
+    /**
+     * 结束月
+     */
     @JsonFormat(pattern = "yyyy-MM-dd")
-    @Excel(name = "结束月", width = 30, dateFormat = "yyyy-MM-dd")
+    @Excel(name = "结束月", width = 30, dateFormat = "yyyy年MM月", sort = 8)
     @ApiModelProperty(value = "结束月")
     private Date endMonth;
 
-    /** 月数 */
-    @Excel(name = "月数")
+    /**
+     * 月数
+     */
+    @Excel(name = "月数", sort = 9)
     @ApiModelProperty(value = "月数")
     private Integer monthNum;
 
-    /** 负责人 */
-    @ApiModelProperty(value = "月数")
+    /**
+     * 负责人
+     */
+    @ApiModelProperty(value = "负责人")
     private Long managerId;
 
-    /** 主程序账套外键 */
-    @ApiModelProperty(value = "月数")
+    /**
+     * 主程序账套外键
+     */
+    @ApiModelProperty(value = "账套外键")
     private Long tenantId;
 
-    /** 停止任务 */
-    @Excel(name = "停止任务")
+    /**
+     * 停止任务
+     */
+    @Excel(name = "停止任务", sort = 10, readConverterExp = "0=正常,1=停止")
     @ApiModelProperty(value = "停止任务")
     private Integer isStop;
 
 
-    @Excel(name = "注册省份编码")
+    //    @Excel(name = "注册省份编码")
     @ApiModelProperty(value = "注册省份编码")
     private String provinceCode;
 
-    /** 省 */
-    @Excel(name = "省")
+    /**
+     * 省
+     */
+    @Excel(name = "省", sort = 11)
     @ApiModelProperty(value = "省")
     private String province;
 
-    /** 注册城市编码 */
-    @Excel(name = "注册城市编码")
+    /**
+     * 注册城市编码
+     */
+//    @Excel(name = "注册城市编码")
     @ApiModelProperty(value = "注册城市编码")
     private String cityCode;
 
-    /** 市 */
-    @Excel(name = "市")
+    /**
+     * 市
+     */
+    @Excel(name = "市", sort = 12)
     @ApiModelProperty(value = "市")
     private String city;
 
-    /** 注册行政区编码 */
-    @Excel(name = "注册行政区编码")
+    /**
+     * 注册行政区编码
+     */
+//    @Excel(name = "注册行政区编码")
     @ApiModelProperty(value = "注册行政区编码")
     private String districtCode;
 
-    /** 区 */
-    @Excel(name = "区")
+    /**
+     * 区
+     */
+    @Excel(name = "区", sort = 13)
     @ApiModelProperty(value = "区")
     private String district;
 
@@ -143,7 +191,9 @@ public class BizWorkOrder extends BaseEntity
     @TableField(exist = false)
     private List<BizWorkOrderDetail> details;
 
-    /** 服务管理查询条件 */
+    /**
+     * 服务管理查询条件
+     */
     @TableField(exist = false)
     private Integer status;
     @TableField(exist = false)
@@ -155,6 +205,7 @@ public class BizWorkOrder extends BaseEntity
     private Long serviceId;
 
     @TableField(exist = false)
+    @Excel(name = "执行人", sort = 14)
     private String serviceName;
 
     @TableField(exist = false)

+ 17 - 0
src/main/java/cn/ezhizao/project/business/workOrder/domain/BizWorkOrderDetail.java

@@ -1,11 +1,15 @@
 package cn.ezhizao.project.business.workOrder.domain;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import cn.ezhizao.framework.web.domain.BaseEntity;
 import lombok.Data;
 import io.swagger.annotations.ApiModelProperty;
 import cn.ezhizao.framework.aspectj.lang.annotation.Excel;
 
+import java.math.BigDecimal;
+import java.util.List;
+
 /**
  * 工单明细对象 biz_work_order_detail
  *
@@ -53,4 +57,17 @@ public class BizWorkOrderDetail extends BaseEntity
     @ApiModelProperty("是否停止")
     private Integer isStop;
 
+    //合同收款总金额
+    @TableField(exist = false)
+    private BigDecimal totalityMoney;
+
+    //合同应收款金额
+    @TableField(exist = false)
+    private BigDecimal accountsReceivable;
+
+    //月单价
+    @TableField(exist = false)
+    private BigDecimal monthPrice;
+
+
 }

+ 8 - 0
src/main/java/cn/ezhizao/project/business/workOrder/mapper/BizWorkOrderMapper.java

@@ -22,6 +22,14 @@ public interface BizWorkOrderMapper extends BaseMapper<BizWorkOrder>
      */
     public List<BizWorkOrder> getList(BizWorkOrder bizWorkOrder);
 
+    /**
+     * 首页查询工单信息列表
+     *
+     * @param bizWorkOrder 工单信息
+     * @return 工单信息集合
+     */
+    public List<BizWorkOrder> getIndexList(BizWorkOrder bizWorkOrder);
+
     /**
      * 物理删除
      * @param bizWorkOrder

+ 10 - 0
src/main/java/cn/ezhizao/project/business/workOrder/service/IBizWorkOrderService.java

@@ -22,6 +22,16 @@ public interface IBizWorkOrderService extends IService<BizWorkOrder>
      */
     public List<BizWorkOrder> getList(BizWorkOrder bizWorkOrder);
 
+
+    /**
+     * 查询工单信息列表
+     *
+     * @param bizWorkOrder 工单信息
+     * @return 工单信息集合
+     */
+    public List<BizWorkOrder> getIndexList(BizWorkOrder bizWorkOrder);
+
+
     /**
      * 物理删除
      * @param bizWorkOrder

+ 5 - 0
src/main/java/cn/ezhizao/project/business/workOrder/service/impl/BizWorkOrderServiceImpl.java

@@ -33,6 +33,11 @@ public class BizWorkOrderServiceImpl  extends ServiceImpl<BizWorkOrderMapper, Bi
         return bizWorkOrderMapper.getList(bizWorkOrder);
     }
 
+    @Override
+    public List<BizWorkOrder> getIndexList(BizWorkOrder bizWorkOrder) {
+        return bizWorkOrderMapper.getIndexList(bizWorkOrder);
+    }
+
     /**
      * 物理删除
      * @param bizWorkOrder

+ 9 - 0
src/main/resources/mybatis/business/BizArchiveInputDetailMapper.xml

@@ -22,7 +22,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="amount != null "> AND t1.amount = #{amount}</if>
         </trim>
     </select>
+    <select id="getDetail" parameterType="BizArchiveInputDetail" resultMap="BizArchiveInputDetailResult">
+        SELECT *
+        FROM biz_archive_input_detail
+        <trim prefix=" WHERE" suffix="" suffixOverrides="AND">
+            deleted = 0
+            <if test="contractId != null "> AND contract_id = #{contractId}</if>
+            <if test="taskTypeId != null "> AND task_type_id = #{taskTypeId}</if>
+        </trim>
 
+    </select>
     <delete id="physicalDelete">
         DELETE FROM biz_archive_input_detail
         <trim prefix=" WHERE" suffix="" suffixOverrides="AND">

+ 63 - 23
src/main/resources/mybatis/business/BizArchiveInputMapper.xml

@@ -1,14 +1,17 @@
 <?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">
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="cn.ezhizao.project.business.order.mapper.BizArchiveInputMapper">
 
     <resultMap type="cn.ezhizao.project.business.order.domain.BizArchiveInput" id="BizArchiveInputResult">
         <id column="id" property="id"/>
         <result column="source_id" property="sourceId"/>
         <result column="referrer_data_source" property="referrerDataSource"/>
-        <association property="sourceName" column="{ source_id = source_id, referrer_data_source = referrer_data_source }" select="getSourceName" />
+        <association property="sourceName"
+                     column="{ source_id = source_id, referrer_data_source = referrer_data_source }"
+                     select="getSourceName"/>
+        <association property="alterNumber" column="{ id = id, from_id = from_id }" select="getAlterNumber"/>
     </resultMap>
     <select id="getSourceName" resultType="java.lang.String">
         <if test="referrer_data_source == null">
@@ -28,6 +31,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </if>
     </select>
 
+    <select id="getAlterNumber" resultType="java.lang.Integer">
+        select count(1) from biz_archive_input t where t.deleted = 0
+        <if test="from_id == 0">
+            and t.from_id = #{id}
+        </if>
+        <if test="from_id != 0">
+            and t.from_id = #{from_id} or t.id = #{from_id}
+        </if>
+    </select>
 
 
     <select id="getList" parameterType="BizArchiveInput" resultMap="BizArchiveInputResult">
@@ -44,25 +56,53 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         left join biz_source t4 on t4.id = t1.source_category_id
         <trim prefix=" WHERE" suffix="" suffixOverrides="AND">
             t1.deleted = 0
-            <if test="fromId != null">AND t1.from_id = #{fromId}</if>
-            <if test="id != null  and id != ''"> AND t1.id = #{id}</if>
-            <if test="companyName != null  and companyName != ''"> AND t2.name like concat("%", #{companyName}, "%")</if>
-            <if test="archiveTypeId != null"> and archive_type_id = #{archiveTypeId}</if>
-            <if test="companyId != null  and companyId != ''"> AND t1.company_id = #{companyId}</if>
-            <if test="archiveCode != null  and archiveCode != ''"> AND t1.archive_code = #{archiveCode}</if>
-            <if test="startMonth != null "> AND t1.start_month = #{startMonth}</if>
-            <if test="endMonth != null "> AND t1.end_month = #{endMonth}</if>
-            <if test="proofUrl != null  and proofUrl != ''"> AND t1.proof_url = #{proofUrl}</if>
-            <if test="contractNo != null  and contractNo != ''"> AND t1.contract_no = #{contractNo}</if>
-            <if test="formDate != null "> AND t1.form_date = #{formDate}</if>
-            <if test="amount != null "> AND t1.amount = #{amount}</if>
-            <if test="verifyStatus != null "> AND t1.verify_status = #{verifyStatus}</if>
-            <if test="contractType != null "> AND t1.contract_type = #{contractType}</if>
-            <if test="outputDate != null "> AND t1.output_date = #{outputDate}</if>
-            <if test="monthNum != null "> AND t1.month_num = #{monthNum}</if>
-            <if test="companyName != null and companyName != '' "> AND t2.name like concat('%', #{companyName}, '%')</if>
-            <if test="verifyRemark != null  and verifyRemark != ''"> AND t1.verify_remark = #{verifyRemark}</if>
-            <if test="tenantId != null"> AND t1.tenant_id = #{tenantId}</if>
+            <if test="fromId != null">AND (t1.from_id = #{fromId} or t1.id = #{fromId})</if>
+            <if test="id != null  and id != ''">AND t1.id = #{id}</if>
+            <if test="companyName != null  and companyName != ''">AND t2.name like concat("%", #{companyName}, "%")</if>
+            <if test="archiveTypeId != null">and archive_type_id = #{archiveTypeId}</if>
+            <if test="companyId != null  and companyId != ''">AND t1.company_id = #{companyId}</if>
+            <if test="archiveCode != null  and archiveCode != ''">AND t1.archive_code = #{archiveCode}</if>
+            <if test="startMonth != null ">AND t1.start_month = #{startMonth}</if>
+            <if test="endMonth != null ">AND t1.end_month = #{endMonth}</if>
+            <if test="proofUrl != null  and proofUrl != ''">AND t1.proof_url = #{proofUrl}</if>
+            <if test="contractNo != null  and contractNo != ''">AND t1.contract_no = #{contractNo}</if>
+            <if test="formDate != null ">AND t1.form_date = #{formDate}</if>
+            <if test="amount != null ">AND t1.amount = #{amount}</if>
+            <if test="verifyStatus != null ">AND t1.verify_status = #{verifyStatus}</if>
+            <if test="contractType != null ">AND t1.contract_type = #{contractType}</if>
+            <if test="serviceType != null ">AND t1.service_type = #{serviceType}</if>
+            <if test="outputDate != null ">AND t1.output_date = #{outputDate}</if>
+            <if test="monthNum != null ">AND t1.month_num = #{monthNum}</if>
+            <if test="companyName != null and companyName != '' ">AND t2.name like concat('%', #{companyName}, '%')</if>
+            <if test="verifyRemark != null  and verifyRemark != ''">AND t1.verify_remark = #{verifyRemark}</if>
+            <if test="tenantId != null">AND t1.tenant_id = #{tenantId}</if>
+            <if test="isKeepAccount != null">AND <if test="isKeepAccount == 0">not</if> exists (select 1 from
+                biz_archive_input_detail t5 where t5.deleted = 0 and t5.contract_id = t1.id and t5.task_type_id = 1)
+            </if>
+            <if test="isSocialSecurity != null">AND <if test="isSocialSecurity == 0">not</if> exists (select 1 from
+                biz_archive_input_detail t5 where t5.deleted = 0 and t5.contract_id = t1.id and t5.task_type_id = 2)
+            </if>
+            <if test="isHousingFund != null">AND <if test="isHousingFund == 0">not</if> exists (select 1 from
+                biz_archive_input_detail t5 where t5.deleted = 0 and t5.contract_id = t1.id and t5.task_type_id = 3)
+            </if>
+            <if test="isReturnTax != null">AND <if test="isReturnTax == 0">not</if> exists (select 1 from
+                biz_archive_input_detail t5 where t5.deleted = 0 and t5.contract_id = t1.id and t5.task_type_id = 4)
+            </if>
+            <if test="isRegister != null">AND <if test="isRegister == 0">not</if> exists (select 1 from
+                biz_archive_input_detail t5 where t5.deleted = 0 and t5.contract_id = t1.id and t5.task_type_id = 5)
+            </if>
+            <if test="isAlter != null">AND <if test="isAlter == 0">not</if> exists (select 1 from
+                biz_archive_input_detail t5 where t5.deleted = 0 and t5.contract_id = t1.id and t5.task_type_id = 6)
+            </if>
+            <if test="isLogout != null">AND <if test="isLogout == 0">not</if> exists (select 1 from
+                biz_archive_input_detail t5 where t5.deleted = 0 and t5.contract_id = t1.id and t5.task_type_id = 7)
+            </if>
+            <if test="isQualified != null">AND <if test="isQualified == 0">not</if> exists (select 1 from
+                biz_archive_input_detail t5 where t5.deleted = 0 and t5.contract_id = t1.id and t5.task_type_id = 8)
+            </if>
+            <if test="isOther != null">AND <if test="isOther == 0">not</if> exists (select 1 from
+                biz_archive_input_detail t5 where t5.deleted = 0 and t5.contract_id = t1.id and t5.task_type_id = 9)
+            </if>
         </trim>
     </select>
 
@@ -72,7 +112,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="id != null">
                 id = #{id} AND
             </if>
-       <!-- 删除条件为其他外键可以在这里加 -->
+            <!-- 删除条件为其他外键可以在这里加 -->
         </trim>
     </delete>
 </mapper>

+ 51 - 0
src/main/resources/mybatis/business/BizCollectionMapper.xml

@@ -0,0 +1,51 @@
+<?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="cn.ezhizao.project.business.collection.mapper.BizCollectionMapper">
+
+    <resultMap type="cn.ezhizao.project.business.collection.domain.BizCollection" id="BizCollectionResult">
+        <id column="id" property="id"/>
+    </resultMap>
+
+
+    <select id="getList" parameterType="BizCollection" resultMap="BizCollectionResult">
+        SELECT * FROM biz_collection
+        <trim prefix=" WHERE" suffix="" suffixOverrides="AND">
+            deleted = 0
+            <if test="flowNo != null  and flowNo != ''"> AND flow_no = #{flowNo}</if>
+            <if test="subsidiary != null  and subsidiary != ''"> AND subsidiary = #{subsidiary}</if>
+            <if test="subsidiaryName != null  and subsidiaryName != ''"> AND subsidiary_name like concat('%', #{subsidiaryName}, '%')</if>
+            <if test="subsidiaryBankAccount != null  and subsidiaryBankAccount != ''"> AND subsidiary_bank_account = #{subsidiaryBankAccount}</if>
+            <if test="subsidiaryBankName != null  and subsidiaryBankName != ''"> AND subsidiary_bank_name like concat('%', #{subsidiaryBankName}, '%')</if>
+            <if test="companyName != null  and companyName != ''"> AND company_name like concat('%', #{companyName}, '%')</if>
+            <if test="amount != null "> AND amount = #{amount}</if>
+            <if test="arriveAmount != null "> AND arrive_amount = #{arriveAmount}</if>
+            <if test="arriveDate != null "> AND arrive_date = #{arriveDate}</if>
+            <if test="contractId != null "> AND contract_id = #{contractId}</if>
+            <if test="arriveTime != null  and arriveTime != ''"> AND arrive_time = #{arriveTime}</if>
+            <if test="status != null "> AND status = #{status}</if>
+            <if test="verifyDate != null "> AND verify_date = #{verifyDate}</if>
+            <if test="verifyComment != null  and verifyComment != ''"> AND verify_comment = #{verifyComment}</if>
+            <if test="arriveStatus != null "> AND arrive_status = #{arriveStatus}</if>
+            <if test="applyName != null  and applyName != ''"> AND apply_name like concat('%', #{applyName}, '%')</if>
+            <if test="appyAccount != null  and appyAccount != ''"> AND appy_account = #{appyAccount}</if>
+            <if test="isNew != null "> AND is_new = #{isNew}</if>
+            <if test="isProject != null "> AND is_project = #{isProject}</if>
+            <if test="projectNo != null  and projectNo != ''"> AND project_no = #{projectNo}</if>
+            <if test="projectName != null  and projectName != ''"> AND project_name like concat('%', #{projectName}, '%')</if>
+            <if test="projectMainName != null  and projectMainName != ''"> AND project_main_name like concat('%', #{projectMainName}, '%')</if>
+            <if test="actuallyDate != null "> AND actually_date = #{actuallyDate}</if>
+        </trim>
+    </select>
+
+    <delete id="physicalDelete">
+        DELETE FROM biz_collection
+        <trim prefix=" WHERE" suffix="" suffixOverrides="AND">
+            <if test="id != null">
+                id = #{id} AND
+            </if>
+       <!-- 删除条件为其他外键可以在这里加 -->
+        </trim>
+    </delete>
+</mapper>

+ 21 - 0
src/main/resources/mybatis/business/BizWorkOrderDetailMapper.xml

@@ -6,6 +6,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <resultMap type="cn.ezhizao.project.business.workOrder.domain.BizWorkOrderDetail" id="BizWorkOrderDetailResult">
         <id column="id" property="id"/>
+        <result column="contract_id" jdbcType="BIGINT" property="contractId"/>
+        <association property="totalityMoney" javaType="java.math.BigDecimal" select="getTotalityMoney" column="contract_id"/>
+        <association property="accountsReceivable" javaType="java.math.BigDecimal" select="getAccountsReceivable" column="contract_id"/>
     </resultMap>
 
 
@@ -22,6 +25,24 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </trim>
     </select>
 
+    <select id="getTotalityMoney" resultType="java.math.BigDecimal">
+        SELECT SUM(amount)FROM biz_collection
+        <trim prefix=" WHERE" suffix="" suffixOverrides="AND">
+        deleted= 0
+        AND  status = 1
+        <if test="contractId!= null "> AND contract_id =#{contractId}</if>
+
+        </trim>
+    </select>
+
+    <select id="getAccountsReceivable" resultType="java.math.BigDecimal">
+        SELECT true_amount FROM biz_archive_input
+        <trim prefix=" WHERE" suffix="" suffixOverrides="AND">
+            deleted= 0
+            <if test="contractId!= null "> AND id =#{contractId}</if>
+        </trim>
+    </select>
+
     <delete id="physicalDelete">
         DELETE FROM biz_work_order_detail
         <trim prefix=" WHERE" suffix="" suffixOverrides="AND">

+ 25 - 0
src/main/resources/mybatis/business/BizWorkOrderMapper.xml

@@ -22,6 +22,7 @@
             <if test="tenantId != null "> AND t1.tenant_id = #{tenantId}</if>
             <if test="companyId != null "> AND t1.company_id = #{companyId}</if>
             <if test="type != null ">AND t1.type = #{type}</if>
+            <if test=" serviceId != null">AND t1.service_id = #{serviceId}</if>
             <if test="noContract != null ">AND t1.no_contract = #{noContract}</if>
             <if test="workOrderNo != null  and workOrderNo != ''">AND t1.work_order_no = #{workOrderNo}</if>
             <if test="startMonth != null ">AND t1.start_month = #{startMonth}</if>
@@ -61,6 +62,30 @@
         </trim>
     </select>
 
+    <select id="getIndexList" parameterType="BizWorkOrder" resultMap="BizWorkOrderResult">
+        SELECT t1.*,t2.name as company_name, t2.social_credit_code, t3.name as task_type_name, t4.name as
+        task_type_detail_name, t5.nick_name as service_name, t2.is_zero
+        FROM biz_work_order t1
+        left join biz_company t2 on t2.id = t1.company_id
+        left join biz_task_type t3 on t3.id = t1.task_type_id
+        left join biz_task_type_detail t4 on t4.id = t1.task_type_detail_id
+        left join sys_user t5 on t5.user_id = t1.service_id
+        <trim prefix=" WHERE" suffix="" suffixOverrides="AND">
+            t1.deleted = 0
+            <if test="id != null "> AND t1.id = #{id}</if>
+            <if test="tenantId != null "> AND t1.tenant_id = #{tenantId}</if>
+            <if test="companyId != null "> AND t1.company_id = #{companyId}</if>
+            <if test="tenantId != null "> AND t1.tenant_id = #{tenantId}</if>
+            <if test=" serviceId != null">AND t1.service_id = #{serviceId}</if>
+            <if test="workOrderNo != null  and workOrderNo != ''">AND t1.work_order_no = #{workOrderNo}</if>
+            <if test="companyName != null and companyName != '' "> AND t2.name like concat('%', #{companyName}, '%')</if>
+            AND NOT EXISTS (
+            SELECT 1 FROM biz_entrust t7 WHERE t7.work_order_id =t1.id
+            )
+        </trim>
+
+    </select>
+
     <delete id="physicalDelete">
         DELETE FROM biz_work_order
         <trim prefix=" WHERE" suffix="" suffixOverrides="AND">