Commit 68fb4a4c authored by 卜远杰's avatar 卜远杰

报表

parent 51899f8c
......@@ -921,10 +921,9 @@
//开发票
function exportInvoice(data) {
var qrCodeIds = isCheckedQyCode.join(",");
var email = $("[name='email']").val();
$('#peakButtom').modal('hide');
if (qrCodeIds == '' || qrCodeIds == null){
if (isCheckedQyCode.filter(function(el){return el!== undefined}) == ''){
Cfapp.alert({
message: "请勾选需求清单",
btntext: "确定",
......@@ -933,6 +932,7 @@
});
return;
}
var qrCodeIds = isCheckedQyCode.join(",");
if(email == '' || email == null){
Cfapp.alert({
message: "请填写邮箱",
......
......@@ -94,7 +94,7 @@ public class InvoiceUtil {
//销方电话 必填
order.put("salerTel",SystemConfig.p.getProperty("SALER_TEL"));
//订单号 (每个企业唯一) 必填
order.put("orderNo", "OD199812132"); //todo
order.put("orderNo", orderObj.getNumber()); //todo
// 开票完成回传发票信息地址 非必填
order.put("callBackUrl","http:127.0.0.1/invoice/callback/");
// 购方名称 必填
......@@ -119,7 +119,7 @@ public class InvoiceUtil {
}
//购方手机(pushMode为1或2时,此项为必填) 必填
order.put("buyerPhone","18516234460"); //todo
order.put("buyerPhone",""); //todo
//购方银行账号及开户行地址 非必填
order.put("buyerAccount","");
//成品油标志:非成品油(默认):0;成品油:1 非必填
......
......@@ -56,12 +56,12 @@
<section class="content-header">
<h1>
报表管理管理
<small>报表管理</small>
报表信息管理
<small>报表信息</small>
</h1>
<ol class="breadcrumb">
<li><a href="#"><i class="fa fa-dashboard"></i>首页</a></li>
<li><a class="active">报表管理</a></li>
<li><a class="active">报表信息</a></li>
</ol>
</section>
......@@ -78,10 +78,10 @@
</div>
<div class="box-footer">
#if($shiro.hasPermission("qy:reportForm:edit"))
#if($shiro.hasPermission("qy:report:edit"))
<input class="btn btn-primary" id="save" value="保存" type="submit">
#end
<a href="#springUrl('/a/reportForm/list')" class="btn btn-default">取消</a>
<a href="#springUrl('/a/report/list')" class="btn btn-default">取消</a>
</div>
</form>
<!-- /.box-body -->
......@@ -142,7 +142,7 @@
messages: {},
submitHandler: function (form) {
$("#save").attr("disabled", true);
$.getJSON("#springUrl('/a/reportForm/formData')", $("#myForm").serialize(), function (returnobj) {
$.getJSON("#springUrl('/a/report/formData')", $("#myForm").serialize(), function (returnobj) {
$("#save").attr("disabled", false);
if (returnobj.errorNo == 2) { //保存成功
Cfapp.confirm({
......@@ -150,10 +150,10 @@
btnoktext: "继续添加",
btncanceltext: "关闭",
success: function () {
location.href = "#springUrl('/a/reportForm/form')";
location.href = "#springUrl('/a/report/form')";
},
cancel: function () {
location.href = "#springUrl('/a/reportForm/list')";
location.href = "#springUrl('/a/report/list')";
}
});
} else if (returnobj.errorNo == 0) { //修改成功
......@@ -161,7 +161,7 @@
message: "更新成功",
btntext: "确定",
success: function () {
location.href = "#springUrl('/a/reportForm/list')";
location.href = "#springUrl('/a/report/list')";
}
});
} else {
......@@ -169,7 +169,7 @@
message: "创建失败",
btntext: "确定",
success: function () {
location.href = "#springUrl('/a/reportForm/list')";
location.href = "#springUrl('/a/report/list')";
}
});
}
......
......@@ -60,12 +60,12 @@
<section class="content-header">
<h1>
报表管理
<small>报表管理</small>
报表信息管理
<small>报表信息</small>
</h1>
<ol class="breadcrumb">
<li><a><i class="fa fa-dashboard"></i>首页</a></li>
<li><a class="active">报表管理管理列表</a></li>
<li><a class="active">报表信息管理列表</a></li>
</ol>
</section>
......@@ -76,34 +76,74 @@
<div class="col-xs-12">
<div class="box">
<div class="box-header">
<form id="seachTableForm" action="#springUrl('/a/reportForm/exportExcel')" method="get">
<form id="seachTableForm" action="#springUrl('/a/report/exportExcel')" method="get">
<div class="col-xs-2" >
<input type="text" class="form-control "
id="pharmaName" name="pharmaName" placeholder="药师名称">
</div>
<div class="col-xs-2" >
<input type="text" class="form-control "
id="customerName" name="customerName" placeholder="客服名称">
</div>
<div class="col-xs-2" >
<input type="text" class="form-control "
id="doctorName" name="doctorName" placeholder="医生名称">
</div>
<div class="col-xs-2" >
<input type="text" class="form-control "
id="orderCode" name="orderCode" placeholder="订单编码">
<div class="col-xs-2">
<input type="text" class="form-control"
name="region" placeholder="大区">
</div>
<div class="col-xs-2">
<input type="text" class="form-control"
name="province" placeholder="省份">
</div>
<div class="col-xs-2">
<input type="text" class="form-control"
name="city" placeholder="城市">
</div>
<div class="col-xs-2">
<input type="text" class="form-control"
name="hospital" placeholder="医院">
</div>
<div class="col-xs-2">
<input type="text" class="form-control"
name="doctorName" placeholder="医生姓名">
</div>
<div class="col-xs-2">
<input type="text" class="form-control"
name="phone" placeholder="用户手机号码">
</div>
<div class="col-xs-2">
<input type="text" class="form-control"
name="drugsNum" placeholder="购买数量">
</div>
<div class="col-xs-2">
<div class="input-group date">
<div class="input-group-addon">
<i class="fa fa-calendar"></i>
</div>
<input type="text" class="form-control pull-right datepicker"
name="startPayTime" placeholder="付款开始时间"
readonly="readonly">
</div>
<div class="col-xs-2" >
<input type="text" class="form-control "
id="waybillNumber" name="waybillNumber" placeholder="物流单号">
</div>
<div class="col-xs-2">
<div class="input-group date">
<div class="input-group-addon">
<i class="fa fa-calendar"></i>
</div>
<input type="text"
class="form-control pull-right datepicker"
name="endPayTime" placeholder="付款结束时间"
readonly="readonly">
</div>
<button type="button" class="search btn btn-primary" style="margin-left: 20px">搜索</button>
#if($shiro.hasPermission("qy:reportForm:edit"))
<button type="submit" class="btn btn-primary">导出</button>
#end
</div>
<div class="col-xs-5">
<button type="button" class="search btn btn-primary">搜索</button>
#if($shiro.hasPermission("qy:report:edit"))
<button type="submit" class="btn btn-primary">导出</button>
#end
</div>
</form>
</div><!-- /.box-header -->
<div class="box-body">
......@@ -111,21 +151,27 @@
<thead>
<tr>
<td hidden="true">Id</td>
<th>咨询单编码</th>
<th>订单编码</th>
<th>顺风编码</th>
<th>物流编码</th>
<th>战区</th>
<th></th>
<th></th>
<th>医院名称</th>
<th>药师名称</th>
<th>客服名称</th>
<th>医生名称</th>
<th>咨询人openId</th>
<th>咨询人姓名</th>
<th>大区</th>
<th>省份</th>
<th>城市</th>
<th>销售代表</th>
<th>医院</th>
<th>科室</th>
<th>医生姓名</th>
<th>医生职称</th>
<th>性别</th>
<th>咨询人手机号码</th>
<th>医生手机号码</th>
<th>处方医院</th>
<th>处方医生</th>
<th>咨询单编码</th>
<th>需求清单编码</th>
<th>用户姓名</th>
<th>用户手机号码</th>
<th>产品名称</th>
<th>购买数量</th>
<th>付款时间</th>
<th>发货时间</th>
<th>收件时间</th>
</tr>
</thead>
<tbody id="tablebody">
......@@ -168,10 +214,6 @@
src="plugins/jquery-validation/js/jquery.validate.min.js"></script>
<!-- AdminLTE for demo purposes -->
<script src="common/js/cfapp.js"></script>
<script>
var csrfheader = {name: '_csrf_header', value: '${_csrf.headerName}'};
var csrftoken = {name: '_csrf', value: '${_csrf.token}'};
</script>
<script>
function formatDates(now) {
var now = new Date(now);
......@@ -186,7 +228,7 @@
}
function seachTable() {
var sSource = "#springUrl('/a/reportForm/listData')";
var sSource = "#springUrl('/a/report/listData')";
var aoData = {
iDisplayStart: 1,
iDosplayLength: 10
......@@ -223,69 +265,110 @@
"pagingType": "full_numbers",
"aoColumns": [
{
"mData":"id"
"mData": "id"
},
{
"mData": "consultId"
"mData":"region"
},
{
"mData": "orderCode"
"mData":"province"
},
{
"mData": "courierNumber"
}
,
"mData":"city"
},
{
"mData": "waybillNumber"
}
,
"mData":"salesRepresent"
},
{
"mData": "warZone"
}
,
"mData":"hospital"
},
{
"mData": "provinceName"
}
,
"mData":"department"
},
{
"mData": "cityName"
},{
"mData":"hospital"
},{
"mData":"pharmaName"
},{
"mData":"customerName"
},{
"mData":"doctorName"
},{
"mData":"openId"
},{
"mData":"userName"
},{
},
{
"mData":"doctorTitle"
},
{
"mData":"sex"
},{
},
{
"mData":"doctorPhone"
},
{
"mData":"cfHospital"
},
{
"mData":"cfDoctor"
},
{
"mData":"consultNumber"
},
{
"mData":"orderNumber"
},
{
"mData":"userName"
},
{
"mData":"phone"
}
],
},
{
"mData":"productName"
},
{
"mData":"drugsNum"
},
{
"mData":"fkTime"
},
{
"mData":"fhTime"
},
{
"mData":"sjTime"
}],
"aoColumnDefs": [
{ // set default column settings
'visible': false,
'targets': [0]
},
{
"aTargets": [14],
"mData": "id",
"aTargets": [19],
"mData": "fkTime",
"mRender": function (a, b, c, d) {
if(a == 1){
return "男";
}else if(a == 0){
return "女"
}else{
if(a == '' || a == null){
return "";
}else {
return formatDates(a, "yyyy-MM-dd HH:mm:ss");
}
}
}
},
{
"aTargets": [20],
"mData": "fhTime",
"mRender": function (a, b, c, d) {
if(a == '' || a == null){
return "";
}else {
return formatDates(a, "yyyy-MM-dd HH:mm:ss");
}
}
},
{
"aTargets": [21],
"mData": "sjTime",
"mRender": function (a, b, c, d) {
if(a == '' || a == null){
return "";
}else {
return formatDates(a, "yyyy-MM-dd HH:mm:ss");
}
}
},
]
});
......@@ -317,8 +400,8 @@
success: function () {
$.ajax({
type: "POST",
url: "#springUrl('/a/reportForm/delete')",
data: {_csrf_header: csrfheader.value, _csrf: csrftoken.value,id: data},
url: "#springUrl('/a/report/delete')",
data: {id: data},
dataType: "json",
success: function (data) {
if (data.errorNo == 0) {
......@@ -326,7 +409,7 @@
message: "删除成功",
btntext: "确定",
success: function () {
location.href = "#springUrl('/a/reportForm/list')";
location.href = "#springUrl('/a/report/list')";
}
});
}
......@@ -342,10 +425,10 @@
}
function importExcel() {
var templateExcelUrl = "#springUrl('/a/reportForm/templateExcel')";
var importExcelUrl = "#springUrl('/a/reportForm/importExcel')";
var templateExcelUrl = "#springUrl('/a/report/templateExcel')";
var importExcelUrl = "#springUrl('/a/report/importExcel')";
Cfapp.importExcel({
title: '报表管理导入',
title: '报表信息导入',
importurl: importExcelUrl,
templateurl: templateExcelUrl,
cancel: function () {
......
package com.cftech.report.dao;
import com.cftech.report.model.Report;
import com.cftech.core.generic.GenericDao;
import com.cftech.report.model.ReportCode;
import com.cftech.report.model.ReportDoctorInfo;
import com.cftech.report.model.ReportPeopleInfo;
import java.util.List;
import java.util.Map;
/**
* 报表信息Mapper
*
* @author Buyj
* @date: 2020-12-02 11:26
*/
public interface ReportMapper extends GenericDao<Report> {
/**
* 查询报表人员信息
* @param params
* @return
*/
List<ReportPeopleInfo> selectReportPeopleInfo(Map<String,Object> params);
/**
* 查询用户对应的扫码记录信息
* @param params
* @return
*/
List<ReportCode> selectReportCodeInfo(Map<String,Object> params);
/**
* 根据医生id查询医生信息
* @param params
* @return
*/
ReportDoctorInfo selectReportDoctorInfo(Map<String,Object> params);
}
\ No newline at end of file
<?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="com.cftech.reportform.dao.ReportFormMapper">
<mapper namespace="com.cftech.report.dao.ReportMapper">
<resultMap id="resultMap" type="com.cftech.reportform.model.ReportForm">
<resultMap id="resultMap" type="com.cftech.report.model.Report">
<id column="id" property="id"/>
<result column="region" property="region"/>
<result column="province" property="province"/>
<result column="city" property="city"/>
<result column="sales_represent" property="salesRepresent"/>
<result column="hospital" property="hospital"/>
<result column="department" property="department"/>
<result column="doctor_name" property="doctorName"/>
<result column="doctor_title" property="doctorTitle"/>
<result column="sex" property="sex"/>
<result column="doctor_phone" property="doctorPhone"/>
<result column="cf_hospital" property="cfHospital"/>
<result column="cf_doctor" property="cfDoctor"/>
<result column="consult_number" property="consultNumber"/>
<result column="order_number" property="orderNumber"/>
<result column="user_name" property="userName"/>
<result column="phone" property="phone"/>
<result column="product_name" property="productName"/>
<result column="drugs_num" property="drugsNum"/>
<result column="fk_time" property="fkTime"/>
<result column="fh_time" property="fhTime"/>
<result column="sj_time" property="sjTime"/>
<result column="accounts_id" property="accountsId"/>
<result column="del_flag" property="delFlag"/>
<result column="status" property="status"/>
......@@ -14,29 +35,38 @@
<result column="update_by" property="updateBy"/>
</resultMap>
<resultMap id="resultMapDetail" type="com.cftech.reportform.model.ReportFormDetail">
<resultMap id="resultMapPeopleInfo" type="com.cftech.report.model.ReportPeopleInfo">
<id column="id" property="id"/>
<result column="consultId" property="consultId"/>
<result column="productName" property="productName"/>
<result column="drugsNum" property="drugsNum"/>
<result column="orderNumber" property="orderNumber"/>
<result column="consultNumber" property="consultNumber"/>
<result column="userName" property="userName"/>
<result column="sex" property="sex"/>
<result column="phone" property="phone"/>
<result column="pastRecords" property="pastRecords"/>
<result column="doctorId" property="doctorId"/>
<result column="serviceId" property="serviceId"/>
<result column="cfDoctor" property="cfDoctor"/>
<result column="cfHospital" property="cfHospital"/>
<result column="fkTime" property="fkTime"/>
<result column="fhTime" property="fhTime"/>
<result column="sjTime" property="sjTime"/>
<result column="openId" property="openId"/>
<result column="drugsId" property="drugsId"/>
<result column="orderId" property="orderId"/>
<result column="pharmaName" property="pharmaName"/>
<result column="customerName" property="customerName"/>
<result column="orderCode" property="orderCode"/>
<result column="allergy" property="allergy"/>
<result column="hospital" property="hospital"/>
<result column="cityName" property="cityName"/>
<result column="provinceName" property="provinceName"/>
<result column="warZone" property="warZone"/>
<result column="courierNumber" property="courierNumber"/>
<result column="waybillNumber" property="waybillNumber"/>
<result column="doctorName" property="doctorName" />
</resultMap>
<resultMap id="resultMapCodeInfo" type="com.cftech.report.model.ReportCode">
<id column="id" property="id"/>
<result column="openId" property="openId"/>
<result column="type" property="type"/>
<result column="bindId" property="bindId"/>
</resultMap>
<resultMap id="resultMapDoctorInfo" type="com.cftech.report.model.ReportDoctorInfo">
<id column="id" property="id"/>
<result column="userName" property="userName"/>
<result column="gender" property="gender"/>
<result column="orgId" property="orgId"/>
<result column="orgName" property="orgName"/>
<result column="orgParentIds" property="orgParentIds"/>
<result column="userType" property="userType"/>
<result column="userPhone" property="userPhone"/>
</resultMap>
<sql id="sqlWhere">
......@@ -67,24 +97,69 @@
</sql>
<sql id="sqlColumns">
q.`name`
AS pharmacist,
t.`name` AS customerName,
o.number,
o.order_amount AS order_amount,
c.consult_id AS numberCode
id,
region,
province,
city,
sales_represent,
hospital,
department,
doctor_name,
doctor_title,
sex,
doctor_phone,
cf_hospital,
cf_doctor,
consult_number,
order_number,
user_name,
phone,
product_name,
drugs_num,
fk_time,
fh_time,
sj_time,
accounts_id,
del_flag,
status,
create_time,
update_time,
description,
create_by,
update_by
</sql>
<insert id="save" parameterType="com.cftech.reportform.model.ReportForm" useGeneratedKeys="true"
<insert id="save" parameterType="com.cftech.report.model.Report" useGeneratedKeys="true"
keyProperty="id">
insert into t_order
insert into t_aidea_report
(
<include refid="sqlColumns"/>
)
values
(
#{id, jdbcType=BIGINT},
#{region, jdbcType=VARCHAR},
#{province, jdbcType=VARCHAR},
#{city, jdbcType=VARCHAR},
#{salesRepresent, jdbcType=VARCHAR},
#{hospital, jdbcType=VARCHAR},
#{department, jdbcType=VARCHAR},
#{doctorName, jdbcType=VARCHAR},
#{doctorTitle, jdbcType=VARCHAR},
#{sex, jdbcType=VARCHAR},
#{doctorPhone, jdbcType=VARCHAR},
#{cfHospital, jdbcType=VARCHAR},
#{cfDoctor, jdbcType=VARCHAR},
#{consultNumber, jdbcType=VARCHAR},
#{orderNumber, jdbcType=VARCHAR},
#{userName, jdbcType=VARCHAR},
#{phone, jdbcType=VARCHAR},
#{productName, jdbcType=VARCHAR},
#{drugsNum, jdbcType=VARCHAR},
#{fkTime , jdbcType=TIMESTAMP},
#{fhTime , jdbcType=TIMESTAMP},
#{sjTime , jdbcType=TIMESTAMP},
#{accountsId, jdbcType=BIGINT},
#{delFlag, jdbcType=TINYINT},
#{status, jdbcType=VARCHAR},
......@@ -99,85 +174,94 @@ c.consult_id AS numberCode
<select id="fetchById" parameterType="java.lang.Long" resultMap="resultMap">
SELECT
<include refid="sqlColumns"/>
FROM t_order t
FROM t_aidea_report t
WHERE t.id=#{id}
</select>
<select id="count" parameterType="java.util.Map" resultType="java.lang.Integer">
SELECT
COUNT(1)
FROM
t_aidea_consult_sheet a
LEFT JOIN t_order o ON a.order_id = o.id
LEFT JOIN t_qyuser b ON b.id = a.doctor_id
LEFT JOIN t_qyuser c ON c.id = a.service_id
LEFT JOIN t_qyuser v ON v.id = a.past_records
LEFT JOIN t_orgunit g ON g.id = a.allergy
LEFT JOIN t_orgunit k ON g.parent_id = k.id
LEFT JOIN t_orgunit l ON k.parent_id = l.id
LEFT JOIN t_orgunit m ON l.parent_id = m.id
LEFT JOIN t_aidea_waybill w ON w.waybill_no = o.courier_number
SELECT COUNT(1) FROM t_aidea_report
<include refid="sqlWhere"/>
</select>
<select id="fetchSearchByPage" parameterType="java.util.Map" resultMap="resultMap">
SELECT
<include refid="sqlColumns"/>
FROM t_order o
LEFT JOIN t_qyuser t ON t.id = o.service_id
LEFT JOIN t_qyuser q ON q.id = o.doctor_id
LEFT JOIN t_aidea_consult_sheet c ON c.order_id = o.id
FROM t_aidea_report
<include refid="sqlWhere"/>
<if test="sort!=null">ORDER BY ${sort.param} ${sort.type}</if>
<if test="limit>0">limit #{offset},#{limit}</if>
</select>
<select id="selectReportDetail" parameterType="java.util.Map" resultMap="resultMapDetail">
SELECT
a.id id,
a.consult_id consultId,
CONVERT ( AES_DECRYPT( a.user_name, 'aideakey' ) USING UTF8 ) userName,
a.sex,
CONVERT ( AES_DECRYPT( a.phone, 'aideakey' ) USING UTF8 ) phone,
a.past_records pastRecords,
a.doctor_id doctorId,
a.service_id serviceId,
a.open_id openId,
a.drugs_id drugsId,
a.order_id orderId,
b.`name` pharmaName,
c.`name` customerName,
o.number orderCode,
a.allergy allergy,
g.org_name hospital,
k.org_name cityName,
l.org_name provinceName,
m.org_name warZone,
o.courier_number courierNumber,
w.number waybillNumber,
v.`name` doctorName
FROM
t_aidea_consult_sheet a
LEFT JOIN t_order o ON a.order_id = o.id
LEFT JOIN t_qyuser b ON b.id = a.doctor_id
LEFT JOIN t_qyuser c ON c.id = a.service_id
LEFT JOIN t_qyuser v ON v.id = a.past_records
LEFT JOIN t_orgunit g ON g.id = a.allergy
LEFT JOIN t_orgunit k ON g.parent_id = k.id
LEFT JOIN t_orgunit l ON k.parent_id = l.id
LEFT JOIN t_orgunit m ON l.parent_id = m.id
LEFT JOIN t_aidea_waybill w ON w.waybill_no = o.courier_number
<include refid="sqlWhere"/>
<if test="sort!=null">ORDER BY ${sort.param} ${sort.type}</if>
<if test="limit>0">limit #{offset},#{limit}</if>
</select>
<update id="update" parameterType="com.cftech.reportform.model.ReportForm">
update t_order
<update id="update" parameterType="com.cftech.report.model.Report">
update t_aidea_report
<set>
<if test="id != null">
id = #{id, jdbcType=BIGINT},
</if>
<if test="region != null">
region = #{region, jdbcType=VARCHAR},
</if>
<if test="province != null">
province = #{province, jdbcType=VARCHAR},
</if>
<if test="city != null">
city = #{city, jdbcType=VARCHAR},
</if>
<if test="salesRepresent != null">
sales_represent = #{salesRepresent, jdbcType=VARCHAR},
</if>
<if test="hospital != null">
hospital = #{hospital, jdbcType=VARCHAR},
</if>
<if test="department != null">
department = #{department, jdbcType=VARCHAR},
</if>
<if test="doctorName != null">
doctor_name = #{doctorName, jdbcType=VARCHAR},
</if>
<if test="doctorTitle != null">
doctor_title = #{doctorTitle, jdbcType=VARCHAR},
</if>
<if test="sex != null">
sex = #{sex, jdbcType=VARCHAR},
</if>
<if test="doctorPhone != null">
doctor_phone = #{doctorPhone, jdbcType=VARCHAR},
</if>
<if test="cfHospital != null">
cf_hospital = #{cfHospital, jdbcType=VARCHAR},
</if>
<if test="cfDoctor != null">
cf_doctor = #{cfDoctor, jdbcType=VARCHAR},
</if>
<if test="consultNumber != null">
consult_number = #{consultNumber, jdbcType=VARCHAR},
</if>
<if test="orderNumber != null">
order_number = #{orderNumber, jdbcType=VARCHAR},
</if>
<if test="userName != null">
user_name = #{userName, jdbcType=VARCHAR},
</if>
<if test="phone != null">
phone = #{phone, jdbcType=VARCHAR},
</if>
<if test="productName != null">
product_name = #{productName, jdbcType=VARCHAR},
</if>
<if test="drugsNum != null">
drugs_num = #{drugsNum, jdbcType=VARCHAR},
</if>
<if test="fkTime != null">
fk_time = #{fkTime, jdbcType=TIMESTAMP},
</if>
<if test="fhTime != null">
fh_time = #{fhTime, jdbcType=TIMESTAMP},
</if>
<if test="sjTime != null">
sj_time = #{sjTime, jdbcType=TIMESTAMP},
</if>
<if test="accountsId != null">
accounts_id = #{accountsId, jdbcType=BIGINT},
</if>
......@@ -204,6 +288,68 @@ c.consult_id AS numberCode
</update>
<update id="delete" parameterType="java.lang.Long">
update t_order set del_flag=1 where id=#{id,jdbcType=BIGINT}
update t_aidea_report set del_flag=1 where id=#{id,jdbcType=BIGINT}
</update>
<!--查询报表人员信息-->
<select id="selectReportPeopleInfo" resultMap="resultMapPeopleInfo" parameterType="java.util.Map">
SELECT
product.product_name productName,
detail.drugs_num drugsNum,
ord.number orderNumber,
consult.consult_id consultNumber,
CONVERT ( AES_DECRYPT( consult.user_name, 'aideakey' ) USING UTF8 ) userName,
CONVERT ( AES_DECRYPT( consult.phone, 'aideakey' ) USING UTF8 ) phone,
qyuser.`name` cfDoctor,
org1.org_name cfHospital,
ord.create_time fkTime,
waybill.send_express_date fhTime,
waybill.accept_express_date sjTime,
ord.openid openId
FROM
t_order_details detail
LEFT JOIN t_aidea_product product ON product.id = detail.drugs_id
AND product.del_flag = 0
LEFT JOIN t_order ord ON ord.id = detail.order_id
LEFT JOIN t_aidea_consult_sheet consult ON consult.order_id = ord.id
LEFT JOIN t_qyuser qyuser ON qyuser.id = consult.past_records
LEFT JOIN t_orgunit org1 ON org1.id = consult.allergy
LEFT JOIN t_aidea_waybill waybill ON waybill.order_id = org1.id
<include refid="sqlWhere"/>
<if test="sort!=null">ORDER BY ${sort.param} ${sort.type}</if>
</select>
<!--查询用户对应的扫码记录-->
<select id="selectReportCodeInfo" resultMap="resultMapCodeInfo" parameterType="java.util.Map">
SELECT
record.openid openId,
record.type type,
record.ticket ticket,
shop.bind_id bindId
FROM
t_behavior_qrcode_record record
LEFT JOIN t_shop_wxqrcode shop ON shop.ticket = record.ticket
AND shop.del_flag = 0
<include refid="sqlWhere"/>
<if test="sort!=null">ORDER BY ${sort.param} ${sort.type}</if>
</select>
<!--根据医生Id查询医生信息-->
<select id="selectReportDoctorInfo" resultMap="resultMapDoctorInfo" parameterType="java.util.Map">
SELECT
qyuser.id id,
qyuser.`name` userName,
qyuser.gender gender,
qyuser.org_id orgId,
qyuser.user_type userType,
qyuser.mobile userPhone,
org.org_name orgName,
org.parent_ids orgParentIds
FROM
t_qyuser qyuser
LEFT JOIN t_orgunit org ON org.id = qyuser.org_id
AND org.del_flag = 0
<include refid="sqlWhere"/>
</select>
</mapper>
\ No newline at end of file
package com.cftech.report.job;
import com.cftech.accounts.model.SysJob;
import com.cftech.accounts.service.JobService;
import com.cftech.base.org.model.OrgUnit;
import com.cftech.base.org.model.Qyuser;
import com.cftech.base.org.service.OrgUnitService;
import com.cftech.base.org.service.QyuserService;
import com.cftech.core.scope.OrderType;
import com.cftech.core.sql.Conds;
import com.cftech.core.sql.Sort;
import com.cftech.core.util.SpringContextHolder;
import com.cftech.core.util.SystemConfig;
import com.cftech.report.model.Report;
import com.cftech.report.model.ReportCode;
import com.cftech.report.model.ReportDoctorInfo;
import com.cftech.report.model.ReportPeopleInfo;
import com.cftech.report.service.ReportService;
import com.cftech.shop.qrcode.model.QyUser;
import lombok.extern.slf4j.Slf4j;
import org.quartz.Job;
import org.quartz.JobDataMap;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
/**
* 每天凌晨固化报表数据
*/
@Slf4j
public class ReportJob implements Job {
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
boolean isCluster = Boolean.valueOf(SystemConfig.p.getProperty("quartz.isCluster"));
if (!isCluster) {
return;
}
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date today = new Date(System.currentTimeMillis()-(24*60*60*1000));
ReportService reportService = SpringContextHolder.getBean(ReportService.class);
OrgUnitService orgUnitService = SpringContextHolder.getBean(OrgUnitService.class);
QyuserService qyuserService = SpringContextHolder.getBean(QyuserService.class);
Conds condPeople = new Conds();
condPeople.equal("DATE_FORMAT(detail.create_time ,'%Y-%m-%d')",format.format(today));
condPeople.equal("detail.del_flag",0);
Sort sortPeople = new Sort("detail.create_time", OrderType.DESC);
//获取报表用户信息
List<ReportPeopleInfo> listPeople = reportService.selectReportPeopleInfo(condPeople,sortPeople);
Report report = null;
if(listPeople.size() > 0){
for (ReportPeopleInfo reportPeopleInfo : listPeople) {
report = new Report();
report.setProductName(reportPeopleInfo.getProductName());
report.setDrugsNum(reportPeopleInfo.getDrugsNum());
report.setOrderNumber(reportPeopleInfo.getOrderNumber());
report.setConsultNumber(reportPeopleInfo.getConsultNumber());
report.setUserName(reportPeopleInfo.getUserName());
report.setPhone(reportPeopleInfo.getPhone());
report.setCfDoctor(reportPeopleInfo.getCfDoctor());
report.setCfHospital(reportPeopleInfo.getCfHospital());
report.setFkTime(reportPeopleInfo.getFkTime());
report.setFhTime(reportPeopleInfo.getFhTime());
report.setSjTime(reportPeopleInfo.getSjTime());
//根据openId获取扫码记录 只获取医生和组织二维码
Conds condCode = new Conds();
condCode.equal("record.openid",reportPeopleInfo.getOpenId());
condCode.in("record.type",new String[]{"3","4"});
Sort sortCode = new Sort("record.create_time",OrderType.DESC);
List<ReportCode> listCode = reportService.selectReportCodeInfo(condCode,sortCode);
if(listCode.size()>0){
if(listCode.get(0).getType().equals("3")){
//二维码类型为医生 根据绑定的医生人员ID查医生信息
Conds condDoctor = new Conds();
condDoctor.equal("qyuser.id",listCode.get(0).getBindId());
condDoctor.equal("qyuser.del_flag","0");
ReportDoctorInfo reportDoctorInfo = reportService.selectReportDoctorInfo(condDoctor);
if(reportDoctorInfo != null){
report.setDoctorName(reportDoctorInfo.getUserName());
report.setDoctorPhone(reportDoctorInfo.getUserPhone());
report.setDoctorTitle("医生");
report.setSex(reportDoctorInfo.getGender());
String orgParentIds = reportDoctorInfo.getOrgParentIds();
String[] orgParentIdArray = orgParentIds.split(",");
String regionOrgIds = SystemConfig.p.getProperty("REGION_LONG_ID");
if (orgParentIds.contains(regionOrgIds) && orgParentIdArray.length > regionOrgIds.split(",").length){
//若果医生组织id在区域组织下面 则根据大区长编码获取下面所有组织信息
String areIds = regionOrgIds + regionOrgIds.split(",")[4];
Conds condOrg = new Conds();
condOrg.rightLike("t.parent_ids",areIds);
Sort sortOrg = new Sort("t.parent_id",OrderType.ASC);
List<OrgUnit> orgUnits = orgUnitService.fetchSearchByPage(0L,condOrg,sortOrg,0,0);
if (orgUnits.size() > 0){
//若根据大区长编码查出数据 循环
for (OrgUnit orgUnit : orgUnits){
int level = orgUnit.getParentIds().split(",").length;
if (level == 4){
// 大区
report.setRegion(orgUnit.getOrgName());
}else if (level == 5){
// 省
report.setProvince(orgUnit.getOrgName());
}else if (level == 6) {
// 市
report.setCity(orgUnit.getOrgName());
}else if (level == 7) {
//医院
report.setHospital(orgUnit.getOrgName());
// 根据医院组织ID 查找医院下面的销售代表
Conds condDepartment = new Conds();
condDepartment.equal("t.org_id",orgUnit.getId());
List<Qyuser> listUser = qyuserService.fetchSearchByPage(0L,condDepartment,null,0,0);
StringBuffer sb = new StringBuffer();
if(listUser.size() > 0){
for (Qyuser qyuser : listUser) {
sb.append(qyuser.getName() + ",");
}
}
report.setSalesRepresent(sb.toString());
}else if (level == 8) {
//科室
report.setDepartment(orgUnit.getOrgName());
}
}
}
}
}
}else{
//二维码类型为组织 根据绑定的组织ID获取对应组织信息
OrgUnit orgUnitObj = orgUnitService.fetchById(listCode.get(0).getBindId());
if(orgUnitObj != null){
String orgParentIds = orgUnitObj.getParentIds();
String[] orgParentIdArray = orgParentIds.split(",");
String regionOrgIds = SystemConfig.p.getProperty("REGION_LONG_ID");
if (orgParentIds.contains(regionOrgIds) && orgParentIdArray.length > regionOrgIds.split(",").length){
//若果医生组织id在区域组织下面 则根据大区长编码获取下面所有组织信息
String areIds = regionOrgIds + orgParentIdArray[3];
Conds condOrg = new Conds();
condOrg.rightLike("t.parent_ids",areIds);
Sort sortOrg = new Sort("t.parent_id",OrderType.ASC);
List<OrgUnit> orgUnits = orgUnitService.fetchSearchByPage(0L,condOrg,sortOrg,0,0);
if (orgUnits.size() > 0){
//若根据大区长编码查出数据 循环
for (OrgUnit orgUnit : orgUnits){
int level = orgUnit.getParentIds().split(",").length;
if (level == 4){
// 大区
report.setRegion(orgUnit.getOrgName());
}else if (level == 5){
// 省
report.setProvince(orgUnit.getOrgName());
}else if (level == 6) {
// 市
report.setCity(orgUnit.getOrgName());
}else if (level == 7) {
//医院
report.setHospital(orgUnit.getOrgName());
// 根据医院组织ID 查找医院下面的销售代表
Conds condDepartment = new Conds();
condDepartment.equal("t.org_id",orgUnit.getId());
List<Qyuser> listUser = qyuserService.fetchSearchByPage(0L,condDepartment,null,0,0);
StringBuffer sb = new StringBuffer();
if(listUser.size() > 0){
for (int i = 0; i < listUser.size(); i++) {
Qyuser qyUser = listUser.get(i);
if(i == listUser.size()-1){
sb.append(qyUser.getName() );
}else{
sb.append(qyUser.getName() + ",");
}
}
}
report.setSalesRepresent(sb.toString());
}else if (level == 8) {
//科室
report.setDepartment(orgUnit.getOrgName());
}
}
}
}
}
//查找医生信息
Conds conds = new Conds();
conds.equal("record.openid",reportPeopleInfo.getOpenId());
conds.in("record.type",new String[]{"3"});
Sort sort = new Sort("record.create_time",OrderType.DESC);
List<ReportCode> list = reportService.selectReportCodeInfo(conds,sort);
if(list.size() > 0){
Conds condDoctor = new Conds();
condDoctor.equal("qyuser.id",listCode.get(0).getBindId());
condDoctor.equal("qyuser.del_flag","0");
ReportDoctorInfo reportDoctorInfo = reportService.selectReportDoctorInfo(condDoctor);
if (reportDoctorInfo != null){
report.setDoctorName(reportDoctorInfo.getUserName());
report.setDoctorPhone(reportDoctorInfo.getUserPhone());
report.setDoctorTitle("医生");
report.setSex(reportDoctorInfo.getGender());
}
}
}
}
//新增报表记录
reportService.save(report);
}
}
//获得明细数据
JobDataMap jobInfo = context.getJobDetail().getJobDataMap();
//这个也是ID主键
String id = jobInfo.get("uid") == null ? "" : jobInfo.getString("uid");
log.info("任务ID:" + id);
//执行更新操作
if (context.getNextFireTime() != null) {
log.info("报表数据接口调用:下次执行时间=====" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(context.getNextFireTime()) + "==============");
} else {
JobService jobService = SpringContextHolder.getBean(JobService.class);
SysJob sysJob = new SysJob();
sysJob.setJobuid(id);
sysJob.setStatus("0");
jobService.updateStatus(sysJob);
log.info("报表数据接口调用任务,已执行完成!");
}
}
public static void main(String[] args) {
String str = "0,1,5,36,40,41,";
String[] arry = str.split(",");
if(str.contains("0,1,5,")){
System.out.println(arry.length);
}
}
public Report setOrgUnitInfo (String orgParentId , Report report){
return report;
}
}
package com.cftech.report.model;
import com.cftech.core.poi.ExportConfig;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 报表信息
*
* @author Buyj
* @date: 2020-12-02 11:26
*/
@Data
public class Report implements Serializable {
/* 主键id */
private Long id;
/* 大区 */
@ExportConfig(value = "大区", width = 100, showLevel = 1)
private String region;
/* 省份 */
@ExportConfig(value = "省份", width = 100, showLevel = 1)
private String province;
/* 城市 */
@ExportConfig(value = "城市", width = 100, showLevel = 1)
private String city;
/* 销售代表 */
@ExportConfig(value = "销售代表", width = 100, showLevel = 1)
private String salesRepresent;
/* 医院 */
@ExportConfig(value = "医院", width = 100, showLevel = 1)
private String hospital;
/* 科室 */
@ExportConfig(value = "科室", width = 100, showLevel = 1)
private String department;
/* 医生姓名 */
@ExportConfig(value = "医生姓名", width = 100, showLevel = 1)
private String doctorName;
/* 医生职称 */
@ExportConfig(value = "医生职称", width = 100, showLevel = 1)
private String doctorTitle;
/* 性别 */
@ExportConfig(value = "性别", width = 100, showLevel = 1)
private String sex;
/* 医生手机号码 */
@ExportConfig(value = "医生手机号码", width = 100, showLevel = 1)
private String doctorPhone;
/* 处方医院 */
@ExportConfig(value = "处方医院", width = 100, showLevel = 1)
private String cfHospital;
/* 处方医生 */
@ExportConfig(value = "处方医生", width = 100, showLevel = 1)
private String cfDoctor;
/* 咨询单编码 */
@ExportConfig(value = "咨询单编码", width = 100, showLevel = 1)
private String consultNumber;
/* 需求清单编码 */
@ExportConfig(value = "需求清单编码", width = 100, showLevel = 1)
private String orderNumber;
/* 用户姓名 */
@ExportConfig(value = "用户姓名", width = 100, showLevel = 1)
private String userName;
/* 用户手机号码 */
@ExportConfig(value = "用户手机号码", width = 100, showLevel = 1)
private String phone;
/* 产品名称 */
@ExportConfig(value = "产品名称", width = 100, showLevel = 1)
private String productName;
/* 购买数量 */
@ExportConfig(value = "购买数量", width = 100, showLevel = 1)
private String drugsNum;
/* 付款时间 */
@ExportConfig(value = "付款时间", width = 100, showLevel = 1)
private Date fkTime;
/* 发货时间 */
@ExportConfig(value = "发货时间", width = 100, showLevel = 1)
private Date fhTime;
/* 收件时间 */
@ExportConfig(value = "收件时间", width = 100, showLevel = 1)
private Date sjTime;
/* 所属的账号 */
private Long accountsId;
/* 删除标识 */
private boolean delFlag;
/* 状态 */
private String status;
/* 创建时间 */
private Date createTime;
/* 更新时间 */
private Date updateTime;
/* 备注 */
private String description;
/* 创建人 */
private Long createBy;
/* 更新人 */
private Long updateBy;
/**
* 用户的opendId
*/
private String openId;
public Report() {
this.delFlag = false;
this.status = "0";
}
}
\ No newline at end of file
package com.cftech.report.model;
import lombok.Data;
/**
* @author BuYJ
*/
@Data
public class ReportCode {
/**
* 用户openId
*/
private String openId;
/**
* 类型 (3:医生 4:组织)
*/
private String type;
/**
* 绑定的ID
*/
private String bindId;
}
package com.cftech.report.model;
import lombok.Data;
/**
* @author BuYJ
*/
@Data
public class ReportDoctorInfo {
/**
* 医生ID
*/
private String id;
/**
* 医生名称
*/
private String userName;
/**
* 性别
*/
private String gender;
/**
* 组织ID
*/
private String orgId;
/**
* 组织名称
*/
private String orgName;
/**
* 组织长编码
*/
private String orgParentIds;
/**
* 用户类型
*/
private String userType;
/**
* 医生手机号码
*/
private String userPhone;
}
package com.cftech.report.model;
import lombok.Data;
import java.util.Date;
/**
* @author BuYj
*/
@Data
public class ReportPeopleInfo {
/**
* 产品名称
*/
private String productName;
/**
* 产品数量
*/
private String drugsNum;
/**
* 需求清单编码
*/
private String orderNumber;
/**
* 咨询单编码
*/
private String consultNumber;
/**
* 用户姓名
*/
private String userName;
/**
* 用户手机
*/
private String phone;
/**
* 处方医生
*/
private String cfDoctor;
/**
* 处方医院
*/
private String cfHospital;
/**
* 付款时间
*/
private Date fkTime;
/**
* 发货时间
*/
private Date fhTime;
/**
* 收件时间
*/
private Date sjTime;
/**
* 用户openId
*/
private String openId;
}
package com.cftech.report.service;
import com.cftech.core.sql.Conds;
import com.cftech.core.sql.Sort;
import com.cftech.report.model.Report;
import com.cftech.core.generic.GenericService;
import com.cftech.report.model.ReportCode;
import com.cftech.report.model.ReportDoctorInfo;
import com.cftech.report.model.ReportPeopleInfo;
import java.util.List;
import java.util.Map;
/**
* 报表信息Service
*
* @author Buyj
* @date: 2020-12-02 11:26
*/
public interface ReportService extends GenericService<Report> {
/**
* 查询报表人员信息
* @param cond
* @param sort
* @return
*/
List<ReportPeopleInfo> selectReportPeopleInfo(Conds cond, Sort sort);
/**
* 查询用户对应的扫码记录信息
* @param cond
* @param sort
* @return
*/
List<ReportCode> selectReportCodeInfo(Conds cond, Sort sort);
/**
* 根据医生ID查询医生信息
* @param cond
* @return
*/
ReportDoctorInfo selectReportDoctorInfo(Conds cond);
}
package com.cftech.report.service.impl;
import com.cftech.core.sql.Sort;
import com.cftech.report.model.Report;
import com.cftech.report.dao.ReportMapper;
import com.cftech.report.model.ReportCode;
import com.cftech.report.model.ReportDoctorInfo;
import com.cftech.report.model.ReportPeopleInfo;
import com.cftech.report.service.ReportService;
import com.cftech.core.generic.GenericDao;
import com.cftech.core.generic.GenericServiceImpl;
import com.cftech.core.sql.Conds;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 报表信息ServiceImpl
*
* @author Buyj
* @date: 2020-12-02 11:26
*/
@Service("reportService")
public class ReportServiceImpl extends GenericServiceImpl<Report> implements ReportService {
@Autowired
@Qualifier("reportMapper")
private ReportMapper reportMapper;
@Override
public GenericDao<Report> getGenericMapper() {
return reportMapper;
}
@Override
public List<ReportPeopleInfo> selectReportPeopleInfo(Conds cond, Sort sort) {
Map<String, Object> params = new HashMap<String, Object>();
params.put("conds", cond);
params.put("sort", sort);
return reportMapper.selectReportPeopleInfo(params);
}
@Override
public List<ReportCode> selectReportCodeInfo(Conds cond, Sort sort) {
Map<String, Object> params = new HashMap<String, Object>();
params.put("conds", cond);
params.put("sort", sort);
return reportMapper.selectReportCodeInfo(params);
}
@Override
public ReportDoctorInfo selectReportDoctorInfo(Conds cond) {
Map<String, Object> params = new HashMap<String, Object>();
params.put("conds", cond);
return reportMapper.selectReportDoctorInfo(params);
}
}
\ No newline at end of file
package com.cftech.reportform.web;
package com.cftech.report.web;
import com.alibaba.fastjson.JSONObject;
import com.cftech.reportform.model.ReportForm;
import com.cftech.reportform.model.ReportFormDetail;
import com.cftech.reportform.service.ReportFormService;
import com.cftech.report.model.Report;
import com.cftech.core.poi.ExcelKit;
import com.cftech.core.scope.OrderType;
import com.cftech.core.sql.Conds;
import com.cftech.core.sql.Sort;
import com.cftech.core.util.Constants;
import com.cftech.report.service.ReportService;
import com.cftech.sys.security.PermissionSign;
import com.cftech.sys.security.UserUtils;
import lombok.extern.slf4j.Slf4j;
......@@ -29,76 +29,124 @@ import java.util.List;
/**
* 报表管理Controller
* 报表信息Controller
* <p>
* 权限字符串说明:
* 查看:public static final String REPORTFORM_VIEW = "qy:reportForm:view"
* 查看:public static final String REPORTFORM_EDIT = "qy:reportForm:edit"
* 查看:public static final String REPORT_VIEW = "qy:report:view"
* 查看:public static final String REPORT_EDIT = "qy:report:edit"
*
* @author Licc
* @date: 2020-10-16 14:33
* @author Buyj
* @date: 2020-12-02 11:26
*/
@Slf4j
@Controller
@RequestMapping("/a/reportForm")
public class ReportFormController {
@RequestMapping("/a/report")
public class ReportController {
public static final String REPORTFORM_VIEW = "qy:reportForm:view";
public static final String REPORTFORM_EDIT = "qy:reportForm:edit";
public static final String REPORT_VIEW = "qy:report:view";
public static final String REPORT_EDIT = "qy:report:edit";
@Autowired
private ReportFormService reportFormService;
private ReportService reportService;
//列表页面
@RequiresPermissions(value = REPORTFORM_VIEW)
@RequiresPermissions(value = REPORT_VIEW)
@RequestMapping("/list")
public String list(HttpServletRequest request, Model model) {
Long accountId = UserUtils.getmpaccounts(request);
model.addAttribute("accountId", accountId);
return "reportForm/reportFormlist";
return "report/reportlist";
}
//编辑页面(新增、修改)
@RequiresPermissions(value = REPORTFORM_VIEW)
@RequiresPermissions(value = REPORT_VIEW)
@RequestMapping("/form")
public String form(HttpServletRequest request, String id, Model model) {
if (!StringUtils.isEmpty(id)) {
ReportForm reportForm = reportFormService.fetchById(id);
model.addAttribute("data", reportForm);
Report report = reportService.fetchById(id);
model.addAttribute("data", report);
}
return "reportForm/reportFormform";
return "report/reportform";
}
//提交数据(新增、修改)
@RequiresPermissions(value = REPORT_EDIT)
@RequestMapping("/formData")
@ResponseBody
public JSONObject formData(Report report, Model model, HttpServletRequest request) {
Long accountsId = UserUtils.getmpaccounts(request);
JSONObject rtnJson = new JSONObject();
try {
if (report != null && report.getId() != null) {
report.setUpdateBy(UserUtils.getUser().getId());
reportService.update(report);
rtnJson.put("errorNo", 0);
} else {
report.setAccountsId(accountsId);
report.setDelFlag(false);
report.setAccountsId(UserUtils.getmpaccounts(request));
report.setCreateBy(UserUtils.getUser().getId());
report.setUpdateBy(UserUtils.getUser().getId());
reportService.save(report);
rtnJson.put("errorNo", 2);
}
} catch (Exception e) {
rtnJson.put("errorNo", 1);
}
return rtnJson;
}
//获取列表数据
@RequiresPermissions(value = REPORTFORM_VIEW)
@RequiresPermissions(value = REPORT_VIEW)
@RequestMapping(value = "/listData")
@ResponseBody
public JSONObject listData(int iDisplayStart, int iDisplayLength, ReportFormDetail reportFormDetail, HttpServletRequest request) {
public JSONObject listData(int iDisplayStart, int iDisplayLength, Report report, HttpServletRequest request,String startPayTime,String endPayTime) {
Long accountsId = UserUtils.getmpaccounts(request);
Conds conds = new Conds();
conds.equal("a.del_flag", Constants.DEL_FLAG_0);
conds.equal("a.accounts_id", accountsId);
if (!StringUtils.isEmpty(reportFormDetail.getPharmaName())){
conds.like("b.`name`",reportFormDetail.getPharmaName());
conds.equal("del_flag", Constants.DEL_FLAG_0);
//conds.equal("accounts_id", accountsId);
Sort sort = new Sort("create_time", OrderType.DESC);
if(!StringUtils.isEmpty(report.getRegion())){
conds.like("region",report.getRegion());
}
if(!StringUtils.isEmpty(report.getProvince())){
conds.like("province",report.getProvince());
}
if(!StringUtils.isEmpty(report.getCity())){
conds.like("city",report.getCity());
}
if(!StringUtils.isEmpty(report.getHospital())){
conds.like("hospital",report.getHospital());
}
if(!StringUtils.isEmpty(report.getDoctorName())){
conds.like("doctor_name",report.getDoctorName());
}
if (!StringUtils.isEmpty(reportFormDetail.getCustomerName())){
conds.like("c.`name`",reportFormDetail.getCustomerName());
if(!StringUtils.isEmpty(report.getPhone())){
conds.like("phone",report.getPhone());
}
if (!StringUtils.isEmpty(reportFormDetail.getOrderCode())){
conds.equal("o.number",reportFormDetail.getOrderCode());
if(!StringUtils.isEmpty(report.getDrugsNum())){
conds.equal("drugs_num",report.getDrugsNum());
}
if (!StringUtils.isEmpty(reportFormDetail.getWaybillNumber())){
conds.equal("w.number",reportFormDetail.getWaybillNumber());
if(!StringUtils.isEmpty(startPayTime)){
conds.greatEqual("DATE_FORMAT(fk_time,'%Y-%m-%d')",startPayTime);
}
if (!StringUtils.isEmpty(reportFormDetail.getDoctorName())){
conds.like("v.`name`",reportFormDetail.getDoctorName());
if(!StringUtils.isEmpty(endPayTime)){
conds.lessEqual("DATE_FORMAT(fk_time,'%Y-%m-%d')",endPayTime);
}
Sort sort = new Sort("a.create_time", OrderType.DESC);
List<ReportFormDetail> list = reportFormService.selectReportDetail(conds, sort, iDisplayStart, iDisplayLength);
Integer counts = reportFormService.count(conds);
List<Report> list = reportService.fetchSearchByPage(conds, sort, iDisplayStart, iDisplayLength);
Integer counts = reportService.count(conds);
JSONObject rtnJson = new JSONObject();
rtnJson.put("iTotalRecords", counts);
rtnJson.put("iTotalDisplayRecords", counts);
......@@ -107,13 +155,13 @@ public class ReportFormController {
}
//删除数据
@RequiresPermissions(value = REPORTFORM_EDIT)
@RequiresPermissions(value = REPORT_EDIT)
@RequestMapping("/delete")
@ResponseBody
public JSONObject delete(String id) {
JSONObject rtnJosn = new JSONObject();
try {
reportFormService.delete(id);
reportService.delete(id);
rtnJosn.put("errorNo", 0);
} catch (Exception e) {
rtnJosn.put("errorNo", 1);
......@@ -122,43 +170,59 @@ public class ReportFormController {
}
@RequestMapping("/exportExcel")
@RequiresPermissions(value = REPORTFORM_VIEW)
public void exportExcel(HttpServletRequest request, HttpServletResponse response,ReportFormDetail reportFormDetail) {
Long accountsId = UserUtils.getmpaccounts(request);
@RequiresPermissions(value = REPORT_VIEW)
public void exportExcel(Report report, HttpServletRequest request,String startPayTime,String endPayTime, HttpServletResponse response) {
Long accountId = UserUtils.getmpaccounts(request);
Sort sort = new Sort("create_time", OrderType.ASC);
Conds conds = new Conds();
conds.equal("a.del_flag", Constants.DEL_FLAG_0);
conds.equal("a.accounts_id", accountsId);
if (!StringUtils.isEmpty(reportFormDetail.getPharmaName())){
conds.like("b.`name`",reportFormDetail.getPharmaName());
conds.equal("del_flag", 0);
if(!StringUtils.isEmpty(report.getRegion())){
conds.like("region",report.getRegion());
}
if (!StringUtils.isEmpty(reportFormDetail.getCustomerName())){
conds.like("c.`name`",reportFormDetail.getCustomerName());
if(!StringUtils.isEmpty(report.getProvince())){
conds.like("province",report.getProvince());
}
if (!StringUtils.isEmpty(reportFormDetail.getOrderCode())){
conds.equal("o.number",reportFormDetail.getOrderCode());
if(!StringUtils.isEmpty(report.getCity())){
conds.like("city",report.getCity());
}
if (!StringUtils.isEmpty(reportFormDetail.getWaybillNumber())){
conds.equal("w.number",reportFormDetail.getWaybillNumber());
if(!StringUtils.isEmpty(report.getHospital())){
conds.like("hospital",report.getHospital());
}
if (!StringUtils.isEmpty(reportFormDetail.getDoctorName())){
conds.like("v.`name`",reportFormDetail.getDoctorName());
if(!StringUtils.isEmpty(report.getDoctorName())){
conds.like("doctor_name",report.getDoctorName());
}
Sort sort = new Sort("a.create_time", OrderType.DESC);
List<ReportFormDetail> list = reportFormService.selectReportDetail(conds, sort, 0, 0);
for (ReportFormDetail obj : list) {
obj.setSex(StringUtils.isEmpty(obj.getSex()) ? "" : obj.getSex().equals("1") ? "男":"女");
if(!StringUtils.isEmpty(report.getPhone())){
conds.like("phone",report.getPhone());
}
if(!StringUtils.isEmpty(report.getDrugsNum())){
conds.equal("drugs_num",report.getDrugsNum());
}
if(!StringUtils.isEmpty(startPayTime)){
conds.greatEqual("DATE_FORMAT(fk_time,'%Y-%m-%d')",startPayTime);
}
if(!StringUtils.isEmpty(endPayTime)){
conds.lessEqual("DATE_FORMAT(fk_time,'%Y-%m-%d')",endPayTime);
}
ExcelKit.$Export(ReportFormDetail.class, response).toExcel(list, "报表管理信息");
List<Report> list = reportService.fetchSearchByPage(conds, sort, 0, 0);
ExcelKit.$Export(Report.class, response).toExcel(list, "报表信息信息");
}
@RequestMapping("/templateExcel")
@RequiresPermissions(value = REPORTFORM_VIEW)
@RequiresPermissions(value = REPORT_VIEW)
public void templateExcel(HttpServletRequest request, HttpServletResponse response) {
ExcelKit.$Export(ReportForm.class, response).toExcel(null, "报表管理信息");
ExcelKit.$Export(Report.class, response).toExcel(null, "报表信息信息");
}
@RequestMapping("/importExcel")
@RequiresPermissions(value = REPORTFORM_EDIT)
@RequiresPermissions(value = REPORT_EDIT)
public String importExcel(HttpServletRequest request, MultipartFile file, Model model) {
Long accountId = UserUtils.getmpaccounts(request);
if (file == null) {
......@@ -177,9 +241,9 @@ public class ReportFormController {
file.transferTo(storeFile);
ExcelKit.$Import().setEmptyCellValue("").readExcel(storeFile, rowData -> {
if (!StringUtils.isEmpty(rowData.get(0))) {
ReportForm reportForm = new ReportForm();
reportForm.setAccountsId(accountId);
reportFormService.save(reportForm);
Report report = new Report();
report.setAccountsId(accountId);
reportService.save(report);
}
});
} catch (IOException e) {
......
package com.cftech.report.web;
import com.cftech.base.org.model.OrgUnit;
import com.cftech.base.org.model.Qyuser;
import com.cftech.base.org.service.OrgUnitService;
import com.cftech.base.org.service.QyuserService;
import com.cftech.core.scope.OrderType;
import com.cftech.core.sql.Conds;
import com.cftech.core.sql.Sort;
import com.cftech.core.util.SystemConfig;
import com.cftech.report.model.Report;
import com.cftech.report.model.ReportCode;
import com.cftech.report.model.ReportDoctorInfo;
import com.cftech.report.model.ReportPeopleInfo;
import com.cftech.report.service.ReportService;
import com.cftech.shop.qrcode.model.QyUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @author 13154
*/
@RestController
@RequestMapping(value = "test/report")
public class TestController {
@Autowired
private ReportService reportService;
@Autowired
private OrgUnitService orgUnitService;
@Autowired
private QyuserService qyuserService;
@GetMapping(value = "test")
public String test(){
Conds condPeople = new Conds();
condPeople.equal("DATE_FORMAT(detail.create_time ,'%Y-%m-%d')","2020-12-03");
condPeople.equal("detail.del_flag",0);
Sort sortPeople = new Sort("detail.create_time", OrderType.DESC);
//获取报表用户信息
List<ReportPeopleInfo> listPeople = reportService.selectReportPeopleInfo(condPeople,sortPeople);
Report report = null;
if(listPeople.size() > 0){
for (ReportPeopleInfo reportPeopleInfo : listPeople) {
report = new Report();
report.setProductName(reportPeopleInfo.getProductName());
report.setDrugsNum(reportPeopleInfo.getDrugsNum());
report.setOrderNumber(reportPeopleInfo.getOrderNumber());
report.setConsultNumber(reportPeopleInfo.getConsultNumber());
report.setUserName(reportPeopleInfo.getUserName());
report.setPhone(reportPeopleInfo.getPhone());
report.setCfDoctor(reportPeopleInfo.getCfDoctor());
report.setCfHospital(reportPeopleInfo.getCfHospital());
report.setFkTime(reportPeopleInfo.getFkTime());
report.setFhTime(reportPeopleInfo.getFhTime());
report.setSjTime(reportPeopleInfo.getSjTime());
//根据openId获取扫码记录 只获取医生和组织二维码
Conds condCode = new Conds();
condCode.equal("record.openid",reportPeopleInfo.getOpenId());
condCode.in("record.type",new String[]{"3","4"});
Sort sortCode = new Sort("record.create_time",OrderType.DESC);
List<ReportCode> listCode = reportService.selectReportCodeInfo(condCode,sortCode);
if(listCode.size()>0){
if(listCode.get(0).getType().equals("3")){
//二维码类型为医生 根据绑定的医生人员ID查医生信息
Conds condDoctor = new Conds();
condDoctor.equal("qyuser.id",listCode.get(0).getBindId());
condDoctor.equal("qyuser.del_flag","0");
ReportDoctorInfo reportDoctorInfo = reportService.selectReportDoctorInfo(condDoctor);
if(reportDoctorInfo != null){
report.setDoctorName(reportDoctorInfo.getUserName());
report.setDoctorPhone(reportDoctorInfo.getUserPhone());
report.setDoctorTitle("医生");
report.setSex(reportDoctorInfo.getGender());
String orgParentIds = reportDoctorInfo.getOrgParentIds();
String[] orgParentIdArray = orgParentIds.split(",");
String regionOrgIds = SystemConfig.p.getProperty("REGION_LONG_ID");
if (orgParentIds.contains(regionOrgIds) && orgParentIdArray.length > regionOrgIds.split(",").length){
//若果医生组织id在区域组织下面 则根据大区长编码获取下面所有组织信息
String areIds = regionOrgIds + regionOrgIds.split(",")[4];
Conds condOrg = new Conds();
condOrg.rightLike("t.parent_ids",areIds);
Sort sortOrg = new Sort("t.parent_id",OrderType.ASC);
List<OrgUnit> orgUnits = orgUnitService.fetchSearchByPage(0L,condOrg,sortOrg,0,0);
if (orgUnits.size() > 0){
//若根据大区长编码查出数据 循环
for (OrgUnit orgUnit : orgUnits){
int level = orgUnit.getParentIds().split(",").length;
if (level == 4){
// 大区
report.setRegion(orgUnit.getOrgName());
}else if (level == 5){
// 省
report.setProvince(orgUnit.getOrgName());
}else if (level == 6) {
// 市
report.setCity(orgUnit.getOrgName());
}else if (level == 7) {
//医院
report.setHospital(orgUnit.getOrgName());
// 根据医院组织ID 查找医院下面的销售代表
Conds condDepartment = new Conds();
condDepartment.equal("t.org_id",orgUnit.getId());
List<Qyuser> listUser = qyuserService.fetchSearchByPage(0L,condDepartment,null,0,0);
StringBuffer sb = new StringBuffer();
if(listUser.size() > 0){
for (Qyuser qyuser : listUser) {
sb.append(qyuser.getName() + ",");
}
}
report.setSalesRepresent(sb.toString());
}else if (level == 8) {
//科室
report.setDepartment(orgUnit.getOrgName());
}
}
}
}
}
}else{
//二维码类型为组织 根据绑定的组织ID获取对应组织信息
OrgUnit orgUnitObj = orgUnitService.fetchById(listCode.get(0).getBindId());
if(orgUnitObj != null){
String orgParentIds = orgUnitObj.getParentIds();
String[] orgParentIdArray = orgParentIds.split(",");
String regionOrgIds = SystemConfig.p.getProperty("REGION_LONG_ID");
if (orgParentIds.contains(regionOrgIds) && orgParentIdArray.length > regionOrgIds.split(",").length){
//若果医生组织id在区域组织下面 则根据大区长编码获取下面所有组织信息
String areIds = regionOrgIds + orgParentIdArray[3];
Conds condOrg = new Conds();
condOrg.rightLike("t.parent_ids",areIds);
Sort sortOrg = new Sort("t.parent_id",OrderType.ASC);
List<OrgUnit> orgUnits = orgUnitService.fetchSearchByPage(0L,condOrg,sortOrg,0,0);
if (orgUnits.size() > 0){
//若根据大区长编码查出数据 循环
for (OrgUnit orgUnit : orgUnits){
int level = orgUnit.getParentIds().split(",").length;
if (level == 4){
// 大区
report.setRegion(orgUnit.getOrgName());
}else if (level == 5){
// 省
report.setProvince(orgUnit.getOrgName());
}else if (level == 6) {
// 市
report.setCity(orgUnit.getOrgName());
}else if (level == 7) {
//医院
report.setHospital(orgUnit.getOrgName());
// 根据医院组织ID 查找医院下面的销售代表
Conds condDepartment = new Conds();
condDepartment.equal("t.org_id",orgUnit.getId());
List<Qyuser> listUser = qyuserService.fetchSearchByPage(0L,condDepartment,null,0,0);
StringBuffer sb = new StringBuffer();
if(listUser.size() > 0){
for (int i = 0; i < listUser.size(); i++) {
Qyuser qyUser = listUser.get(i);
if(i == listUser.size()-1){
sb.append(qyUser.getName() );
}else{
sb.append(qyUser.getName() + ",");
}
}
}
report.setSalesRepresent(sb.toString());
}else if (level == 8) {
//科室
report.setDepartment(orgUnit.getOrgName());
}
}
}
}
}
//查找医生信息
Conds conds = new Conds();
conds.equal("record.openid",reportPeopleInfo.getOpenId());
conds.in("record.type",new String[]{"3"});
Sort sort = new Sort("record.create_time",OrderType.DESC);
List<ReportCode> list = reportService.selectReportCodeInfo(conds,sort);
if(list.size() > 0){
Conds condDoctor = new Conds();
condDoctor.equal("qyuser.id",listCode.get(0).getBindId());
condDoctor.equal("qyuser.del_flag","0");
ReportDoctorInfo reportDoctorInfo = reportService.selectReportDoctorInfo(condDoctor);
if (reportDoctorInfo != null){
report.setDoctorName(reportDoctorInfo.getUserName());
report.setDoctorPhone(reportDoctorInfo.getUserPhone());
report.setDoctorTitle("医生");
report.setSex(reportDoctorInfo.getGender());
}
}
}
}
//新增报表记录
reportService.save(report);
}
}
return null;
}
}
package com.cftech.reportform.dao;
import com.cftech.reportform.model.ReportForm;
import com.cftech.core.generic.GenericDao;
import com.cftech.reportform.model.ReportFormDetail;
import java.util.List;
import java.util.Map;
/**
* 报表管理Mapper
*
* @author Licc
* @date: 2020-10-16 14:33
*/
public interface ReportFormMapper extends GenericDao<ReportForm> {
/**
* 查询报表
* @param params
* @return
*/
List<ReportFormDetail> selectReportDetail(Map<String,Object> params);
}
\ No newline at end of file
package com.cftech.reportform.model;
import com.cftech.core.poi.ExportConfig;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 报表管理
*
* @author Licc
* @date: 2020-10-16 14:33
*/
@Data
public class ReportForm implements Serializable {
/*药师名称*/
@ExportConfig(value = "药师名称", width = 100, showLevel = 1)
private String pharmacist;
/*客服名称*/
@ExportConfig(value = "客服名称", width = 100, showLevel = 1)
private String customerName;
/*订单编号*/
@ExportConfig(value = "订单编号", width = 100, showLevel = 1)
private String number;
/*订单金额*/
@ExportConfig(value = "订单金额", width = 100, showLevel = 1)
private Double orderAmount;
/*咨询单号*/
@ExportConfig(value = "咨询单号", width = 100, showLevel = 1)
private String numberCode;
/*物流单号 */
@ExportConfig(value = "物流单号", width = 100, showLevel = 1)
private String logisticsCode;
/*物流状态*/
@ExportConfig(value = "物流状态", width = 100, showLevel = 1)
private Long logisticsStatus;
/* 所属的账号 */
private Long accountsId;
/* 删除标识 */
private boolean delFlag;
/* 状态 */
private String status;
/* 创建时间 */
private Date createTime;
/* 更新时间 */
private Date updateTime;
/* 备注 */
private String description;
/* 创建人 */
private Long createBy;
/* 更新人 */
private Long updateBy;
}
\ No newline at end of file
package com.cftech.reportform.model;
import com.cftech.core.poi.ExportConfig;
import lombok.Data;
/**
* 报表信息实体类
* @author BuYJ
*/
@Data
public class ReportFormDetail {
/**
* 咨询单ID
*/
private String id;
/**
* 咨询单编码 1
*/
@ExportConfig(value = "咨询单编码", width = 100, showLevel = 1)
private String consultId;
/**
* 订单编码 2
*/
@ExportConfig(value = "订单编码", width = 100, showLevel = 1)
private String orderCode;
/**
* 顺风编码 3
*/
@ExportConfig(value = "顺风编码", width = 100, showLevel = 1)
private String courierNumber;
/**
* 物流编码 4
*/
@ExportConfig(value = "物流编码", width = 100, showLevel = 1)
private String waybillNumber;
/**
* 战区 5
*/
@ExportConfig(value = "战区", width = 100, showLevel = 1)
private String warZone;
/**
* 省 6
*/
@ExportConfig(value = "省", width = 100, showLevel = 1)
private String provinceName;
/**
* 市 7
*/
@ExportConfig(value = "市", width = 100, showLevel = 1)
private String cityName;
/**
* 医院名称 8
*/
@ExportConfig(value = "医院名称", width = 100, showLevel = 1)
private String hospital;
/**
* 药师名称 9
*/
@ExportConfig(value = "药师名称", width = 100, showLevel = 1)
private String pharmaName;
/**
* 客服名称 10
*/
@ExportConfig(value = "客服名称", width = 100, showLevel = 1)
private String customerName;
/**
* 医生名称 11
*/
@ExportConfig(value = "医生名称", width = 100, showLevel = 1)
private String doctorName;
/**
* 咨询人openId 12
*/
@ExportConfig(value = "咨询人openId", width = 100, showLevel = 1)
private String openId;
/**
* 咨询人姓名 13
*/
@ExportConfig(value = "咨询人姓名", width = 100, showLevel = 1)
private String userName;
/**
* 性别 14
*/
@ExportConfig(value = "性别", width = 100, showLevel = 1)
private String sex;
/**
* 咨询人手机号码 15
*/
@ExportConfig(value = "咨询人手机号码", width = 100, showLevel = 1)
private String phone;
/**
* 处方医院ID
*/
private String pastRecords;
/**
* 医生ID
*/
private String doctorId;
/**
* 客户ID
*/
private String serviceId;
/**
* 咨询药品ID
*/
private String drugsId;
/**
* 订单ID
*/
private String orderId;
/**
* 处方医院ID
*/
private String allergy;
}
package com.cftech.reportform.service;
import com.cftech.core.sql.Conds;
import com.cftech.core.sql.Sort;
import com.cftech.reportform.model.ReportForm;
import com.cftech.core.generic.GenericService;
import com.cftech.reportform.model.ReportFormDetail;
import java.util.List;
import java.util.Map;
/**
* 报表管理Service
*
* @author Licc
* @date: 2020-10-16 14:33
*/
public interface ReportFormService extends GenericService<ReportForm> {
/**
* 查询报表
* @param conds
* @param sort
* @param page
* @param pageSize
* @return
*/
List<ReportFormDetail> selectReportDetail(Conds conds, Sort sort, int page, int pageSize);
}
package com.cftech.reportform.service.impl;
import com.cftech.core.sql.Sort;
import com.cftech.reportform.model.ReportForm;
import com.cftech.reportform.dao.ReportFormMapper;
import com.cftech.reportform.model.ReportFormDetail;
import com.cftech.reportform.service.ReportFormService;
import com.cftech.core.generic.GenericDao;
import com.cftech.core.generic.GenericServiceImpl;
import com.cftech.core.sql.Conds;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 报表管理ServiceImpl
*
* @author Licc
* @date: 2020-10-16 14:33
*/
@Service("reportFormService")
public class ReportFormServiceImpl extends GenericServiceImpl<ReportForm> implements ReportFormService {
@Autowired
@Qualifier("reportFormMapper")
private ReportFormMapper reportFormMapper;
@Override
public GenericDao<ReportForm> getGenericMapper() {
return reportFormMapper;
}
@Override
public List<ReportFormDetail> selectReportDetail(Conds conds, Sort sort, int page, int pageSize) {
Map<String, Object> params = new HashMap<String, Object>();
params.put("conds", conds);
params.put("offset", page > 0 ? page : 0);
params.put("limit", pageSize > 0 ? pageSize : 0);
params.put("sort", sort);
return reportFormMapper.selectReportDetail(params);
}
}
\ No newline at end of file
......@@ -44,7 +44,7 @@ LOG_URL=http://www.michang-tech.com.cn:6989/log/addlog
#\u6821\u9A8C\u5151\u6362\u5BC6\u7801KEY
MEMBER_PASSWORD_KEY=DONGCHANGINT9527;
list.refreshtoken=true
jwt.domain=pd.shxrtech.com
jwt.domain=localhost
#\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD
jwt.duration=86400000
#\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u03AAtrue
......@@ -75,6 +75,8 @@ PAYEE=\u6C6A\u8A00\u52C7
INVOICE_API=nuonuo.ElectronInvoice.requestBillingNew
INVOICE_URL=https://sandbox.nuonuocs.cn/open/v1/services
REGION_LONG_ID=0,1,5,
#\u5546\u6237\u53F7\u914D\u7F6E\u6587\u4EF6
mch.mch_id=1604243615
#\u7EC8\u7AEFid
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment