ezhizao_zx 1 jaar geleden
bovenliggende
commit
706823d123

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

@@ -1,7 +1,11 @@
 package cn.ezhizao.project.business.collection.domain;
 
 import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.Date;
+import java.util.List;
+
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.baomidou.mybatisplus.annotation.TableName;
 import cn.ezhizao.framework.web.domain.BaseEntity;
@@ -40,6 +44,10 @@ public class BizCollection extends BaseEntity
     @ApiModelProperty(value = "服务公司账户")
     private String subsidiaryName;
 
+    @ApiModelProperty(value = "从表biz_collection")
+    @TableField(exist = false)
+    private List<BizCollectionDetail> details = new ArrayList<>();
+
     /** 服务公司账号 */
     @Excel(name = "服务公司账号")
     @ApiModelProperty(value = "服务公司账号")

+ 87 - 0
src/main/java/cn/ezhizao/project/business/collection/domain/BizCollectionDetail.java

@@ -0,0 +1,87 @@
+package cn.ezhizao.project.business.collection.domain;
+
+import cn.ezhizao.framework.web.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * @author 朱汕
+ */
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("channel_detail 收款合同明细")
+public class BizCollectionDetail extends BaseEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+    @ApiModelProperty(value = "收款主表id")
+    private Long collectionId;
+
+    @ApiModelProperty(value = "合同外键")
+    private Long contractId;
+
+    @ApiModelProperty("合同明细外键")
+    private Long contractDetailId;
+
+    @ApiModelProperty(value = "客户外键")
+    private Long customerId;
+
+    @ApiModelProperty(value = "产品外键")
+    private Long taskTypeId;
+
+    @ApiModelProperty(value = "购买数量")
+    private BigDecimal buyNum;
+
+    @ApiModelProperty(value = "赠送数量")
+    private BigDecimal freeNum;
+
+    @ApiModelProperty(value = "数量单位")
+    private String unit;
+
+    @ApiModelProperty(value = "总价")
+    private BigDecimal amount;
+
+    @ApiModelProperty(value = "优惠金额")
+    private BigDecimal discountAmount;
+
+    @ApiModelProperty(value = "成交价格")
+    private BigDecimal dealPrice;
+
+    @ApiModelProperty(value = "预估成本")
+    private BigDecimal estimateCost;
+
+    @ApiModelProperty(value = "收款金额")
+    private BigDecimal arriveAmount;
+
+     /** 虚字段 */
+    @ApiModelProperty(value = "客户")
+    @TableField(exist = false)
+    private String customerName;
+
+
+    @ApiModelProperty(value = "产品")
+    @TableField(exist = false)
+    private String taskTypeName;
+
+    @TableField(exist = false)
+    private BigDecimal arrived;
+
+    @TableField(exist = false)
+    private String forRenew;
+
+    @ApiModelProperty("账套外键")
+    private Long tenantId;
+    @TableField(exist = false)
+    private List<Long> collectionIds;
+    @TableField(exist = false)
+    private List<Long> ids;
+    @TableField(exist = false)
+    private Integer verifyStatus;
+}

+ 51 - 0
src/main/java/cn/ezhizao/project/business/collection/mapper/BizCollectionDetailMapper.java

@@ -0,0 +1,51 @@
+package cn.ezhizao.project.business.collection.mapper;
+
+import cn.ezhizao.project.business.collection.domain.BizCollectionDetail;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author 朱汕
+ */
+@Mapper
+public interface BizCollectionDetailMapper extends BaseMapper<BizCollectionDetail> {
+
+    /**
+     * 带条件的查询
+     *
+     * @param conditions 条件
+     * @return List 集合
+     */
+    List<BizCollectionDetail> getList(Map<String, Object> conditions);
+
+    /**
+     * 根据Bean查询 列表
+     *
+     * @param collectionDetail 实体类对象
+     * @return List 集合
+     */
+    List<BizCollectionDetail> getList(BizCollectionDetail collectionDetail);
+
+    /**
+     * 带条件的查询总数
+     *
+     * @param conditions 条件
+     * @return int 查询总数量
+     */
+    int getTotal(Map<String, Object> conditions);
+
+    /**
+     * 物理删除,根据条件删除
+     *
+     * @param conditions 条件
+     * @return int 执行成功的数量
+     */
+    Integer physicallyDelete(BizCollectionDetail conditions);
+
+    void remove(List<Long> ids);
+}
+
+

