From b67ebbde7671abdf4f69a57d7f670ef2bb486178 Mon Sep 17 00:00:00 2001
From: 侯瑞军 <411269194@kidgrow.com>
Date: Mon, 13 Apr 2020 12:45:02 +0800
Subject: [PATCH] 1.增加产品消费详情列表功能 2.增加产品消费统计功能列表 3.修改合同管理显示字段

---
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ProductOrderDetailController.java |   68 +++++++
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IProductOrderDetailService.java         |   22 ++
 /dev/null                                                                                                                                                     |    0 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/vo/ProductOrderJoinDetail.java                  |   82 +++++++++
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/productdetail.html                                                                   |  117 +++++++++++++
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/vo/GroupProductDetail.java                      |   30 +++
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ProductOrderController.java       |    4 
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/contract.html                                                                        |    2 
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/groupProduct.html                                                                    |   74 ++++++++
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/ProductOrderDetailMapper.java            |   21 +
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/ProductOrderDetailMapper.xml                                   |   51 +++++
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderDetailServiceImpl.java |   61 +++++
 12 files changed, 516 insertions(+), 16 deletions(-)

diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/vo/GroupProductDetail.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/vo/GroupProductDetail.java
new file mode 100644
index 0000000..acdc134
--- /dev/null
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/vo/GroupProductDetail.java
@@ -0,0 +1,30 @@
+package com.kidgrow.oprationcenter.vo;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
+ *
+ * @Description: <br>
+ * @Project: <br>
+ * @CreateDate: Created in 2020/04/13 10:28 <br>
+ * @Author: <a href="411269194@kidgrow.com">liuke</a>
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class GroupProductDetail extends Model<GroupProductDetail> {
+    //实体序列化  必要
+    private static final long serialVersionUID = 1L;
+    /**
+     * 产品数量
+     */
+    private Long proCount;
+    /**
+     * 产品/明细名称
+     */
+    private String proName;
+}
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/vo/ProductOrderJoinDetail.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/vo/ProductOrderJoinDetail.java
new file mode 100644
index 0000000..f9e718b
--- /dev/null
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/vo/ProductOrderJoinDetail.java
@@ -0,0 +1,82 @@
+package com.kidgrow.oprationcenter.vo;
+
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+/**
+ * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
+ *
+ * @Description: <br>
+ * @Project: <br>
+ * @CreateDate: Created in 2020/04/10 18:38 <br>
+ * @Author: <a href="411269194@kidgrow.com">liuke</a>
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ProductOrderJoinDetail extends Model<ProductOrderJoinDetail> {
+    //实体序列化  必要
+    private static final long serialVersionUID = 1L;
+    /**
+     * 对应product_order_detail表中的id
+     */
+    private Long id;
+    /**
+     * 对应product_order表中的id
+     */
+    private Long orderId;
+    /**
+     * 产品/明细ID
+     */
+    private Long proId;
+    /**
+     * 产品/明细名称
+     */
+    private String proName;
+    /**
+     * 医院名称
+     */
+    private String hospitalName;
+    /**
+     * 科室名称
+     */
+    private String departmentName;
+    /**
+     * 是否共享 0否 1是
+     */
+    private Boolean isShare;
+    /**
+     * 读片量
+     */
+    private Integer ailightCount;
+    /**
+     * 报告量
+     */
+    private Integer recordCount;
+    /**
+     * 有效的开始时间
+     */
+    private Date proBegintime;
+    /**
+     * 有效的结束时间
+     */
+    private Date proEndtime;
+    /**
+     *创建时间
+     */
+    private Date createTime;
+    /**
+     * 是否删除,1删除,0未删除
+     */
+    @TableLogic
+    private Boolean isDel;
+    /**
+     * 状态,1启用,0停用
+     */
+    private Boolean enabled;
+}
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/ProductOrderDetailMapper.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/ProductOrderDetailMapper.java
index 3ea3515..69a2150 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/ProductOrderDetailMapper.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/ProductOrderDetailMapper.java
@@ -1,8 +1,10 @@
 package com.kidgrow.oprationcenter.mapper;
 
-import com.kidgrow.oprationcenter.model.ProductOrderDetail;
-import com.kidgrow.db.mapper.SuperMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.kidgrow.db.mapper.SuperMapper;
+import com.kidgrow.oprationcenter.model.ProductOrderDetail;
+import com.kidgrow.oprationcenter.vo.GroupProductDetail;
+import com.kidgrow.oprationcenter.vo.ProductOrderJoinDetail;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -24,11 +26,22 @@
      * @return
      */
     List<ProductOrderDetail> findList(Page<ProductOrderDetail> page, @Param("p") Map<String, Object> params);
-
+    /**
+     * 分页查询产品/明显的充值记录列表
+     * @param page
+     * @param params
+     * @return
+     */
+    List<ProductOrderJoinDetail> findAllList(Page<ProductOrderJoinDetail> page, @Param("p") Map<String, Object> params);
     /**
      * 根据ProductOrderDetail对象当做查询条件进行查询
      * @param
      * @return ProductOrderDetail对象
      */
-    ProductOrderDetail findByObject(@Param("p") ProductOrderDetail productOrderDetail);
+    ProductOrderDetail findByObject(@Param("p") ProductOrderDetail productOrderDetail);/**
+     * 统计产品使用量
+     * @param
+     * @return ProductOrderDetail对象
+     */
+    List<GroupProductDetail> groupProductDetail(Page<GroupProductDetail> page, @Param("p") Map<String, Object> params);
 }
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IProductOrderDetailService.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IProductOrderDetailService.java
index c703a66..24444bc 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IProductOrderDetailService.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IProductOrderDetailService.java
@@ -1,8 +1,11 @@
 package com.kidgrow.oprationcenter.service;
 
+import com.kidgrow.common.model.ResultBody;
 import com.kidgrow.oprationcenter.model.ProductOrderDetail;
 import com.kidgrow.common.model.PageResult;
 import com.kidgrow.common.service.ISuperService;
+import com.kidgrow.oprationcenter.vo.GroupProductDetail;
+import com.kidgrow.oprationcenter.vo.ProductOrderJoinDetail;
 
 import java.util.Map;
 
@@ -21,7 +24,18 @@
      * @return
      */
     PageResult<ProductOrderDetail> findList(Map<String, Object> params);
-
+    /**
+     * 列表
+     * @param params
+     * @return
+     */
+    PageResult<ProductOrderJoinDetail> findAllList(Map<String, Object> params);
+    /**
+     * 统计产品使用量列表
+     * @param params
+     * @return
+     */
+    PageResult<GroupProductDetail> groupList(Map<String, Object> params);
 
     /**
     * 根据ProductOrderDetail对象当做查询条件进行查询
@@ -29,6 +43,12 @@
     * @return ProductOrderDetail对象
     */
     ProductOrderDetail findByObject(ProductOrderDetail productOrderDetail);
+    /**
+     * 状态变更
+     * @param params
+     * @return
+     */
+    ResultBody updateEnabled(Map<String, Object> params);
 
 }
 
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderDetailServiceImpl.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderDetailServiceImpl.java
index 2a63e1b..50fa2c3 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderDetailServiceImpl.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderDetailServiceImpl.java
@@ -1,18 +1,21 @@
 package com.kidgrow.oprationcenter.service.impl;
 
-import org.springframework.stereotype.Service;
-import com.kidgrow.common.model.PageResult;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.kidgrow.common.model.PageResult;
+import com.kidgrow.common.model.ResultBody;
 import com.kidgrow.common.service.impl.SuperServiceImpl;
