Commit 936c375e authored by 谢希宇's avatar 谢希宇

fix:修改bug,增加收费

parent c9326ca1
......@@ -123,10 +123,11 @@
<div class="col-xs-2">
<select id="orderStatus" name="orderStatus" class="form-control required">
<option value="">请选择订单状态</option>
<option value="-1" selected>待收货/已完成</option>
<option value="0">待确认</option>
<option value="1">待付款</option>
<option value="2">待发货</option>
<option value="3" selected>待收货</option>
<option value="3">待收货</option>
<option value="4">已完成</option>
<option value="5">已取消</option>
</select>
......@@ -152,18 +153,6 @@
</div>
</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="endCreateTime" placeholder="提交结束时间"-->
<!-- readonly="readonly">-->
<!-- </div>-->
<!-- </div>-->
<div class="col-xs-4">
<div class="input-group date">
<div class="input-group-addon">
......@@ -175,18 +164,6 @@
</div>
</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="endAuditTime" placeholder="审核结束时间"-->
<!-- readonly="readonly">-->
<!-- </div>-->
<!-- </div>-->
<div class="col-xs-4">
<a href="javascript:void(0)" class="btn btn-primary search">搜索</a>
<button type="button" class="btn btn-info" onclick="clearSearch()">重置</button>
......@@ -216,7 +193,6 @@
<th>审核时间</th>
<th>处方单</th>
</tr>
</thead>
<tbody id="tablebody">
</tbody>
......
......@@ -241,11 +241,6 @@
<!-- </span>-->
</div>
<div class="form-group form-md-line-input col-xs-3">
<label>随机号</label>
<input type="text" name="randomNo" id="randomNo"
#if ($!{data.isThree} == '1') value="$!{data.randomNo}" #end class="form-control" placeholder="随机号" readonly="readonly">
</div>
<div class="form-group form-md-line-input col-xs-3">
<label>入组医院</label>
<input type="text" name="firstHospital" id="firstHospital"
......@@ -253,20 +248,21 @@
</div>
<div class="form-group form-md-line-input col-xs-3">
<label>处方单<font style="color: red"></font></label>
<br/>
<div class="form-group " id="imageurl"
style="width: 120px; height: 120px; margin-left: 5px; padding: 10px; background-color: #f4f4f4; border: 1px solid #CCCCCC">
<img id="prescription"
style="cursor:zoom-in; width: 100%; height: 100% "
src="$!{data.prescription}" onclick="imgcli(this)">
<label>随访医院</label>
<input type="text" name="followupHospital" id="followupHospital"
#if ($!{data.isThree} == '1') value="$!{data.followupHospital}" #end class="form-control" placeholder="随访医院" readonly="readonly">
</div>
<div class="form-group form-md-line-input col-xs-3">
<label>扫码医院</label>
<input type="text" name="qrcodeHospital" id="qrcodeHospital"
value="$!{qrcodeHospital}" class="form-control" placeholder="扫码医院" readonly="readonly">
</div>
<div class="form-group form-md-line-input col-xs-3">
<label>访医院</label>
<input type="text" name="followupHospital" id="followupHospital"
#if ($!{data.isThree} == '1') value="$!{data.followupHospital}" #end class="form-control" placeholder="随访医院" readonly="readonly">
<label>机号</label>
<input type="text" name="randomNo" id="randomNo"
#if ($!{data.isThree} == '1') value="$!{data.randomNo}" #end class="form-control" placeholder="随机号" readonly="readonly">
</div>
<div class="form-group form-md-line-input col-xs-6">
......@@ -279,23 +275,16 @@
</div>
</div>
<!-- <div class="form-group form-md-line-input col-xs-3">-->
<!-- <label></label>-->
<!-- <div class="input-group">-->
<!-- <input type="text" name="historySheet" id="historySheet"-->
<!-- class="form-control"-->
<!-- style="display: none">-->
<!-- <input type="text" id="historySheetName" name="historySheetName"-->
<!-- class="form-control" style="display: none">-->
<!-- <span class="input-group-btn">-->
<!-- <button type="button" name="history" id="history"-->
<!-- class="btn btn-info btn-flat">查看历史咨询单</button>-->
<!-- </span>-->
<!-- </div>-->
<!-- </div>-->
<div class="form-group form-md-line-input col-xs-3">
<label>处方单<font style="color: red"></font></label>
<br/>
<div class="form-group " id="imageurl"
style="width: 120px; height: 120px; margin-left: 5px; padding: 10px; background-color: #f4f4f4; border: 1px solid #CCCCCC">
<img id="prescription"
style="cursor:zoom-in; width: 100%; height: 100% "
src="$!{data.prescription}" onclick="imgcli(this)">
</div>
</div>
</div>
</div>
......
......@@ -16,5 +16,11 @@
<artifactId>order-module</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.cftech</groupId>
<artifactId>reportform-module</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
\ No newline at end of file
......@@ -141,12 +141,17 @@ public class ConsultSheetServiceImpl extends GenericServiceImpl<ConsultSheet> im
//展示客服二维码
Qyuser serviceCus = qyuserService.fetchById(consultSheet.getServiceId());
if (serviceCus == null) {
retObj.put("errorNo", 1);
retObj.put("errorMsg", "暂无客服,请拨打热线电话");
} else {
JSONObject serviceCusObj = new JSONObject();
serviceCusObj.put("qrcode", serviceCus.getQrcode());
serviceCusObj.put("alias", serviceCus.getStoreName());
retObj.put("errorNo", 0);
retObj.put("data", serviceCusObj);
retObj.put("errorMsg", "咨询单提交成功,请等待药师审核");
}
} else {
retObj.put("errorNo", 1);
retObj.put("errorMsg", "咨询单保存失败");
......@@ -353,24 +358,27 @@ public class ConsultSheetServiceImpl extends GenericServiceImpl<ConsultSheet> im
//推送客服消息
String msg = null;
Qyuser service = qyuserService.fetchById(consultSheet.getServiceId());
if (service != null) {
msg = SystemConfig.p.getProperty("QY_SEND_CUSTOMERSERVICE_MSG").replace("{NUMBER}", consultSheet.getConsultId())//
.replace("{NICKNAME}", nickname)//
.replace("{FANSALIAS}", fansAlias);
List<Qyuser> serviceUsers = new ArrayList();
serviceUsers.add(service);
JSONObject result = qyMsgUtil.sendText(accounts, false, serviceUsers, null, null,
agenId, msg, false);
JSONObject result = qyMsgUtil.sendText(accounts, false, serviceUsers, null, null, agenId, msg, false);
log.info("客服,消息发送日志 {}", result.toString());
}
Qyuser doctor = qyuserService.fetchById(consultSheet.getDoctorId());
if (service != null) {
msg = SystemConfig.p.getProperty("QY_SEND_DOCTOR_MSG").replace("{NUMBER}", consultSheet.getConsultId())//
.replace("{NICKNAME}", nickname)//
.replace("{FANSALIAS}", fansAlias);
List<Qyuser> doctorUsers = new ArrayList();
doctorUsers.add(doctor);
qyMsgUtil.sendText(accounts, false, doctorUsers, null, null,
agenId, msg, false);
JSONObject result = qyMsgUtil.sendText(accounts, false, doctorUsers, null, null, agenId, msg, false);
log.info("医生,消息发送日志 {}", result.toString());
}
}
}
\ No newline at end of file
......@@ -10,7 +10,9 @@ import com.cftech.addresst.model.Address;
import com.cftech.addresst.service.AddressService;
import com.cftech.base.codingrule.utils.CodingruleUtils;
import com.cftech.base.org.api.QyMsgUtil;
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.consultsheet.model.ConsultSheet;
import com.cftech.consultsheet.model.ConsultSheetReportVo;
......@@ -25,6 +27,8 @@ import com.cftech.mp.fans.model.MpFanssEntity;
import com.cftech.mp.fans.service.MpFanssService;
import com.cftech.order.model.Order;
import com.cftech.order.service.OrderService;
import com.cftech.report.model.ReportCode;
import com.cftech.report.service.ReportService;
import com.cftech.sys.security.UserUtils;
import com.cftech.sys.service.RoleService;
import com.google.gson.Gson;
......@@ -39,6 +43,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
......@@ -100,6 +105,12 @@ public class ConsultSheetController {
@Autowired
private RoleService roleService;
@Autowired
private ReportService reportService;
@Autowired
private OrgUnitService orgUnitService;
/**
* 咨询单列表
* @param request
......@@ -154,6 +165,7 @@ public class ConsultSheetController {
public String form(String pageType, String id, Model model) {
if (StringUtils.isNoneBlank(id)) {
ConsultSheet consultSheet = consultSheetService.fetchById(id);
model.addAttribute("qrcodeHospital", "");
if (StringUtils.isNoneBlank(consultSheet.getUserName()) && consultSheet.getUserName().length() >=2) {
StringBuilder str = new StringBuilder(consultSheet.getUserName());
str.replace(1, 2, "*");
......@@ -173,7 +185,15 @@ public class ConsultSheetController {
consultSheet.setFansAlias(mpFanssEntity.getStore());
}
Conds condCode = new Conds();
condCode.equal("record.openid", consultSheet.getOpenId());
condCode.in("record.type", new String[]{"4"});
Sort sortCode = new Sort("record.create_time", OrderType.DESC);//获取最新扫码记录
List<ReportCode> listCode = reportService.selectReportCodeInfo(condCode, sortCode);
if (!CollectionUtils.isEmpty(listCode)) {
OrgUnit orgUnitObj = orgUnitService.fetchById(listCode.get(0).getBindId());
model.addAttribute("qrcodeHospital", orgUnitObj.getOrgName());
}
}
JSONObject object = JSON.parseObject(JSON.toJSONString(consultSheet));
model.addAttribute("orgtypeId", SystemConfig.p.getProperty("HOSPITAL_ORG_TYPE_ID"));
......@@ -238,8 +258,13 @@ public class ConsultSheetController {
conds.equal("a.status", consultSheet.getStatus());
}
if (StringUtils.isNoneBlank(consultSheet.getOrderStatus())) {
if (StringUtils.equals("-1", consultSheet.getOrderStatus())) {//待收货和已完成
conds.in("o.status", new String[]{ "3", "4" });
} else {
conds.equal("o.status", consultSheet.getOrderStatus());
}
}
if (consultSheet.getServiceId() != null) {
conds.equal("a.service_id", consultSheet.getServiceId());
}
......
......@@ -55,7 +55,7 @@ public class Invoice implements Serializable {
@ExportConfig(value = "失败原因", width = 100, showLevel = 1)
private String invoiceContent;
/** 创建时间 */
@ExportConfig(value = "失败原因", width = 100, showLevel = 1, dateFormat = "yyyy-MM-dd")
@ExportConfig(value = "开票时间", width = 100, showLevel = 1, dateFormat = "yyyy-MM-dd")
private Date createTime;
/** 商品ID */
......
#微信会话文档加密解密
publicKey
-----BEGIN RSA PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCZ/PGOR2XziMhPgM5ExD5ef4Gj
UXS4YLhiTOVs2Z4NiqF57HdT1x1KXCsW3C3IApxEUyAWBwr4VXJ1tZqJ7ANr6HiY
RugqbeuKb4bzXWV9YvcdTrZ1qZCx54cSFFcVYMOFY4XeYNlUoP3O7g/UzccwhsHp
/bq7JSDGaZzbHn+owQIDAQAB
-----END PUBLIC KEY-----
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQCZ/PGOR2XziMhPgM5ExD5ef4GjUXS4YLhiTOVs2Z4NiqF57HdT
1x1KXCsW3C3IApxEUyAWBwr4VXJ1tZqJ7ANr6HiYRugqbeuKb4bzXWV9YvcdTrZ1
qZCx54cSFFcVYMOFY4XeYNlUoP3O7g/UzccwhsHp/bq7JSDGaZzbHn+owQIDAQAB
AoGACwvVUyjFhD0Pa36YrV+rfrFkXhAZkKFlkK2l9pM8zolfkIS5QaMoh31JnQPx
58tiJNeWsWXTcGGGyrFakuLCkvZXlMIhp6ktTlIeo88cERzHvcpUzWYja1GkRIOn
KcPd8K9a1DVh5ujV5adt1mb7v88BMwS+8FxAmGd+70fm+B0CQQDGBRLbog19ezz1
J5fMrTuB+LBH4m4kNly7BS+o6TDs8mFHIQkN1MgoSTJR41YfviAJXQVG5mIdnEA4
2i/6zEU1AkEAxxNkN85r9eZDTJs7uT1wUpCW0NwTcxD8bL6JisVx03CehSlvQMwJ
hl7LH3Y/cRR4XB9eVtt5tGkHuwpebFeC3QJAfV72+pGWQu0Ewh5oMJE5TOe8DDcj
DtBQU6RL8YB6lno69sLGrbgbZc46CriJbZ19QRBg5+uzERY9XwFdQUeVRQJBAJii
PYysMApxadgqjTgR6zTitz+b/S2UMHYQANTtXcCH8IKYqjw8NHFZ7NNKjonc8Atx
4Zsm28F/ZfX6lTrsPeECQQCzJmcoMMk/d4PUfT/iZtJU7b47uHR8diqVTRz/e7Fr
ISfQ12zQFyW+E6T37us90Q0PoYwi9nHAx5c/tyWCW2jZ
-----END RSA PRIVATE KEY-----
-----BEGIN RSA PRIVATE KEY----- 8
MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAJn88Y5HZfOIyE+A
zkTEPl5/gaNRdLhguGJM5WzZng2KoXnsd1PXHUpcKxbcLcgCnERTIBYHCvhVcnW1
monsA2voeJhG6Cpt64pvhvNdZX1i9x1OtnWpkLHnhxIUVxVgw4Vjhd5g2VSg/c7u
D9TNxzCGwen9urslIMZpnNsef6jBAgMBAAECgYALC9VTKMWEPQ9rfpitX6t+sWRe
EBmQoWWQraX2kzzOiV+QhLlBoyiHfUmdA/Hny2Ik15axZdNwYYbKsVqS4sKS9leU
wiGnqS1OUh6jzxwRHMe9ylTNZiNrUaREg6cpw93wr1rUNWHm6NXlp23WZvu/zwEz
BL7wXECYZ37vR+b4HQJBAMYFEtuiDX17PPUnl8ytO4H4sEfibiQ2XLsFL6jpMOzy
YUchCQ3UyChJMlHjVh++IAldBUbmYh2cQDjaL/rMRTUCQQDHE2Q3zmv15kNMmzu5
PXBSkJbQ3BNzEPxsvomKxXHTcJ6FKW9AzAmGXssfdj9xFHhcH15W23m0aQe7Cl5s
V4LdAkB9Xvb6kZZC7QTCHmgwkTlM57wMNyMO0FBTpEvxgHqWejr2wsatuBtlzjoK
uIltnX1BEGDn67MRFj1fAV1BR5VFAkEAmKI9jKwwCnFp2CqNOBHrNOK3P5v9LZQw
dhAA1O1dwIfwgpiqPDw0cVns00qOidzwC3HhmybbwX9l9fqVOuw94QJBALMmZygw
yT93g9R9P+Jm0lTtvju4dHx2KpVNHP97sWshJ9DXbNAXJb4TpPfu6z3RDQ+hjCL2
ccDHlz+3JYJbaNk=
-----END PRIVATE KEY-----
\ No newline at end of file
<!DOCTYPE html>
<!--[if IE 8]>
<html lang="en" class="ie8 no-js"> <![endif]-->
<!--[if IE 9]>
<html lang="en" class="ie9 no-js"> <![endif]-->
<!--[if !IE]><!-->
<html>
<!--<![endif]-->
<!-- BEGIN HEAD -->
<head>
<base href="#springUrl('/assets/adminlte/')"/>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>工作台</title>
<!-- Tell the browser to be responsive to screen width -->
<meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
<!-- Bootstrap 3.3.5 -->
<link rel="stylesheet" href="bootstrap/css/bootstrap.min.css">
<!-- Font Awesome -->
<link rel="stylesheet" href="plugins/font-awesome/css/font-awesome.min.css">
<!-- Ionicons -->
<link rel="stylesheet" href="plugins/ionicons/css/ionicons.min.css">
<!-- DataTables -->
<link rel="stylesheet" href="plugins/datatables/dataTables.bootstrap.css">
<!-- Theme style -->
<link rel="stylesheet" href="dist/css/AdminLTE.min.css">
<!-- AdminLTE Skins. Choose a skin from the css/skins
folder instead of downloading all of them to reduce the load. -->
<link rel="stylesheet" href="dist/css/skins/_all-skins.min.css">
<!-- iCheck -->
<link rel="stylesheet" href="plugins/iCheck/flat/blue.css">
<!-- Date Picker -->
<link rel="stylesheet" href="plugins/datepicker/datepicker3.css">
<!-- Daterange picker -->
<link rel="stylesheet" href="plugins/daterangepicker/daterangepicker-bs3.css">
<!-- bootstrap wysihtml5 - text editor -->
<link rel="stylesheet" href="plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.min.css">
<!--validate css-->
<link rel="stylesheet" href="plugins/jquery-validation/css/validate.css">
<!--fileinput css-->
<link rel="stylesheet" href="plugins/bootstrap-fileinput/bootstrap-fileinput.css">
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<!-- END HEAD -->
<body class="hold-transition skin-blue sidebar-mini">
<div class="wrapper">
<div class="content-wrapper" style="margin-left:0;">
<section class="content-header">
<h1>
处方单列表管理
<small>处方单列表</small>
</h1>
<ol class="breadcrumb">
<li><a href="#"><i class="fa fa-dashboard"></i>首页</a></li>
<li><a class="active">处方单列表</a></li>
</ol>
</section>
<!-- Main content -->
<section class="content">
<div class="row">
<div class="col-xs-12">
<!-- general form elements disabled -->
<div class="box box-primary">
<form role="form" id="myForm">
<input name="id" value="$!{data.id}" hidden="true"/>
<div class="box-body">
<div class="form-group form-md-line-input col-md-12">
<label>是否开启支付</label>
<select name="takeType" class="form-control pull-right">
<option label="关闭" value="0">关闭</option>
<option label="开启" value="周" #if($data.isPay == '1') selected #end>开启</option>
</select>
</div>
<div class="form-group form-md-line-input col-md-12">
<label>支付类型</label>
<select name="takeType" class="form-control pull-right">
<option label="全部" value="0">全部</option>
<option label="三期" value="1" #if($data.isPay == '1') selected #end>三期</option>
<option label="非三期" value="1" #if($data.isPay == '2') selected #end>非三期</option>
</select>
</div>
<div class="form-group form-md-line-input col-md-12">
<label>支付金额</label>
<input name="listHtml" class="form-control" type="number"
onkeyup="this.value=this.value.replace(/[^\d\.\d{0,2}]/g,'')"
value="1"/>
</div>
</div>
<div class="box-footer">
#if($shiro.hasPermission("qy:deploy:edit"))
<input class="btn btn-primary" id="save" value="保存" type="submit">
#end
<a href="#springUrl('/a/deploy/list')" class="btn btn-default">取消</a>
</div>
</form>
<!-- /.box-body -->
</div><!-- /.box -->
</div><!-- /.col -->
</div><!-- /.row -->
</section><!-- /.content -->
</div><!-- /.content-wrapper -->
<!-- Add the sidebar's background. This div must be placed
immediately after the control sidebar -->
<div class="control-sidebar-bg"></div>
</div><!-- ./wrapper -->
<script src="plugins/jQuery/jQuery-2.1.4.min.js"></script>
<!-- Bootstrap 3.3.5 -->
<script src="bootstrap/js/bootstrap.min.js"></script>
<!-- DataTables -->
<script src="plugins/datatables/jquery.dataTables.min.js"></script>
<script src="plugins/datatables/extensions/i18n/lanauage_ch.js"></script>
<script src="plugins/datatables/dataTables.bootstrap.min.js"></script>
<!-- SlimScroll -->
<script src="plugins/slimScroll/jquery.slimscroll.min.js"></script>
<!-- FastClick -->
<script src="plugins/fastclick/fastclick.min.js"></script>
<!--fileinput js-->
<script src="plugins/bootstrap-fileinput/bootstrap-fileinput.js"></script>
<!-- AdminLTE App -->
<script src="dist/js/app.min.js"></script>
<script src="plugins/bootstrap-maxlength/bootstrap-maxlength.min.js" type="text/javascript"></script>
<script src="plugins/security/sha256.js" type="text/javascript"></script>
<script src="plugins/jquery-validation/js/jquery.validate.min.js"></script>
<script src="js/jquery.form.min.js"></script>
<script type="text/javascript" charset="utf-8" src="plugins/ueditor-min-1.4.3/ueditor.config.js"></script>
<script type="text/javascript" charset="utf-8" src="plugins/ueditor-min-1.4.3/ueditor.all.js"></script>
<script type="text/javascript" charset="utf-8" src="plugins/ueditor-min-1.4.3/lang/zh-cn/zh-cn.js"></script>
<script src="common/js/cfapp.js"></script>
<!-- END PAGE LEVEL PLUGINS -->
<script>
$().ready(function () {
Cfapp.init();
recdTypeAdd.init();
});
var recdTypeAdd = function () {
var initForm = function () {
var initFormCtrl = function () {
bindEvent();
};
var bindEvent = function () {
$("#myForm").validate({
rules: {},
messages: {},
submitHandler: function (form) {
$("#save").attr("disabled", true);
$.getJSON("#springUrl('/a/deploy/formData')", $("#myForm").serialize(), function (returnobj) {
$("#save").attr("disabled", false);
if (returnobj.errorNo == 2) { //保存成功
Cfapp.confirm({
message: "添加成功",
btnoktext: "继续添加",
btncanceltext: "关闭",
success: function () {
location.href = "#springUrl('/a/deploy/form')";
},
cancel: function () {
location.href = "#springUrl('/a/deploy/list')";
}
});
} else if (returnobj.errorNo == 0) { //修改成功
Cfapp.alert({
message: "更新成功",
btntext: "确定",
success: function () {
location.href = "#springUrl('/a/deploy/list')";
}
});
} else {
Cfapp.alert({
message: "创建失败",
btntext: "确定",
success: function () {
location.href = "#springUrl('/a/deploy/list')";
}
});
}
});
}
})
}
initFormCtrl();
}
return {
//main function to initiate the module
init: function () {
initForm();
}
};
}();
</script>
</body>
<!-- END BODY -->
</html>
\ No newline at end of file
<!DOCTYPE html>
<!--[if IE 8]>
<html lang="en" class="ie8 no-js"> <![endif]-->
<!--[if IE 9]>
<html lang="en" class="ie9 no-js"> <![endif]-->
<!--[if !IE]><!-->
<html>
<!--<![endif]-->
<!-- BEGIN HEAD -->
<head>
<base href="#springUrl('/assets/adminlte/')"/>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>工作台</title>
<!-- Tell the browser to be responsive to screen width -->
<meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
<!-- Bootstrap 3.3.5 -->
<link rel="stylesheet" href="bootstrap/css/bootstrap.min.css">
<!-- Font Awesome -->
<link rel="stylesheet" href="plugins/font-awesome/css/font-awesome.min.css">
<!-- Ionicons -->
<link rel="stylesheet" href="plugins/ionicons/css/ionicons.min.css">
<!-- DataTables -->
<link rel="stylesheet" href="plugins/datatables/dataTables.bootstrap.css">
<!-- Theme style -->
<link rel="stylesheet" href="dist/css/AdminLTE.min.css">
<!-- AdminLTE Skins. Choose a skin from the css/skins
folder instead of downloading all of them to reduce the load. -->
<link rel="stylesheet" href="dist/css/skins/_all-skins.min.css">
<!-- iCheck -->
<link rel="stylesheet" href="plugins/iCheck/flat/blue.css">
<!-- Morris chart -->
<link rel="stylesheet" href="plugins/morris/morris.css">
<!-- jvectormap -->
<link rel="stylesheet" href="plugins/jvectormap/jquery-jvectormap-1.2.2.css">
<!-- Date Picker -->
<link rel="stylesheet" href="plugins/datepicker/datepicker3.css">
<!-- Daterange picker -->
<link rel="stylesheet" href="plugins/daterangepicker/daterangepicker-bs3.css">
<link rel="stylesheet"
href="plugins\bootstrap-fileinput\fileinput.min.css">
<!-- bootstrap wysihtml5 - text editor -->
<link rel="stylesheet" href="plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.min.css">
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body class="hold-transition skin-blue sidebar-mini">
<div class="wrapper">
<div class="content-wrapper" style="margin-left:0;">
<div id="importExcelDiv"></div>
<section class="content-header">
<h1>
处方单列表管理
<small>处方单列表</small>
</h1>
<ol class="breadcrumb">
<li><a><i class="fa fa-dashboard"></i>首页</a></li>
<li><a class="active">处方单列表管理列表</a></li>
</ol>
</section>
<!-- Main content -->
<section class="content">
<div class="row">
<div class="col-xs-12">
<div class="box">
<div class="box-header">
<form id="seachTableForm" action="#springUrl('/a/deploy/list')" method="get">
<div class="col-xs-5">
<a href="#springUrl('/a/deploy/form')" class="btn btn-primary">新增</a>
</div>
</form>
</div><!-- /.box-header -->
<div class="box-body">
<table id="table" class="table table-bordered table-striped">
<thead>
<tr>
<td hidden="true">Id</td>
<th>名称</th>
<th>支付状态</th>
<th>支付人员类型</th>
<th>支付金额</th>
<!-- <th>是否检测</th>-->
<th>名称</th>
<th>创建时间</th>
<th>操作</th>
</tr>
</thead>
<tbody id="tablebody">
</tbody>
</table>
</div><!-- /.box-body -->
</div><!-- /.box -->
</div><!-- /.col -->
</div><!-- /.row -->
</section><!-- /.content -->
</div><!-- /.content-wrapper -->
<!-- Add the sidebar's background. This div must be placed
immediately after the control sidebar -->
<div class="control-sidebar-bg"></div>
</div><!-- ./wrapper -->
<!-- jQuery 2.1.4 -->
<script src="plugins/jQuery/jQuery-2.1.4.min.js"></script>
<!-- Bootstrap 3.3.5 -->
<script src="bootstrap/js/bootstrap.min.js"></script>
<!-- DataTables -->
<script src="plugins/datatables/jquery.dataTables.min.js"></script>
<script src="plugins/datatables/extensions/i18n/lanauage_ch.js"></script>
<script src="plugins/datatables/dataTables.bootstrap.min.js"></script>
<!-- SlimScroll -->
<script src="plugins/slimScroll/jquery.slimscroll.min.js"></script>
<script src="plugins/datepicker/bootstrap-datepicker.js"></script>
<script src="plugins/datepicker/locales/bootstrap-datepicker.zh-CN.js"></script>
<!-- FastClick -->
<script src="plugins/fastclick/fastclick.min.js"></script>
<!--fileinput js-->
<script src="plugins\bootstrap-fileinput\fileinput.js"></script>
<script src="plugins/bootstrap-fileinput/zh.js"></script>
<script src="plugins/bootstrap-fileinput/zh2.js"></script>
<!-- AdminLTE App -->
<script src="dist/js/app.min.js"></script>
<script type="text/javascript"
src="plugins/jquery-validation/js/jquery.validate.min.js"></script>
<!-- AdminLTE for demo purposes -->
<script src="common/js/cfapp.js"></script>
<script>
function formatDates(now) {
var now = new Date(now);
var year = now.getFullYear();
var month = now.getMonth() + 1;
var date = now.getDate();
var hour = now.getHours();
var minute = now.getMinutes();
var second = now.getSeconds();
return year + "-" + month + "-" + date + " " + hour + ":"
+ minute + ":" + second;
}
function seachTable() {
var sSource = "#springUrl('/a/deploy/listData')";
var aoData = {
iDisplayStart: 1,
iDosplayLength: 10
}
var retrieveData = function (sSource, aoData, fnCallback) {
$("#seachTableForm input").each(function () {
var params = {
name: $(this).attr("name"),
value: $(this).val()
};
aoData.push(params);
})
$.ajax({
"type": "GET",
"url": sSource,
"dataType": "json",
"data": aoData, //以json格式传递
"success": fnCallback
});
};
$('#table').DataTable({
"lengthChange": false,
"searching": false,
"ordering": false,
"bFiltered": false,
"bStateSave": true, // save datatable state(pagination, sort, etc) in cookie.
"bProcessing": true,
"bServerSide": true,
"sAjaxSource": sSource,
"fnServerData": retrieveData,
"pagingType": "full_numbers",
"aoColumns": [
{
"mData": "id"
},
{
"mData": "name"
},
{
"mData": "isPay"
},
{
"mData": "isThirdPhase"
},
{
"mData": "isExamination"
},
{
"mData": "createTime"
},
{
"mData": "id"
}],
"aoColumnDefs": [
{ // set default column settings
'visible': false,
'targets': [0]
},
{
"aTargets": [1],
"mData": "name",
},
{
"aTargets": [2],
"mData": "isPay",
},
{
"aTargets": [3],
"mData": "isThirdPhase",
},
{
"aTargets": [4],
"mData": "createTime",
"mRender": function (a, b, c, d) {
return formatDates(a, "yyyy-MM-dd HH:mm:ss");
}
},
{
"aTargets": [5],
"mData": "id",
"mRender": function (a, b, c, d) {
return '<a href="#springUrl("/a/deploy/form?id=' + c.id + '")" data-id="' + c.id + '" data-action="view">修改</a>';
}
},
]
});
}
jQuery(document).ready(function () {
seachTable();
$('.datepicker').datepicker({
show: true,
format: 'yyyy-mm-dd',
autoclose: true,
language: 'zh-CN',
todayBtn: 'linked',
clearBtn: 'linked'
});
$('.search').click(function () {
$("#table").dataTable().fnClearTable();
});
});
Cfapp.init();
function removeData(data) {
Cfapp.confirm({
message: "确定要删除吗",
btnoktext: "确定",
btncanceltext: "取消",
success: function () {
$.ajax({
type: "POST",
url: "#springUrl('/a/deploy/delete')",
data: {id: data},
dataType: "json",
success: function (data) {
if (data.errorNo == 0) {
Cfapp.alert({
message: "删除成功",
btntext: "确定",
success: function () {
location.href = "#springUrl('/a/deploy/list')";
}
});
}
},
error: function () {
}
})
},
cancel: function () {
$(".modal-backdrop").fadeOut();
}
});
}
function importExcel() {
var templateExcelUrl = "#springUrl('/a/deploy/templateExcel')";
var importExcelUrl = "#springUrl('/a/deploy/importExcel')";
Cfapp.importExcel({
title: '处方单列表导入',
importurl: importExcelUrl,
templateurl: templateExcelUrl,
cancel: function () {
},
success: function () {
}
});
}
</script>
</body>
</html>
......@@ -201,11 +201,6 @@
<div class="form-group form-md-line-input col-md-12">
<label>处方图片</label>
<!-- <input type="text" required readonly class="form-control pull-right"-->
<!-- value="$!{data.presUrl}" maxlength="500" required-->
<!-- name="docResult" placeholder="处方图片"-->
<!-- >-->
<div class="form-group " id="imageurl"
style="width: 120px; height: 120px; margin-left: 5px; padding: 10px; background-color: #f4f4f4; border: 1px solid #CCCCCC">
<img id="prescription"
......
......@@ -260,8 +260,7 @@
"aTargets": [9],
"mData": "createTime",
"mRender": function (a, b, c, d) {
return '<a href="#springUrl("/a/prescription/form?id=' + c.id + '")" data-id="' + c.id + '" data-action="view">' + formatDates(a, "yyyy-MM-dd HH:mm:ss");
+'</a>';
return formatDates(a, "yyyy-MM-dd HH:mm:ss");
}
},
......
......@@ -42,7 +42,7 @@ public class CdfortisTokenUtil {
/**
* flag
*/
private static String flag = SystemConfig.p.getProperty("cdfortis.flag");
private static String flag = SystemConfig.p.getProperty("cdfortis.store_no");
/**
* redis存储key
......
package com.cftech.deploy.dao;
import com.cftech.deploy.model.Deploy;
import com.cftech.core.generic.GenericDao;
/**
* 处方单列表Mapper
*
* @author Strive
* @date: 2021-09-08 15:30
*/
public interface DeployMapper extends GenericDao<Deploy> {
}
\ 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.deploy.dao.DeployMapper">
<resultMap id="resultMap" type="com.cftech.deploy.model.Deploy">
<id column="id" property="id"/>
<result column="name" property="name"/>
<result column="is_pay" property="isPay"/>
<result column="is_third_phase" property="isThirdPhase"/>
<result column="is_examination" property="isExamination"/>
<result column="number" property="number"/>
<result column="accounts_id" property="accountsId"/>
<result column="del_flag" property="delFlag"/>
<result column="status" property="status"/>
<result column="create_time" property="createTime"/>
<result column="update_time" property="updateTime"/>
<result column="description" property="description"/>
<result column="create_by" property="createBy"/>
<result column="update_by" property="updateBy"/>
</resultMap>
<sql id="sqlWhere">
<if test="conds!=null">
<trim prefix="WHERE" prefixOverrides="AND|OR">
<foreach collection="conds.conds" index="index" item="cond">
${cond.linkType}
<if test="cond.condType == 'EQUAL'">${cond.param} = #{cond.value}</if>
<if test="cond.condType == 'NOTEQUAL'">${cond.param} &lt;&gt; #{cond.value}</if>
<if test="cond.condType == 'GREATEQUAL'">${cond.param} &gt;= #{cond.value}</if>
<if test="cond.condType == 'GREATTHAN'">${cond.param} &gt; #{cond.value}</if>
<if test="cond.condType == 'LESSEQUAL'">${cond.param} &lt;= #{cond.value}</if>
<if test="cond.condType == 'LESSTHAN'">${cond.param} &lt; #{cond.value}</if>
<if test="cond.condType == 'BETWEEN'">${cond.param} BETWEEN #{cond.startValue} AND
#{cond.endValue}
</if>
<if test="cond.condType == 'ISNULL'">${cond.param} IS NULL</if>
<if test="cond.condType == 'NOTNULL'">${cond.param} IS NOT NULL</if>
<if test="cond.condType == 'LIKE'">${cond.param} LIKE #{cond.value}</if>
<if test="cond.condType == 'IN'">${cond.param} IN
<foreach item="item" index="index" collection="cond.value" open="(" separator="," close=")">
#{item}
</foreach>
</if>
</foreach>
</trim>
</if>
</sql>
<sql id="sqlColumns">
id
,
name,
is_pay,
is_third_phase,
is_examination,
number,
accounts_id,
del_flag,
status,
create_time,
update_time,
description,
create_by,
update_by
</sql>
<insert id="save" parameterType="com.cftech.deploy.model.Deploy" useGeneratedKeys="true"
keyProperty="id">
insert into t_aidea_platform_config
(
<include refid="sqlColumns"/>
)
values
(
#{id, jdbcType=BIGINT},
#{name, jdbcType=VARCHAR},
#{isPay, jdbcType=VARCHAR},
#{isThirdPhase, jdbcType=VARCHAR},
#{isExamination, jdbcType=VARCHAR},
#{number, jdbcType=VARCHAR},
#{accountsId, jdbcType=BIGINT},
#{delFlag, jdbcType=TINYINT},
#{status, jdbcType=VARCHAR},
now(),
now(),
#{description, jdbcType=VARCHAR},
#{createBy, jdbcType=BIGINT},
#{updateBy, jdbcType=BIGINT}
)
</insert>
<select id="fetchById" parameterType="java.lang.Long" resultMap="resultMap">
SELECT
<include refid="sqlColumns"/>
FROM t_aidea_platform_config t
WHERE t.id=#{id}
</select>
<select id="count" parameterType="java.util.Map" resultType="java.lang.Integer">
SELECT COUNT(1) FROM t_aidea_platform_config
<include refid="sqlWhere"/>
</select>
<select id="fetchSearchByPage" parameterType="java.util.Map" resultMap="resultMap">
SELECT
<include refid="sqlColumns"/>
FROM t_aidea_platform_config
<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.deploy.model.Deploy">
update t_aidea_platform_config
<set>
<if test="id != null">
id = #{id, jdbcType=BIGINT},
</if>
<if test="name != null">
name = #{name, jdbcType=VARCHAR},
</if>
<if test="isPay != null">
is_pay = #{isPay, jdbcType=VARCHAR},
</if>
<if test="isThirdPhase != null">
is_third_phase = #{isThirdPhase, jdbcType=VARCHAR},
</if>
<if test="isExamination != null">
is_examination = #{isExamination, jdbcType=VARCHAR},
</if>
<if test="number != null">
number = #{number, jdbcType=VARCHAR},
</if>
<if test="accountsId != null">
accounts_id = #{accountsId, jdbcType=BIGINT},
</if>
<if test="delFlag != null">
del_flag = #{delFlag, jdbcType=TINYINT},
</if>
<if test="status != null">
status = #{status, jdbcType=VARCHAR},
</if>
<if test="createTime != null">
create_time = #{createTime, jdbcType=TIMESTAMP},
</if>
<if test="description != null">
description = #{description, jdbcType=VARCHAR},
</if>
<if test="createBy != null">
create_by = #{createBy, jdbcType=BIGINT},
</if>
<if test="updateBy != null">
update_by = #{updateBy, jdbcType=BIGINT},
</if>
</set>
where id=#{id,jdbcType=BIGINT}
</update>
<update id="delete" parameterType="java.lang.Long">
update t_aidea_platform_config
set del_flag=1
where id = #{id,jdbcType=BIGINT}
</update>
</mapper>
\ No newline at end of file
package com.cftech.deploy.model;
import com.cftech.core.poi.ExportConfig;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 处方单列表
*
* @author Strive
* @date: 2021-09-08 15:30
*/
@Data
public class Deploy implements Serializable {
/* 主键id */
private Long id;
/* 名称 */
@ExportConfig(value = "名称", width = 100, showLevel = 1)
private String name;
/* 是否支付 */
@ExportConfig(value = "是否支付", width = 100, showLevel = 1)
private String isPay;
/* 是否三期 */
@ExportConfig(value = "是否三期", width = 100, showLevel = 1)
private String isThirdPhase;
/* 是否检测 */
@ExportConfig(value = "是否检测", width = 100, showLevel = 1)
private String isExamination;
/* 编码 */
@ExportConfig(value = "编码", width = 100, showLevel = 1)
private String number;
/* 所属的账号 */
private Long accountsId;
/* 删除标识 */
private boolean delFlag;
/* 状态 */
private String status;
/* 创建时间 */
private Date createTime;
/* 更新时间 */
private Date updateTime;
/* 备注 */
private String description;
/* 创建人 */
private Long createBy;
/* 更新人 */
private Long updateBy;
public Deploy() {
this.delFlag = false;
this.status = "0";
}
}
\ No newline at end of file
package com.cftech.deploy.service;
import com.alibaba.fastjson.JSONObject;
import com.cftech.deploy.model.Deploy;
import com.cftech.core.generic.GenericService;
/**
* 处方单列表Service
*
* @author Strive
* @date: 2021-09-08 15:30
*/
public interface DeployService extends GenericService<Deploy> {
/**
* 获取系统动态配置
* @param appId
* @param openId
* @return
*/
JSONObject findDeloyEntity(String appId, String openId);
}
package com.cftech.deploy.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.cftech.core.util.Constants;
import com.cftech.deploy.model.Deploy;
import com.cftech.deploy.dao.DeployMapper;
import com.cftech.deploy.service.DeployService;
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;
/**
* 处方单列表ServiceImpl
*
* @author Strive
* @date: 2021-09-08 15:30
*/
@Service("deployService")
public class DeployServiceImpl extends GenericServiceImpl<Deploy> implements DeployService {
@Autowired
@Qualifier("deployMapper")
private DeployMapper deployMapper;
@Override
public GenericDao<Deploy> getGenericMapper() {
return deployMapper;
}
@Override
public JSONObject findDeloyEntity(String appId, String openId) {
JSONObject retObj = new JSONObject();
Conds conds = new Conds();
conds.equal("del_flag", Constants.DEL_FLAG_0);
Deploy deploy = this.fetchSearchByConds(conds);
if (deploy == null) {
retObj.put("errorNo", 0);
retObj.put("data", deploy);
} else {
retObj.put("errorNo", 1);
retObj.put("errorMsg", "请联系管理员设置系统配置");
}
return retObj;
}
}
\ No newline at end of file
package com.cftech.deploy.web;
import com.alibaba.fastjson.JSONObject;
import com.cftech.deploy.model.Deploy;
import com.cftech.deploy.service.DeployService;
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.sys.security.PermissionSign;
import com.cftech.sys.security.UserUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.util.List;
/**
* 处方单列表Controller
* <p>
* 权限字符串说明:
* 查看:public static final String DEPLOY_VIEW = "qy:deploy:view"
* 查看:public static final String DEPLOY_EDIT = "qy:deploy:edit"
*
* @author Strive
* @date: 2021-09-08 15:30
*/
@Slf4j
@Controller
@RequestMapping("/a/deploy")
public class DeployController {
public static final String DEPLOY_VIEW = "qy:deploy:view";
public static final String DEPLOY_EDIT = "qy:deploy:edit";
@Autowired
private DeployService deployService;
//列表页面
@RequiresPermissions(value = DEPLOY_VIEW)
@RequestMapping("/list")
public String list(HttpServletRequest request, Model model) {
Long accountId = UserUtils.getmpaccounts(request);
model.addAttribute("accountId", accountId);
return "deploy/deploylist";
}
//编辑页面(新增、修改)
@RequiresPermissions(value = DEPLOY_VIEW)
@RequestMapping("/form")
public String form(HttpServletRequest request, String id, Model model) {
if (!StringUtils.isEmpty(id)) {
Deploy deploy = deployService.fetchById(id);
model.addAttribute("data", deploy);
}
return "deploy/deployform";
}
//提交数据(新增、修改)
@RequiresPermissions(value = DEPLOY_EDIT)
@RequestMapping("/formData")
@ResponseBody
public JSONObject formData(Deploy deploy, Model model, HttpServletRequest request) {
Long accountsId = UserUtils.getmpaccounts(request);
JSONObject rtnJson = new JSONObject();
try {
if (deploy != null && deploy.getId() != null) {
deploy.setUpdateBy(UserUtils.getUser().getId());
deployService.update(deploy);
rtnJson.put("errorNo", 0);
} else {
deploy.setAccountsId(accountsId);
deploy.setDelFlag(false);
deploy.setAccountsId(UserUtils.getmpaccounts(request));
deploy.setCreateBy(UserUtils.getUser().getId());
deploy.setUpdateBy(UserUtils.getUser().getId());
deployService.save(deploy);
rtnJson.put("errorNo", 2);
}
} catch (Exception e) {
rtnJson.put("errorNo", 1);
}
return rtnJson;
}
//获取列表数据
@RequiresPermissions(value = DEPLOY_VIEW)
@RequestMapping(value = "/listData")
@ResponseBody
public JSONObject listData(int iDisplayStart, int iDisplayLength, Deploy deploy, HttpServletRequest request) {
Long accountsId = UserUtils.getmpaccounts(request);
Conds conds = new Conds();
conds.equal("del_flag", Constants.DEL_FLAG_0);
conds.equal("accounts_id", accountsId);
Sort sort = new Sort("create_time", OrderType.DESC);
List<Deploy> list = deployService.fetchSearchByPage(conds, sort, iDisplayStart, iDisplayLength);
Integer counts = deployService.count(conds);
JSONObject rtnJson = new JSONObject();
rtnJson.put("iTotalRecords", counts);
rtnJson.put("iTotalDisplayRecords", counts);
rtnJson.put("aaData", list);
return rtnJson;
}
//删除数据
@RequiresPermissions(value = DEPLOY_EDIT)
@RequestMapping("/delete")
@ResponseBody
public JSONObject delete(String id) {
JSONObject rtnJosn = new JSONObject();
try {
deployService.delete(id);
rtnJosn.put("errorNo", 0);
} catch (Exception e) {
rtnJosn.put("errorNo", 1);
}
return rtnJosn;
}
@RequestMapping("/exportExcel")
@RequiresPermissions(value = DEPLOY_VIEW)
public void exportExcel(HttpServletRequest request, HttpServletResponse response) {
Long accountId = UserUtils.getmpaccounts(request);
Sort sort = new Sort("create_time", OrderType.ASC);
Conds conds = new Conds();
conds.equal("del_flag", 0);
conds.equal("accounts_id", accountId);
List<Deploy> list = deployService.fetchSearchByPage(conds, sort, 0, 0);
ExcelKit.$Export(Deploy.class, response).toExcel(list, "处方单列表信息");
}
@RequestMapping("/templateExcel")
@RequiresPermissions(value = DEPLOY_VIEW)
public void templateExcel(HttpServletRequest request, HttpServletResponse response) {
ExcelKit.$Export(Deploy.class, response).toExcel(null, "处方单列表信息");
}
@RequestMapping("/importExcel")
@RequiresPermissions(value = DEPLOY_EDIT)
public String importExcel(HttpServletRequest request, MultipartFile file, Model model) {
Long accountId = UserUtils.getmpaccounts(request);
if (file == null) {
return list(request, model);
}
// 构造临时路径来存储上传的文件
String uploadPath = System.getProperty("java.io.tmpdir");
File uploadDir = new File(uploadPath);
if (!uploadDir.exists()) {
uploadDir.mkdir();
}
String fileName = file.getOriginalFilename();
String filePath = uploadPath + File.separator + fileName;
File storeFile = new File(filePath);
try {
file.transferTo(storeFile);
ExcelKit.$Import().setEmptyCellValue("").readExcel(storeFile, rowData -> {
if (!StringUtils.isEmpty(rowData.get(0))) {
Deploy deploy = new Deploy();
deploy.setAccountsId(accountId);
deployService.save(deploy);
}
});
} catch (IOException e) {
log.error(e.getMessage());
}
return list(request, model);
}
}
package com.cftech.deploy.web;
import com.alibaba.fastjson.JSONObject;
import com.cftech.deploy.service.DeployService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
@RestController
@CrossOrigin
@RequestMapping(value = "mobile/auth/deploy")
public class MobileDeployController {
@Autowired
private DeployService deployService;
/**
* 生成处方单编码
* @param appId
* @param openId
* @return
*/
@RequestMapping(value = "findDeloyEntity", method = { RequestMethod.POST }, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public JSONObject findDeloyEntity(@RequestParam String appId,
@RequestParam String openId) {
return deployService.findDeloyEntity(appId, openId);
}
}
......@@ -103,6 +103,7 @@
<td hidden="true">Id</td>
<th>咨询单编码</th>
<th>需求清单编码</th>
<th>患者类型</th>
<th>商品名称</th>
<th>规格</th>
<th>数量</th>
......@@ -213,6 +214,9 @@
{
"mData":"orderCode"
},
{
"mData":"isThree"
},
{
"mData":"drugName"
},
......@@ -227,14 +231,26 @@
},
{
"mData": "outStoreDate"
}],
}
],
"aoColumnDefs": [
{ // set default column settings
'visible': false,
'targets': [0]
},
{
"aTargets": [7],
"aTargets": [3],
"mData": "isThree",
"mRender": function (a, b, c, d) {
if(a == '1'){
return "三期";
}else {
return "";
}
}
},
{
"aTargets": [8],
"mData": "outStoreDate",
"mRender": function (a, b, c, d) {
if(a == '' || a == null){
......@@ -243,8 +259,7 @@
return formatDates(a, "yyyy-MM-dd HH:mm:ss");
}
}
},
}
]
});
}
......
......@@ -372,12 +372,14 @@
p.format grugSku,
sb.drugs_num drugNum,
sb.drugs_batchno drugBatchNo,
w.create_time outStoreDate
w.create_time outStoreDate,
CASE WHEN m.status = '1' THEN '是' ELSE '否' END isThree
FROM t_order_split_batch sb
LEFT JOIN t_order o ON sb.order_id = o.id AND o.del_flag = '0'
LEFT JOIN t_aidea_consult_sheet cs ON cs.order_id = o.id AND cs.del_flag = '0'
LEFT JOIN t_aidea_product p ON p.id = sb.drugs_id AND p.del_flag = '0'
LEFT JOIN t_aidea_waybill w ON o.id = w.order_id AND w.del_flag = '0'
LEFT JOIN wx_mp_member m ON m.open_id = o.openid AND m.del_flag = '0'
<include refid="sqlWhere"/>
<if test="sort!=null">ORDER BY ${sort.param} ${sort.type}</if>
<if test="limit>0">limit #{offset},#{limit}</if>
......
......@@ -89,7 +89,7 @@ public class ReportJob implements Job {
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);
Sort sortCode = new Sort("record.create_time", OrderType.DESC);//获取最新扫码记录
List<ReportCode> listCode = reportService.selectReportCodeInfo(condCode, sortCode);
if (listCode != null && listCode.size() != 0) {
ReportCode reportCode = listCode.get(0);
......
......@@ -21,6 +21,10 @@ public class OutStoreReport {
@ExportConfig(value = "需求清单编码", width = 120, showLevel = 1)
private String orderCode;
/* 是否三期 */
@ExportConfig(value = "患者类型", width = 100, showLevel = 1)
private String isThree;
/* 药品名称 */
@ExportConfig(value = "药品名称", width = 120, showLevel = 1)
private String drugName;
......@@ -44,4 +48,6 @@ public class OutStoreReport {
/* 有效期 */
//@ExportConfig(value = "有效期", width = 100, showLevel = 1)
private String takeEffectDate;
}
......@@ -152,8 +152,6 @@ cdfortis.token_url=https://api.cdfortis.com/api/verify/token?appid={appid}&flag=
cdfortis.appid=74523ca670a6ceab8095a7476805c649
#\u5FAE\u95EE\u8BCAsecret
cdfortis.secret=c2cf8d3e9a6c715a8046541bf397ccc6
#\u5FAE\u95EE\u8BCAflag old=aidea888
cdfortis.flag=wxc43bd62c1
#\u5FAE\u95EE\u8BCA\u836F\u54C1\u6E05\u5355\u4E0A\u4F20\u63A5\u53E3\u5730\u5740
cdfortis.drug_upload_url=https://api.cdfortis.com/api/drug/chain
#\u5FAE\u95EE\u8BCA\u83B7\u53D6\u56FE\u6587\u5904\u65B9\u5217\u8868\u63A5\u53E3
......
......@@ -151,8 +151,6 @@ cdfortis.token_url=https://api.cdfortis.com/api/verify/token?appid={appid}&flag=
cdfortis.appid=74523ca670a6ceab8095a7476805c649
#\u5FAE\u95EE\u8BCAsecret
cdfortis.secret=c2cf8d3e9a6c715a8046541bf397ccc6
#\u5FAE\u95EE\u8BCAflag
cdfortis.flag=wxc43bd62c1
#\u5FAE\u95EE\u8BCA\u836F\u54C1\u6E05\u5355\u4E0A\u4F20\u63A5\u53E3\u5730\u5740
cdfortis.drug_upload_url=https://api.cdfortis.com/api/drug/chain
#\u5FAE\u95EE\u8BCA\u83B7\u53D6\u56FE\u6587\u5904\u65B9\u5217\u8868\u63A5\u53E3
......
......@@ -28,44 +28,54 @@
.sidebar-menu li {
cursor: pointer
}
.skin-blue .main-header .navbar{
.skin-blue .main-header .navbar {
background-color: #046930;
}
.skin-blue .main-header .logo{
.skin-blue .main-header .logo {
background-color: #046930;
}
.skin-blue .sidebar-menu>li.header {
.skin-blue .sidebar-menu > li.header {
background: rgb(13, 117, 59);
}
.skin-blue .sidebar-menu>li:hover>a {
.skin-blue .sidebar-menu > li:hover > a {
background-color: #046930;
}
.skin-blue .sidebar-menu>li.active>a {
.skin-blue .sidebar-menu > li.active > a {
background-color: #046930;
}
.skin-blue .wrapper, .skin-blue .main-sidebar, .skin-blue .left-side {
background-color: #00893d;
}
.skin-blue .sidebar-menu>li>.treeview-menu {
.skin-blue .sidebar-menu > li > .treeview-menu {
background: rgb(13, 117, 59);
}
.skin-blue .treeview-menu>li>a {
.skin-blue .treeview-menu > li > a {
color: #dee4e7;
}
.skin-blue .main-header .logo:hover,.skin-blue .main-header .navbar .sidebar-toggle:hover {
.skin-blue .main-header .logo:hover, .skin-blue .main-header .navbar .sidebar-toggle:hover {
background: #00893d;
}
body{
body {
background: #dee4e7;
}
.skin-blue .sidebar-menu>li:hover>a, .skin-blue .sidebar-menu>li.active>a {
.skin-blue .sidebar-menu > li:hover > a, .skin-blue .sidebar-menu > li.active > a {
border-left-color: #e3e7ea;
}
.skin-blue .sidebar-menu>li.header {
.skin-blue .sidebar-menu > li.header {
color: #e8eef1;
}
</style>
......@@ -137,32 +147,6 @@
var url = $(this).attr("data");
$(".content").attr("src", url);
});
// window.onbeforeunload = onbeforeunload_handler;
// function onbeforeunload_handler(){
//
// $.ajax({
// "type": "GET",
// "url": sSource,
// "dataType": "json",
// "success": function() {
//
// }
// });
// }
//清除cookie
// function clearCookie(name) {
// setCookie(name, "", -1);
// }
//
// function setCookie(cname, cvalue, exdays) {
// var d = new Date();
// d.setTime(d.getTime() + (exdays*24*60*60*1000));
// var expires = "expires="+d.toUTCString();
// document.cookie = cname + "=" + cvalue + "; " + expires;
// }
</script>
</body>
......
<!DOCTYPE html>
<html>
<head>
<head>
<base href="#springUrl('/assets/adminlte/')"/>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
......@@ -21,9 +21,9 @@
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body class="hold-transition skin-blue sidebar-mini">
<div class="wrapper">
</head>
<body class="hold-transition skin-blue sidebar-mini">
<div class="wrapper">
<div id="messages"></div>
<!-- 头部分 -->
#parse("/common/header.html")
......@@ -33,7 +33,10 @@
<!-- Content Wrapper. Contains page content -->
<div class="content-wrapper" style="position:relative;height:100%;">
<!-- Main content -->
<iframe class="content" style="position:absolute;top:0px;left:0;padding-right:0;padding-left:0;margin-left:0;margin-right:0;" src="#springUrl('/a/manageaccounts/accountslist')" marginheight="0" marginwidth="0" frameborder="0" width="100%" height=100% id="iframepage" name="iframepage">
<iframe class="content"
style="position:absolute;top:0px;left:0;padding-right:0;padding-left:0;margin-left:0;margin-right:0;"
src="#springUrl('/a/manageaccounts/accountslist')" marginheight="0" marginwidth="0" frameborder="0"
width="100%" height=100% id="iframepage" name="iframepage">
</iframe>
</div><!-- /.content-wrapper -->
......@@ -48,26 +51,24 @@
<!-- Add the sidebar's background. This div must be placed
immediately after the control sidebar -->
<div class="control-sidebar-bg"></div>
</div><!-- ./wrapper -->
</div><!-- ./wrapper -->
<!-- REQUIRED JS SCRIPTS -->
<!-- REQUIRED JS SCRIPTS -->
<!-- jQuery 2.1.4 -->
<script src="plugins/jQuery/jQuery-2.1.4.min.js"></script>
<!-- Bootstrap 3.3.5 -->
<script src="bootstrap/js/bootstrap.min.js"></script>
<!-- AdminLTE App -->
<script src="dist/js/app.min.js"></script>
<script>
$(".sidebar-menu a").click(function(){
var text=$(this).text();
var url=$(this).attr("data");
$(".content").attr("src",url);
<!-- jQuery 2.1.4 -->
<script src="plugins/jQuery/jQuery-2.1.4.min.js"></script>
<!-- Bootstrap 3.3.5 -->
<script src="bootstrap/js/bootstrap.min.js"></script>
<!-- AdminLTE App -->
<script src="dist/js/app.min.js"></script>
<script>
$(".sidebar-menu a").click(function () {
var text = $(this).text();
var url = $(this).attr("data");
$(".content").attr("src", url);
});
</script>
</script>
</body>
</body>
</html>
......@@ -108,7 +108,7 @@
<div class="col-xs-12">
<div class="box">
<div class="box-header">
<form id="seachTableForm" action="#springUrl('/a/member/exportExcel')" method="get"
<form id="seachTableForm" action="#springUrl('/a/member/exportExcelByMember')" method="get"
onkeydown="if(event.keyCode==13){return false;}">
<div class="col-xs-2">
<input type="text" class="form-control required"
......@@ -118,20 +118,11 @@
<input type="text" class="form-control required"
name="name" placeholder="会员名称">
</div>
<!-- <div class="col-xs-2">-->
<!-- <select name="status" class="form-control">-->
<!-- <option value="0">请选择会员状态</option>-->
<!-- <option value="1">会员注册</option>-->
<!-- <option value="2">虚拟会员</option>-->
<!-- </select>-->
<!-- </div>-->
<div class="col-xs-5">
<a href="javascript:void(0)" class="btn btn-primary search">搜索</a>
#if($shiro.hasPermission("qy:member:edit"))
<!-- <a href="#springUrl('/a/member/form')" class="btn btn-primary">新增</a>-->
#end
<button class="btn btn-primary">导出</button>
<!-- <a href="javascript:void(0)" onclick="addMemer()" class="btn btn-primary">添加虚拟会员</a>-->
</div>
</form>
</div><!-- /.box-header -->
......@@ -146,8 +137,8 @@
<th>会员名称</th>
<th>联系方式</th>
<th>来源</th>
<th>三期临床</th>
<th>用户类型</th>
<th>患者类型</th>
<th>标签类型</th>
<th>创建日期</th>
<th>操作</th>
</tr>
......
package com.cftech.member.model;
import com.alibaba.fastjson.annotation.JSONField;
import com.cftech.core.poi.ExportConfig;
import lombok.Data;
......@@ -13,14 +12,18 @@ import java.util.Date;
public class MemberDto {
private Long id;
private String openId;
@ExportConfig(value = "用户头像",width = 100)
private String imageurl;
@ExportConfig(value = "用户性别",width = 100)
private String sex;
//@ExportConfig(value = "微信OPENID",width = 100)
private String openId;
@ExportConfig(value = "用户名",width = 120)
@ExportConfig(value = "用户名称",width = 120)
private String name;
@ExportConfig(value = "用户手机",width = 100)
private String phone;
/**
......@@ -33,13 +36,13 @@ public class MemberDto {
*/
@ExportConfig(value = "入组医院", width = 160)
private String orgName;
private String cardid;
@ExportConfig(value = "审核状态",width = 100)
private String status;
//@ExportConfig(value = "粉丝来源",width = 100)
private String source;
@ExportConfig(value = "审核时间",width = 120, dateFormat = "yyyy-MM-dd HH:mm")
private Date auditTime;
@ExportConfig(value = "创建时间",width = 120, dateFormat = "yyyy-MM-dd HH:mm")
private Date createTime;
/**
......@@ -57,6 +60,10 @@ public class MemberDto {
private String tabNames;
private String cardid;
private String source;
......
package com.cftech.member.model;
import com.cftech.core.poi.ExportConfig;
import lombok.Data;
import java.util.Date;
@Data
public class MemberExportDto {
private Long id;
@ExportConfig(value = "用户头像",width = 100)
private String imageurl;
@ExportConfig(value = "用户性别",width = 100)
private String sex;
@ExportConfig(value = "用户名称",width = 100)
private String name;
@ExportConfig(value = "用户手机",width = 100)
private String phone;
@ExportConfig(value = "来源",width = 100)
private String source;
@ExportConfig(value = "患者类型",width = 100)
private String status;
@ExportConfig(value = "标签类型",width = 120)
private String tabNames;
@ExportConfig(value = "创建时间",width = 120, dateFormat = "yyyy-MM-dd HH:mm")
private Date createTime;
}
......@@ -20,6 +20,7 @@ import com.cftech.member.group.model.MemberGroup;
import com.cftech.member.group.service.MemberGroupService;
import com.cftech.member.model.Member;
import com.cftech.member.model.MemberDto;
import com.cftech.member.model.MemberExportDto;
import com.cftech.member.service.MemberService;
import com.cftech.mp.fans.model.MpFanssEntity;
import com.cftech.mp.fans.service.MpFanssService;
......@@ -40,6 +41,7 @@ import org.mp.api.core.req.model.message.IndustryTemplateMessageSend;
import org.mp.api.core.req.model.message.TemplateData;
import org.mp.api.wxsendmsg.JwTemplateMessageAPI;
import org.owasp.esapi.ESAPI;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.web.csrf.CsrfToken;
import org.springframework.security.web.csrf.CsrfTokenRepository;
......@@ -55,10 +57,7 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.*;
/**
......@@ -412,6 +411,14 @@ public class MemberController {
return rtnJosn;
}
/**
* crc患者信息导出
* @param request
* @param response
* @param member
* @param type
* @throws ParseException
*/
@RequestMapping("/exportExcel")
@RequiresPermissions(value = MEMBER_VIEW)
public void exportExcel(HttpServletRequest request, HttpServletResponse response, Member member, String type) throws ParseException {
......@@ -452,7 +459,6 @@ public class MemberController {
}
Sort sort = new Sort("m.create_time", OrderType.DESC);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
List<MemberDto> list = memberService.selectmemberDto(conds, sort, 0, 0);
if (list.size() > 0) {
for (MemberDto memberDto : list) {
......@@ -483,12 +489,95 @@ public class MemberController {
} else if ("2".equals(memberDto.getStatus())) {
memberDto.setStatus("认证未通过");
}
}
}
// 生成Excel并使用浏览器下载
ExcelKit.$Export(MemberDto.class, response).toExcel(list, "CRC用户信息");
}
/**
* 会员信息导出
* @param request
* @param response
* @param member
* @param type
* @throws ParseException
*/
@RequestMapping("/exportExcelByMember")
@RequiresPermissions(value = MEMBER_VIEW)
public void exportExcelByMember(HttpServletRequest request, HttpServletResponse response, Member member, String type) throws ParseException {
Long accountsId = UserUtils.getmpaccounts(request);
User user = UserUtils.getUser();
Conds conds = new Conds();
conds.equal("m.del_flag", Constants.DEL_FLAG_0);
//是否拥有药店主管角色 sys:leaders
boolean leader = roleService.selectRoleEntityByUserId(user.getId(), Constants.SYSTEM_LEADER);
//权限控制
if (user.getId() != 1 && !leader) {
//获取当前人对应的审核部门
Conds orgConds = new Conds();
orgConds.equal("t.del_flag", Constants.DEL_FLAG_0);
orgConds.equal("t.three_phase_auditor", user.getUserid());
List<OrgUnit> list = orgUnitService.fetchSearchByPage(orgConds, null, 0, 0);
Long[] ids = new Long[list.size()];
for(int i=0; i<list.size(); i++) {
ids[i] = list.get(i).getId();
}
if (ids.length == 0) { ids[0] = 0L; }
conds.in("m.storeid", ids);
}
if (org.apache.commons.lang3.StringUtils.equals(type, "1")) {
conds.notNull("m.invitcode");
conds.notNull("m.storeid");
}
if (!StringUtils.isEmpty(member.getName())) {
conds.like("m.name", member.getName());
}
if (!StringUtils.isEmpty(member.getPhone())) {
conds.like("CONVERT(AES_DECRYPT(m.phone,'aideakey') USING UTF8)", member.getPhone());
}
Sort sort = new Sort("m.create_time", OrderType.DESC);
List<MemberDto> list = memberService.selectmemberDto(conds, sort, 0, 0);
List<MemberExportDto> listDto = new ArrayList<>();
if (list.size() > 0) {
for (MemberDto memberDto : list) {
if ("1".equals(memberDto.getSex())) {
memberDto.setSex("男");
} else if ("2".equals(memberDto.getSex())) {
memberDto.setSex("女");
} else {
memberDto.setSex("");
}
if ("1".equals(memberDto.getSource())) {
memberDto.setSource("普通关注");
} else if ("2".equals(memberDto.getSource())) {
memberDto.setSource("药师二维码");
} else if ("3".equals(memberDto.getSource())) {
memberDto.setSource("客服二维码");
} else if ("4".equals(memberDto.getSource())) {
memberDto.setSource("医生二维码");
} else if ("5".equals(memberDto.getSource())) {
memberDto.setSource("组织二维码");
} else {
memberDto.setSource("用户注册");
}
if ("1".equals(memberDto.getStatus())) {
memberDto.setStatus("三期患者");
} else {
memberDto.setStatus("");
}
MemberExportDto memberExportDto = new MemberExportDto();
BeanUtils.copyProperties(memberDto, memberExportDto);
listDto.add(memberExportDto);
}
}
// 生成Excel并使用浏览器下载
ExcelKit.$Export(MemberDto.class, response).toExcel(list, "CRC用户信息");
ExcelKit.$Export(MemberExportDto.class, response).toExcel(listDto, "会员信息导出");
}
private void sendMessage(String templateId, String token, String openId, String first, String remark, String [] keywords, String url){
......
......@@ -5,10 +5,11 @@ import com.cftech.core.sql.Conds;
import com.cftech.sys.model.User;
import com.cftech.sys.security.PermissionSign;
import com.cftech.sys.security.RoleSign;
import com.cftech.sys.security.UserUtils;
import com.cftech.sys.service.UserService;
import com.google.code.kaptcha.Producer;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.AuthenticationException;
......@@ -143,8 +144,10 @@ public class UserController {
return "login";
}
Subject subject = SecurityUtils.getSubject();
// 已登陆则 跳到首页
if (subject.isAuthenticated()) {
if (subject.isAuthenticated() && //shiro为true且登陆用户和缓存用户一致
StringUtils.equals(user.getUsername(), UserUtils.getUser().getUsername())) {
return "redirect:/a/index";
}
if (result.hasErrors()) {
......@@ -163,7 +166,7 @@ public class UserController {
} catch (AuthenticationException e) {
e.printStackTrace();
// 身份验证失败
model.addAttribute("error", "用户名或密码错误 !");
model.addAttribute("error", "用户名或密码错误!");
return "login";
}
return "redirect:/a/index";
......
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