+ 46 - 0
src/main/java/cn/ezhizao/project/business/collection/service/IBizCollectionDetailService.java

@@ -0,0 +1,46 @@
+package cn.ezhizao.project.business.collection.service;
+
+import cn.ezhizao.project.business.collection.domain.BizCollectionDetail;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author 朱汕
+ */
+public interface IBizCollectionDetailService extends IService<BizCollectionDetail> {
+
+    /**
+     * 根据Bean查询 列表
+     *
+     * @param collectionDetail 实体类对象
+     * @return List 集合
+     */
+    List<BizCollectionDetail> getListByBean(BizCollectionDetail collectionDetail);
+
+
+    /**
+     * 带条件的查询
+     *
+     * @param conditions 条件
+     * @return List 集合
+     */
+    List<BizCollectionDetail> getList(Map<String, Object> conditions);
+
+    /**
+     * 带条件的查询总数
+     *
+     * @param conditions 条件
+     * @return int 查询总数量
+     */
+    int getTotal(Map<String, Object> conditions);
+
+    /**
+     * 物理删除,根据条件删除
+     *
+     * @param conditions 条件
+     * @return int 执行成功的数量
+     */
+    Integer physicallyDelete(BizCollectionDetail conditions);
+}

+ 42 - 0
src/main/java/cn/ezhizao/project/business/collection/service/impl/BizCollectionDetailServiceImpl.java

@@ -0,0 +1,42 @@
+package cn.ezhizao.project.business.collection.service.impl;
+import cn.ezhizao.project.business.collection.domain.BizCollectionDetail;
+import cn.ezhizao.project.business.collection.mapper.BizCollectionDetailMapper;
+import cn.ezhizao.project.business.collection.service.IBizCollectionDetailService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author 朱汕
+ */
+
+@Service
+public class BizCollectionDetailServiceImpl extends ServiceImpl<BizCollectionDetailMapper, BizCollectionDetail> implements IBizCollectionDetailService {
+
+
+    @Resource
+    BizCollectionDetailMapper collectionDetailDao;
+
+    @Override
+    public List<BizCollectionDetail> getList(Map<String,Object> conditions) {
+        return collectionDetailDao.getList(conditions);
+    }
+
+    @Override
+    public List<BizCollectionDetail> getListByBean(BizCollectionDetail collectionDetail) {
+        return collectionDetailDao.getList(collectionDetail);
+    }
+
+    @Override
+    public int getTotal(Map<String,Object> conditions) {
+        return collectionDetailDao.getTotal(conditions);
+    }
+
+    @Override
+    public Integer physicallyDelete(BizCollectionDetail conditions) {
+        return collectionDetailDao.physicallyDelete(conditions);
+    }
+}

+ 5 - 4
src/main/java/cn/ezhizao/project/business/company/controller/BizCompanyController.java

@@ -194,9 +194,10 @@ public class BizCompanyController extends BaseController
         util.importTemplateExcel(response, "客户数据", StringUtils.EMPTY, new String[]{"name", "sourceCategoryName", "sourceName","leaderName","adviserName"});
     }
 
+    //设置客服
     @PostMapping("/setCompanyAdviser")
-    @PreAuthorize("@ss.hasPermi('business:company:edit')")
-    @Log(title = "company", businessType = BusinessType.UPDATE)
+    @PreAuthorize("@ss.hasPermi('business:company:adviser')")
+    @Log(title = "设置客服", businessType = BusinessType.UPDATE)
     public AjaxResult setCompanyAdviser(@RequestBody BizCompany company) {
         List<Long> ids = company.getIds();
         Long adviserId = company.getAdviserId();
@@ -208,8 +209,8 @@ public class BizCompanyController extends BaseController
     }
 
     @PostMapping("/setCompanyLeader")