+import com.kidgrow.oprationcenter.mapper.ProductOrderDetailMapper;
+import com.kidgrow.oprationcenter.model.ProductOrderDetail;
+import com.kidgrow.oprationcenter.service.IProductOrderDetailService;
+import com.kidgrow.oprationcenter.vo.GroupProductDetail;
+import com.kidgrow.oprationcenter.vo.ProductOrderJoinDetail;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.MapUtils;
+import org.springframework.stereotype.Service;
 
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
-import org.apache.commons.collections4.MapUtils;
-import lombok.extern.slf4j.Slf4j;
-
-import com.kidgrow.oprationcenter.model.ProductOrderDetail;
-import com.kidgrow.oprationcenter.mapper.ProductOrderDetailMapper;
-import com.kidgrow.oprationcenter.service.IProductOrderDetailService;
 
 /**
  * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
@@ -36,6 +39,29 @@
         List<ProductOrderDetail> list  =  baseMapper.findList(page, params);
         return PageResult.<ProductOrderDetail>builder().data(list).code(0).count(page.getTotal()).build();
     }
+    /**
+     * 列表
+     * @param params
+     * @return
+     */
+    @Override
+    public PageResult<ProductOrderJoinDetail> findAllList(Map<String, Object> params) {
+        Page<ProductOrderJoinDetail> page = new Page<>(MapUtils.getInteger(params, "page"), MapUtils.getInteger(params, "limit"));
+        List<ProductOrderJoinDetail> list  =  baseMapper.findAllList(page,params);
+        return PageResult.<ProductOrderJoinDetail>builder().data(list).code(0).count(page.getTotal()).build();
+    }
+
+    /**
+     * 获取统计数据
+     * @param params
+     * @return
+     */
+    @Override
+    public PageResult<GroupProductDetail> groupList(Map<String, Object> params) {
+        Page<GroupProductDetail> page = new Page<>(MapUtils.getInteger(params, "page"), MapUtils.getInteger(params, "limit"));
+        List<GroupProductDetail> list  =  baseMapper.groupProductDetail(page,params);
+        return PageResult.<GroupProductDetail>builder().data(list).code(0).count(page.getTotal()).build();
+    }
 
     /**
    * 根据ProductOrderDetail对象当做查询条件进行查询
@@ -46,4 +72,23 @@
     public ProductOrderDetail findByObject(ProductOrderDetail productOrderDetail){
         return baseMapper.findByObject(productOrderDetail);
     }
+    /**
+     * 修改数据状态 启用 禁用
+     * @param params
+     * @return
+     */
+    @Override
+    public ResultBody updateEnabled(Map<String, Object> params) {
+        Long id = MapUtils.getLong(params, "id");
+        Boolean enabled = MapUtils.getBoolean(params, "enabled");
+
+        ProductOrderDetail productOrder = baseMapper.selectById(id);
+        if (productOrder == null) {
+            return ResultBody.failed("该数据不存在!");
+        }
+        productOrder.setEnabled(enabled);
+        productOrder.setUpdateTime(new Date());
+        int i = baseMapper.updateById(productOrder);
+        return i > 0 ? ResultBody.ok().data(productOrder).msg("更新成功") : ResultBody.failed("更新失败");
+    }
 }
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/ProductOrderDetailMapper.xml b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/ProductOrderDetailMapper.xml
index 3553e0c..0ad53bf 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/ProductOrderDetailMapper.xml
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/ProductOrderDetailMapper.xml
@@ -84,4 +84,55 @@
         <include refid="where"/>
         order by id desc
     </select>
+    <!--sql查询片段-->
+    <sql id="wherelimit">
+        <where>
+            <!--查询条件自行添加-->
+            DE.is_del=0
+            <if test="p.id != null and p.id !=''">
+                and id = #{p.id}
+            </if>
+            <if test="p.hospitalName != null and p.hospitalName !=''">
+                and PRO.hospital_name like concat ('%',#{p.hospitalName},'%')
+            </if>
+            <if test="p.proName != null and p.proName !=''">
+                and DE.pro_name like concat ('%',#{p.proName},'%')
+            </if>
+            <if test="p.createTime != null and p.createTime !='' and p.updateTime != null and p.updateTime !=''">
+                and (DE.create_time between #{p.createTime} and #{p.updateTime})
+            </if>
+        </where>
+    </sql>
+    <!--查询产品的消费记录-->
+    <select id="findAllList" resultType="com.kidgrow.oprationcenter.vo.ProductOrderJoinDetail">
+        SELECT
+        DE.id,
+        DE.ailight_count,
+        DE.order_id,
+        DE.pro_name,
+        DE.record_count,
+        DE.is_share,
+        DE.pro_begintime,
+        DE.pro_endtime,
+        DE.pro_id,
+        DE.create_time,
+        DE.is_del,
+        DE.enabled,
+        PRO.hospital_name,
+        PRO.department_name
+        FROM
+        product_order_detail DE
+        LEFT JOIN product_order PRO ON DE.order_id = PRO.id
+        <include refid="wherelimit"/>
+        order by DE.id desc
+    </select>
+    <select id="groupProductDetail" resultType="com.kidgrow.oprationcenter.vo.GroupProductDetail">
+        select
+        COUNT(DE.pro_id) pro_count,
+        max(DE.pro_name) pro_name
+        from product_order_detail AS DE
+        <include refid="wherelimit"/>
+        GROUP BY DE.pro_id
+        order by pro_count desc
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ProductOrderController.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ProductOrderController.java
index 80f070e..fe8ae77 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ProductOrderController.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ProductOrderController.java
@@ -110,7 +110,7 @@
         boolean v = productOrderService.removeById(id);
         if (v) {
             if (!businessRecordsService.recordBusinessData("删除合同:"+id,id.toString())) {
-                log.error(String.format("删除合同编号为:{0}的数据后,写入业务日志失败!",id));
+                //log.error(String.format("删除合同编号为:{0}的数据后,写入业务日志失败!",id));
 
             }
             return ResultBody.ok().msg("删除成功");
@@ -140,7 +140,7 @@
         if (resultBody.getCode()==0) {
             String enablad=(MapUtils.getBoolean(params, "enabled"))?"启用":"禁用";
             if (!businessRecordsService.recordBusinessData("修改合同状态为:"+enablad,enablad)) {
-                log.error(String.format("修改合同状态为:{0},写入业务日志失败!合同管理id为:{1}",enablad,MapUtils.getString(params,"id")));
+                //log.error(String.format("修改合同状态为:{0},写入业务日志失败!合同管理id为:{1}",enablad,MapUtils.getString(params,"id")));
             }
         }
         return resultBody;
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ProductOrderDetailController.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ProductOrderDetailController.java
index 60f9177..a4a1d33 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ProductOrderDetailController.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ProductOrderDetailController.java
@@ -4,17 +4,20 @@
 import com.kidgrow.common.model.PageResult;
 import com.kidgrow.common.model.ResultBody;
 import com.kidgrow.oprationcenter.model.ProductOrderDetail;
+import com.kidgrow.oprationcenter.service.IBusinessRecordsService;
 import com.kidgrow.oprationcenter.service.IProductOrderDetailService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections.MapUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.BindingResult;
 import org.springframework.validation.ObjectError;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletRequest;
 import javax.validation.Valid;
 import java.util.ArrayList;
 import java.util.List;
@@ -36,6 +39,8 @@
 public class ProductOrderDetailController  extends BaseController{
     @Autowired
     private IProductOrderDetailService productOrderDetailService;
+    @Autowired
+    private IBusinessRecordsService businessRecordsService;
 
     /**
      * 列表
@@ -52,6 +57,40 @@
             params.put("limit",10);
         }
         return productOrderDetailService.findList(params);
+    }
+
+    /**
+     * 列表
+     */
+    @ApiOperation(value = "查询列表")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "page", value = "分页起始位置", required = true, dataType = "Integer"),
+            @ApiImplicitParam(name = "limit", value = "分页结束位置", required = true, dataType = "Integer")
+    })
+    @GetMapping("/all")
+    public PageResult findAllList(@RequestParam Map<String, Object> params) {
+        if(params.size()==0){
+            params.put("page",1);
+            params.put("limit",10);
+        }
+        return productOrderDetailService.findAllList(params);
+    }
+
+    /**
+     * 列表
+     */
+    @ApiOperation(value = "查询列表")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "page", value = "分页起始位置", required = true, dataType = "Integer"),
+            @ApiImplicitParam(name = "limit", value = "分页结束位置", required = true, dataType = "Integer")
+    })
+    @GetMapping("/group")
+    public PageResult groupList(@RequestParam Map<String, Object> params) {
+        if(params.size()==0){
+            params.put("page",1);
+            params.put("limit",10);
+        }
+        return productOrderDetailService.groupList(params);
     }
 
     /**
@@ -105,10 +144,39 @@
     public ResultBody delete(@PathVariable Long id) {
         boolean v= productOrderDetailService.removeById(id);
         if(v) {
+            if (!businessRecordsService.recordBusinessData("删除订单明细:"+id,id.toString())) {
+                //log.error(String.format("删除订单明细id为:{1}",id));
+            }
             return ResultBody.ok().msg("删除成功");
         }
         else {
             return ResultBody.failed().msg("删除失败");
         }
     }
+    /**
+     * 修改状态
+     *
+     * @param params
+     * @return
+     */
+    @ApiOperation(value = "修改数据状态")
+    @GetMapping("/updateEnabled")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Integer"),
+            @ApiImplicitParam(name = "enabled", value = "是否启用", required = true, dataType = "Boolean")
+    })
+    public ResultBody updateEnabled(@RequestParam Map<String, Object> params, HttpServletRequest request) {
+        if (params.size() == 0) {
+            return ResultBody.failed().msg("参数异常!");
+        }
+        ResultBody resultBody=productOrderDetailService.updateEnabled(params);
+        //记录业务日志
+        if (resultBody.getCode()==0) {
+            String enablad=(MapUtils.getBoolean(params, "enabled"))?"启用":"禁用";
+            if (!businessRecordsService.recordBusinessData("修改订单明细状态为:"+enablad,enablad)) {
+                //log.error(String.format("修改合同状态为:{0},写入业务日志失败!合同管理id为:{1}",enablad,MapUtils.getString(params,"id")));
+            }
+        }
+        return resultBody;
+    }
 }
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/contract.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/contract.html
index 1c049c2..b30cde1 100644
--- a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/contract.html
+++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/contract.html
@@ -150,7 +150,7 @@
                     { field: 'proEndtime', width: 180, title: '结束时间',templet:function(d){
                         return new Date(d.proEndtime).dateFormat("yyyy/MM/dd hh:mm:ss");
                     } },