-    @PreAuthorize("@ss.hasPermi('business:company:edit')")
-    @Log(title = "company", businessType = BusinessType.UPDATE)
+    @PreAuthorize("@ss.hasPermi('business:company:leader')")
+    @Log(title = "设置负责人", businessType = BusinessType.UPDATE)
     public AjaxResult setCompanyLeader(@RequestBody BizCompany company) {
         List<Long> ids = company.getIds();
         Long leaderId = company.getLeaderId();

+ 38 - 4
src/main/java/cn/ezhizao/project/business/workOrder/controller/BizWorkOrderController.java

@@ -14,20 +14,20 @@ 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.domain.BizCollectionDetail;
+import cn.ezhizao.project.business.collection.service.IBizCollectionDetailService;
 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.domain.BizWorkOrderNoContract;
 import cn.ezhizao.project.business.workOrder.service.IBizWorkOrderDetailService;
+import com.baomidou.mybatisplus.extension.conditions.query.QueryChainWrapper;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -64,6 +64,8 @@ public class BizWorkOrderController extends BaseController {
 
     @Resource
     private BizCollectionServiceImpl bizCollectionService;
+    @Resource
+    private IBizCollectionDetailService bizCollectionDetailService;
 
     @Resource
     private SnowflakeIdWorker snowflakeIdWorker;
@@ -156,10 +158,42 @@ public class BizWorkOrderController extends BaseController {
                         Integer monthNum = 0;
                         //如果只有一个合同
                         if (detailList.size() == 1) {
+
                             //且收款金额为0
-                            if (detailList.get(0).getTotalityMoney() == null || detailList.get(0).getTotalityMoney().compareTo(new BigDecimal(0)) == 0) {
+                            detailList.get(0).setTotalityMoney(detailList.get(0).getTotalityMoney() == null ? new BigDecimal(0) : detailList.get(0).getTotalityMoney());
+                            if (detailList.get(0).getTotalityMoney().compareTo(new BigDecimal(0)) == 0) {
                                 v.setClosingMonth("未收款");
+                            } else if (detailList.get(0).getTotalityMoney().compareTo(detailList.get(0).getAccountsReceivable()) >= 0) {
+                                v.setClosingMonth("已收款");
+                            } else {
+                                List<BizCollection>  collectionList = new ArrayList<>();
+                                BizCollection  collection=new BizCollection();
+                                collection.setContractId(detailList.get(0).getContractId());
+                                collectionList = bizCollectionService.getList(collection);
+                                if(collectionList.size() > 0) {
+                                    BizCollectionDetail collectionDetails = new BizCollectionDetail();
+                                    collectionDetails.setContractId(detailList.get(0).getContractId());
+                                    collectionDetails.setTaskTypeId(detailList.get(0).getTaskTypeId());
+                                    collectionDetails.setCollectionId(collectionList.get(0).getId());
+                                    List<BizCollectionDetail>  collectionDetail = bizCollectionDetailService.getListByBean(collectionDetails);
+
+                                    for (BizCollectionDetail d : collectionDetail) {
+                                        if(d.getTaskTypeId()== detailList.get(0).getTaskTypeId()) {
+                                            if(d.getAmount().compareTo(d.getArriveAmount())<=0){
+                                                v.setClosingMonth("已收款");
+                                            }else if (d.getAmount().compareTo(d.getArriveAmount())>0&&d.getArriveAmount().compareTo(new BigDecimal(0))!=0) {
+                                                v.setClosingMonth("部分收款");
+                                            } else if (d.getArriveAmount()==new BigDecimal(0)) {
+                                                v.setClosingMonth("未收款");
+                                            }else{
+                                                v.setClosingMonth("未收款");
+                                            }
+                                        }
+                                    }
+                                }
+
                             }
+
                         } else {
                             //根据单价计算月数
                             for (BizWorkOrderDetail d : detailList) {

+ 107 - 0
src/main/resources/mybatis/business/BizCollectionDetailMapper.xml

@@ -0,0 +1,107 @@
+<?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.BizCollectionDetailMapper">
+    <!-- 基础的返回map 多表复杂的 自行组合 -->
+    <resultMap id="BaseResultMap" type="cn.ezhizao.project.business.collection.domain.BizCollectionDetail">
+    </resultMap>
+
+    <!--带条件的List查询-->
+    <select id="getList" resultMap="BaseResultMap">
+        <include refid="getListSql"/>
+    </select>
+
+    <!--带条件的List查询 数据总条数-->
+    <select id="getTotal" resultType="java.lang.Integer">
+        SELECT COUNT(1) FROM (<include refid="getListSql"/>) AS C
+    </select>
+
+    <sql id="getListSql">
+        SELECT
+        t1.id,
+        t1.contract_detail_id,
+        t1.collection_id,
+        t1.collection_contract_id,
+        t1.task_type_id,
+        t1.customer_id,
+        t1.contract_id,
+        t1.arrive_amount,
+        t4.amount as amount,
+        t3.name AS company_name,
+        t2.name AS task_type_name,
+        (select sum(cd.arrive_amount) from biz_collection_detail cd left join biz_collection c on c.id = cd.collection_id
+        where cd.contract_detail_id = t1.contract_detail_id
+            and cd.deleted = 0 and t1.contract_id = cd.contract_id and c.status = 1) arrived
+        FROM
+        biz_collection_detail t1
+        left join biz_collection c on c.id = t1.collection_id
+        left join biz_task_type t2 on t2.id = t1.task_type_id
+        LEFT JOIN
+        biz_company t3 on t1.customer_id = t3.id
+        left join biz_archive_input_detail t4 on t4.id = t1.contract_detail_id
+        <trim prefix=" WHERE" suffix="" suffixOverrides="AND">
+            t1.deleted = 0 AND
+            <if test="id != null  ">
+                t1.id = #{id} AND
+            </if>
+            <if test="collectionId != null  ">
+                t1.collection_id = #{collectionId} AND
+            </if>
+            <if test="tenantId != null">
+                t1.tenant_id = #{tenantId} AND
+            </if>
+            <if test="collectionIds != null and collectionIds.size > 0 ">
+                collection_id in
+                <foreach collection="collectionIds" index="index" item="item" separator=","  open="(" close=")">
+                    #{item,jdbcType=BIGINT}
+                </foreach>
+                AND
+            </if>
+            <if test="contractDetailId != null">
+                t1.contract_detail_id = #{contractDetailId} AND
+            </if>
+            <if test="verifyStatus != null">
+                c.status = #{verifyStatus} AND
+            </if>
+            <if test="contractId != null  ">
+                t1.contract_id = #{contractId} AND
+            </if>
+            <if test="customerId != null  ">
+                t1.customer_id = #{customerId} AND
+            </if>
+            <if test="taskTypeId != null  ">
+                t1.task_type_id = #{taskTypeId} AND
+            </if>
+            <if test="remark != null  and remark != '' ">
+                t1.remark = #{remark} AND
+            </if>
+            <if test="ids != null  ">
+                t1.contract_id IN
+                <foreach collection="ids" index="index" item="item" separator="," open="(" close=")">
+                    #{item,jdbcType=BIGINT}
+                </foreach>
+                AND
+            </if>
+        </trim>
+    </sql>
+    <!--根据主表id,删除 为的是表单保存时,明细统一物理删除后,再统一插入-->
+    <update id="remove">
+        UPDATE biz_collection_detail
+        SET deleted=1
+        WHERE collection_id in
+        <foreach collection="ids" item="id" index="index" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
+    <!--根据主表id,删除 为的是表单保存时,明细统一物理删除后,再统一插入-->
+    <delete id="physicallyDelete">
+        DELETE FROM
+        biz_collection_detail
+        WHERE id > 0
+        <if test="id != null">
+            AND id = #{id}
+        </if>
+        <if test="collectionId != null">
+            AND collection_id = #{collectionId}
+        </if>
+    </delete>
+</mapper>

+ 1 - 1
src/main/resources/mybatis/business/BizWorkOrderDetailMapper.xml

@@ -27,7 +27,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </select>
 
     <select id="getTotalityMoney" resultType="java.math.BigDecimal">
-        SELECT SUM(amount)FROM biz_collection
+        SELECT SUM(arrive_amount)FROM biz_collection
         <trim prefix=" WHERE" suffix="" suffixOverrides="AND">
         deleted= 0
         AND  status = 1