-                    { field: 'createTime', width: 160, sort: true, title: '创建时间' },
+                    { field: 'createTime', width: 160, sort: true, title: '创建时间' }
                 ]]
             });
             }
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/groupProduct.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/groupProduct.html
new file mode 100644
index 0000000..09e5bf6
--- /dev/null
+++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/groupProduct.html
@@ -0,0 +1,74 @@
+<div class="layui-card">
+    <div class="layui-card-header">
+        <h2 class="header-title">产品消费统计</h2>
+        <span class="layui-breadcrumb pull-right">
+            <a href="#!console">首页</a>
+            <a><cite>产品消费统计</cite></a>
+        </span>
+    </div>
+    <div class="layui-card-body">
+        <div class="layui-form toolbar">&emsp;
+            <input type="text" name="date" id="datebegin" lay-verify="date" placeholder="yyyy-MM-dd" autocomplete="off"
+                class="layui-input search-input">
+            至
+            <input type="text" name="date" id="dateend" lay-verify="date" placeholder="yyyy-MM-dd" autocomplete="off"
+                class="layui-input search-input"> &emsp;
+            <button id="product-btn-search" class="layui-btn icon-btn"><i class="layui-icon">&#xe615;</i>搜索</button>
+        </div>
+        <table class="layui-table" id="product-table" lay-filter="product-table"></table>
+    </div>
+</div>
+<!-- 表格操作列 -->
+<script type="text/html" id="product-table-bar">
+    <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
+</script>
+<!-- 表格状态列 -->
+<script type="text/html" id="product-tpl-state">
+    <input type="checkbox" lay-filter="product-tpl-state" value="{{d.id}}" lay-skin="switch" lay-text="未处理|已处理"
+           {{d.enabled==true?'checked':''}}/>
+</script>
+
+<script>
+    layui.use(['table', 'config','laydate'], function () {
+        let table = layui.table;
+        let laydate = layui.laydate;
+        let config = layui.config;
+        //日期
+        laydate.render({
+            elem: '#datebegin'
+        });
+        laydate.render({
+            elem: '#dateend'
+        });
+        // 渲染表格
+        var renderTable = function () {
+            table.render({
+                elem: '#product-table',
+                url: config.base_server + 'api-opration/productorderdetail/group',
+                method: 'GET',
+                headers: { 'Authorization': 'Bearer ' + config.getToken().access_token },
+                page: true,
+                cols: [[
+                    { field: 'proName', width: 500, sort: true,title: '产品名称' },
+                    { field: 'proCount', width: 300, sort: true,title: '消费数量' }
+                ]]
+            });
+        }
+        renderTable();
+
+        // 搜索按钮点击事件
+        $('#product-btn-search').click(function () {
+            var createTime = $('#datebegin').val();
+            var updateTime = $('#dateend').val();
+            if (strUtil.isEmpty(datebegin) && !strUtil.isEmpty(updateTime)) {
+                createTime = dateUtil.getNowDate();
+                $('#datebegin').val(createTime);
+            }
+            if (!strUtil.isEmpty(createTime) && strUtil.isEmpty(updateTime)) {
+                updateTime = dateUtil.getNowDate();
+                $('#dateend').val(updateTime);
+            }
+            table.reload('product-table', { where: { createTime: createTime,updateTime: updateTime } });
+        });
+    });
+</script>
\ No newline at end of file
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/product_order.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/product_order.html
deleted file mode 100644
index e69de29..0000000
--- a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/product_order.html
+++ /dev/null
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/productdetail.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/productdetail.html
new file mode 100644
index 0000000..89896c5
--- /dev/null
+++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/productdetail.html
@@ -0,0 +1,117 @@
+<div class="layui-card">
+    <div class="layui-card-header">
+        <h2 class="header-title">产品消费记录</h2>
+        <span class="layui-breadcrumb pull-right">
+            <a href="#!console">首页</a>
+            <a><cite>产品消费记录</cite></a>
+        </span>
+    </div>
+    <div class="layui-card-body">
+        <div class="layui-form toolbar">&emsp;
+            <input id="product-search-value" class="layui-input search-input" type="text" placeholder="按产品名" />&emsp;
+            <input id="hospital-search-value" class="layui-input search-input" type="text" placeholder="按医院名" />&emsp;
+            <button id="product-btn-search" class="layui-btn icon-btn"><i class="layui-icon">&#xe615;</i>搜索</button>
+        </div>
+        <table class="layui-table" id="product-table" lay-filter="product-table"></table>
+    </div>
+</div>
+<!-- 表格操作列 -->
+<script type="text/html" id="product-table-bar">
+    <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
+</script>
+<!-- 表格状态列 -->
+<script type="text/html" id="product-tpl-state">
+    <input type="checkbox" lay-filter="product-tpl-state" value="{{d.id}}" lay-skin="switch" lay-text="未处理|已处理"
+           {{d.enabled==true?'checked':''}}/>
+</script>
+
+<script>
+    layui.use(['table', 'util', 'admin', 'config', 'form'], function () {
+        let table = layui.table;
+        let util = layui.util;
+        let admin = layui.admin;
+        let form = layui.form;
+        let config = layui.config;
+
+        // 渲染表格
+        var renderTable = function () {
+            table.render({
+                elem: '#product-table',
+                url: config.base_server + 'api-opration/productorderdetail/all',
+                method: 'GET',
+                headers: { 'Authorization': 'Bearer ' + config.getToken().access_token },
+                page: true,
+                cols: [[
+                    { field: 'hospitalName', width: 300, title: '医院名称' },
+                    { field: 'departmentName', width: 100, title: '科室名称' },
+                    { field: 'proName', width: 200, title: '产品名称' },
+                    { field: 'ailightCount', width: 150, title: '读片量' },
+                    { field: 'recordCount', width: 100, title: '报告量' },
+                    { field: 'isShare', width: 150, title: '是否共享',templet:function(d)
+                    {
+                        if(d.isShare)
+                        return '共享'
+                        else
+                        return '私有'
+                    }
+                    },
+                    { field: 'proBegintime', width: 120, title: '开始时间',templet:function(d){
+                        return new Date(d.proBegintime).dateFormat("yyyy/MM/dd");
+                    } },
+                    { field: 'proEndtime', width: 120, title: '结束时间',templet:function(d){
+                        return new Date(d.proEndtime).dateFormat("yyyy/MM/dd");
+                    } },
+                    { field: 'createTime', width: 160, sort: true, title: '创建时间',templet:function(d){
+                        return new Date(d.createTime).dateFormat("yyyy/MM/dd hh:mm:ss");
+                    } },
+                    { field: 'enabled', width: 150, templet: '#product-tpl-state', sort: true, title: '状态' },
+                    { align: 'center', width: 100, toolbar: '#product-table-bar', title: '操作' }
+                ]]
+            });
+        }
+        renderTable();
+
+        // 修改状态
+        form.on('switch(product-tpl-state)', function (obj) {
+            layer.load(2);
+            admin.req('api-opration/productorderdetail/updateEnabled', {
+                id: obj.elem.value,
+                enabled: obj.elem.checked ? true : false
+            }, function (data) {
+                layer.closeAll('loading');
+                if (data.code == 0) {
+                    layer.msg(data.msg, { icon: 1, time: 500 });
+                } else {
+                    layer.msg(data.msg, { icon: 2, time: 500 });
+                    $(obj.elem).prop('checked', !obj.elem.checked);
+                    form.render('checkbox');
+                }
+            }, 'GET');
+        });
+
+        // 工具条点击事件
+        table.on('tool(product-table)', function (obj) {
+            if (obj.event === 'del') { // 删除
+                layer.confirm('确定要删除吗?', function (i) {
+                    layer.close(i);
+                    layer.load(2);
+                    admin.req('api-opration/productorderdetail/' + obj.data.id, {}, function (data) {
+                        layer.closeAll('loading');
+                        layer.msg(data.msg, { icon: 1, time: 500 }, function () {
+
+                            renderTable();
+                        });
+                        obj.del();
+                    }, 'DELETE');
+                });
+            }
+        });
+
+        // 搜索按钮点击事件
+        $('#product-btn-search').click(function () {
+            var proName = $('#product-search-value').val();
+            var hospitalName = $('#hospital-search-value').val();
+            table.reload('product-table', { where: { proName: proName,hospitalName: hospitalName } });
+        });
+    });
+</script>
\ No newline at end of file

--
Gitblit v1.8.0