Commit 2215e2d5 authored by 谢希宇's avatar 谢希宇

Submit by Strive

Date 2021/03/21
parent dc664365
...@@ -212,7 +212,7 @@ ...@@ -212,7 +212,7 @@
<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>
...@@ -357,7 +357,7 @@ ...@@ -357,7 +357,7 @@
"mData": "status" "mData": "status"
}, },
{ {
"mData": "description" "mData": "drugNum"
}, },
{ {
"mData": "createTime" "mData": "createTime"
...@@ -485,9 +485,9 @@ ...@@ -485,9 +485,9 @@
} }
}, },
{ {
"width": "120px", "width": "60px",
"aTargets": [10], "aTargets": [10],
"mData": "description", "mData": "drugNum",
"mRender": function (a, b, c, d) { "mRender": function (a, b, c, d) {
if (a) { if (a) {
return a; return a;
......
...@@ -566,7 +566,6 @@ ...@@ -566,7 +566,6 @@
$(this).fadeOut(200) $(this).fadeOut(200)
}); });
function imgcli(obj) { function imgcli(obj) {
$('#divimg img').attr('src', $(obj).attr("src")); $('#divimg img').attr('src', $(obj).attr("src"));
...@@ -586,7 +585,29 @@ ...@@ -586,7 +585,29 @@
$('#divimg img').css("margin-left", val + "%"); $('#divimg img').css("margin-left", val + "%");
$('#divimg img').css("margin-top", "5%"); $('#divimg img').css("margin-top", "5%");
$('#divimg').fadeIn(200); $('#divimg').fadeIn(200);
}
function imgBySrc(obj) {
$('#divimg img').attr('src', $(obj).attr('data-src'));
setTimeout(function() {
var img = $('#divimg img')[0];
let imgH = img.naturalHeight;//图片高度
let imgW = img.naturalWidth;//图片宽度
let finalImgH = ($('.content-wrapper').height() * 0.8).toFixed(2);
let algorithm = (imgH / finalImgH).toFixed(2);
let finalImgW = (imgW / algorithm).toFixed(2);
let val = (1 - (finalImgW / $('.content-wrapper').width()).toFixed(2)) / 2 * 100 - 3;
$('#divimg').height($('.content-wrapper').height());
$('#divimg img').height(finalImgH);
$('#divimg img').width(finalImgW);
$('#divimg img').css("margin-left", val + "%");
$('#divimg img').css("margin-top", "5%");
$('#divimg').fadeIn(200);
}, 500);
} }
function hide() { function hide() {
...@@ -992,22 +1013,14 @@ ...@@ -992,22 +1013,14 @@
} }
function initTables() { function initTables() {
var sSource = "#springUrl('/a/consultSheet/listData')?openId="+openid; var sSource = "#springUrl('/a/consultSheet/historyListData')?openId="+openid;
var aoData = { var aoData = {
iDisplayStart: 1, iDisplayStart: 1,
iDosplayLength: 10 iDosplayLength: 10
} }
var retrieveData = function (sSource, aoData, fnCallback) { var retrieveData = function (sSource, aoData, fnCallback) {
console.log(aoData);
// $("#seachTableForm input,select").each(function () {
// var params = {
// name: $(this).attr("name"),
// value: $(this).val()
// };
// aoData.push(params);
// });
$.ajax({ $.ajax({
"type": "GET", "type": "GET",
"url": sSource, "url": sSource,
...@@ -1017,7 +1030,6 @@ ...@@ -1017,7 +1030,6 @@
}); });
}; };
$('#table').DataTable({ $('#table').DataTable({
"lengthChange": false, "lengthChange": false,
"searching": false, "searching": false,
...@@ -1115,7 +1127,7 @@ ...@@ -1115,7 +1127,7 @@
}, },
{ {
"aTargets": [5], "aTargets": [5],
"mData": "description", "mData": "drugNum",
"mRender": function (a, b, c, d) { "mRender": function (a, b, c, d) {
if (a) { if (a) {
return a; return a;
...@@ -1129,7 +1141,7 @@ ...@@ -1129,7 +1141,7 @@
"mData": "createTime", "mData": "createTime",
"mRender": function (a, b, c, d) { "mRender": function (a, b, c, d) {
if (a) { if (a) {
return moment(a).format('YYYY-MM-DD HH:mm:ss');; return moment(a).format('YYYY-MM-DD HH:mm:ss');
} else { } else {
return null; return null;
} }
...@@ -1151,7 +1163,8 @@ ...@@ -1151,7 +1163,8 @@
"mData": "prescription", "mData": "prescription",
"mRender": function (a, b, c, d) { "mRender": function (a, b, c, d) {
if (a) { if (a) {
return `<img src="` + a + `" style="height: 80px; width: 80px" onclick="imgcli(this)">`; console.log(a);
return '<a href="javascript:void(0);" data-src="'+a+'" onclick="imgBySrc(this)" class="btn green" >查看咨询单</a>';
} else { } else {
return null; return null;
} }
......
...@@ -219,8 +219,8 @@ ...@@ -219,8 +219,8 @@
<!-- SlimScroll --> <!-- SlimScroll -->
<script src="plugins/slimScroll/jquery.slimscroll.min.js"></script> <script src="plugins/slimScroll/jquery.slimscroll.min.js"></script>
<script src="plugins/bootstrap-dateTimePicker/bootstrap-datetimepicker.js"></script> <!--<script src="plugins/bootstrap-dateTimePicker/bootstrap-datetimepicker.js"></script>-->
<script src="plugins/bootstrap-dataTimePicker/bootstrap-datetimepicker.zh-CN.js"></script> <!--<script src="plugins/bootstrap-dataTimePicker/bootstrap-datetimepicker.zh-CN.js"></script>-->
<!-- FastClick --> <!-- FastClick -->
<script src="plugins/fastclick/fastclick.min.js"></script> <script src="plugins/fastclick/fastclick.min.js"></script>
<!--fileinput js--> <!--fileinput js-->
......
...@@ -210,16 +210,18 @@ ...@@ -210,16 +210,18 @@
LEFT JOIN t_aidea_authentication au ON m.cardid = au.id_card AND au.del_flag = '0' LEFT JOIN t_aidea_authentication au ON m.cardid = au.id_card AND au.del_flag = '0'
LEFT JOIN wx_mp_fanss f ON f.openid = a.open_id AND f.delflag = '0' LEFT JOIN wx_mp_fanss f ON f.openid = a.open_id AND f.delflag = '0'
<include refid="sqlWhere"/> <include refid="sqlWhere"/>
<if test="id!=null">and (a.doctor_id = ${userid} or a.service_id =${userid})</if> <if test="userid!=null">and (a.doctor_id = ${userid} or a.service_id =${userid})</if>
</select> </select>
<select id="fetchSearchByPage" parameterType="java.util.Map" resultType="com.cftech.consultsheet.model.ConsultSheet"> <select id="fetchSearchByPage" parameterType="java.util.Map" resultType="com.cftech.consultsheet.model.ConsultSheet">
SELECT SELECT
<include refid="sqlColumns"/>, <include refid="sqlColumns"/>,
o.number orderCode, au.status isThree, o.number orderCode,
au.status isThree,
(SELECT status FROM t_order sales WHERE sales.del_flag = '0' AND sales.status = '4' AND sales.openid = a.open_id LIMIT 1) isSales, (SELECT status FROM t_order sales WHERE sales.del_flag = '0' AND sales.status = '4' AND sales.openid = a.open_id LIMIT 1) isSales,
f.store fansAlias, f.store fansAlias,
o.status orderStatus o.status orderStatus,
(SELECT SUM(od.drugs_num) FROM t_order_details od WHERE od.order_id = o.id AND od.del_flag = '0') drugNum
FROM t_aidea_consult_sheet a FROM t_aidea_consult_sheet a
LEFT JOIN t_order o ON a.order_id = o.id LEFT JOIN t_order o ON a.order_id = o.id
LEFT JOIN t_qyuser b ON b.id = a.doctor_id AND b.del_flag = '0' LEFT JOIN t_qyuser b ON b.id = a.doctor_id AND b.del_flag = '0'
...@@ -228,7 +230,7 @@ ...@@ -228,7 +230,7 @@
LEFT JOIN t_aidea_authentication au ON m.cardid = au.id_card AND au.del_flag = '0' LEFT JOIN t_aidea_authentication au ON m.cardid = au.id_card AND au.del_flag = '0'
LEFT JOIN wx_mp_fanss f ON f.openid = a.open_id AND f.delflag = '0' LEFT JOIN wx_mp_fanss f ON f.openid = a.open_id AND f.delflag = '0'
<include refid="sqlWhere"/> <include refid="sqlWhere"/>
<if test="id!=null">AND (a.doctor_id = ${userid} or a.service_id =${userid})</if> <if test="userid!=null">AND (a.doctor_id = ${userid} or a.service_id =${userid})</if>
<if test="sort!=null">ORDER BY ${sort.param} ${sort.type}</if> <if test="sort!=null">ORDER BY ${sort.param} ${sort.type}</if>
<if test="limit>0">limit #{offset},#{limit}</if> <if test="limit>0">limit #{offset},#{limit}</if>
</select> </select>
......
...@@ -96,6 +96,7 @@ public class ConsultSheet extends UserSheet implements Serializable { ...@@ -96,6 +96,7 @@ public class ConsultSheet extends UserSheet implements Serializable {
private String isThree;//是否三期患者 private String isThree;//是否三期患者
private String isSales;//是否购买 private String isSales;//是否购买
private String orderStatus;//订单状态 private String orderStatus;//订单状态
private String drugNum;//购买数量
public ConsultSheet() { public ConsultSheet() {
this.delFlag = false; this.delFlag = false;
......
...@@ -101,7 +101,7 @@ public class ConsultSheetServiceImpl extends GenericServiceImpl<ConsultSheet> im ...@@ -101,7 +101,7 @@ public class ConsultSheetServiceImpl extends GenericServiceImpl<ConsultSheet> im
Map<String, Object> params = new HashMap<>(); Map<String, Object> params = new HashMap<>();
params.put("conds", conds); params.put("conds", conds);
if (userid != null && userid != 1) { if (userid != null && userid != 1) {
params.put("id", userid); params.put("userid", userid);
} }
return consultSheetMapper.fetchSearchByCount(params); return consultSheetMapper.fetchSearchByCount(params);
} }
...@@ -353,7 +353,7 @@ public class ConsultSheetServiceImpl extends GenericServiceImpl<ConsultSheet> im ...@@ -353,7 +353,7 @@ public class ConsultSheetServiceImpl extends GenericServiceImpl<ConsultSheet> im
//推送客服消息 //推送客服消息
String msg = null; String msg = null;
Qyuser service = qyuserService.fetchById(consultSheet.getServiceId()); Qyuser service = qyuserService.fetchById(consultSheet.getServiceId());
msg = SystemConfig.p.getProperty("QY_SEND_CUSTOMERSERVICE_MSG").replace("{NUMBER}", consultSheet.getConsultId()).replace("{NICKNAME}", nickname).replace("{FANSALIAS}", fansAlias); msg = SystemConfig.p.getProperty("QY_SEND_CUSTOMERSERVICE_MSG").replace("{NUMBER}", consultSheet.getConsultId()).replace("{NICKNAME}", StringUtils.isBlank(nickname) ? "":nickname).replace("{FANSALIAS}", fansAlias);
List<Qyuser> serviceUsers = new ArrayList(); List<Qyuser> serviceUsers = new ArrayList();
serviceUsers.add(service); serviceUsers.add(service);
JSONObject result = qyMsgUtil.sendText(accounts, false, serviceUsers, null, null, JSONObject result = qyMsgUtil.sendText(accounts, false, serviceUsers, null, null,
...@@ -361,7 +361,7 @@ public class ConsultSheetServiceImpl extends GenericServiceImpl<ConsultSheet> im ...@@ -361,7 +361,7 @@ public class ConsultSheetServiceImpl extends GenericServiceImpl<ConsultSheet> im
log.info("客服,消息发送日志 {}", result.toString()); log.info("客服,消息发送日志 {}", result.toString());
Qyuser doctor = qyuserService.fetchById(consultSheet.getDoctorId()); Qyuser doctor = qyuserService.fetchById(consultSheet.getDoctorId());
msg = SystemConfig.p.getProperty("QY_SEND_DOCTOR_MSG").replace("{NUMBER}", consultSheet.getConsultId()).replace("{NICKNAME}", nickname).replace("{FANSALIAS}", fansAlias); msg = SystemConfig.p.getProperty("QY_SEND_DOCTOR_MSG").replace("{NUMBER}", consultSheet.getConsultId()).replace("{NICKNAME}", StringUtils.isBlank(nickname) ? "":nickname).replace("{FANSALIAS}", fansAlias);
List<Qyuser> doctorUsers = new ArrayList(); List<Qyuser> doctorUsers = new ArrayList();
doctorUsers.add(doctor); doctorUsers.add(doctor);
qyMsgUtil.sendText(accounts, false, doctorUsers, null, null, qyMsgUtil.sendText(accounts, false, doctorUsers, null, null,
......
...@@ -256,6 +256,28 @@ public class ConsultSheetController { ...@@ -256,6 +256,28 @@ public class ConsultSheetController {
return rtnJson; return rtnJson;
} }
@RequestMapping(value = "/historyListData")
@ResponseBody
public JSONObject historyListData(int iDisplayStart, int iDisplayLength, ConsultSheet consultSheet, HttpServletRequest request) {
Long userid = UserUtils.getUser().getUserid();
Long accountsId = UserUtils.getmpaccounts(request);
Conds conds = new Conds();
conds.equal("a.del_flag", Constants.DEL_FLAG_0);
conds.equal("a.accounts_id", accountsId);
conds.equal("a.open_id", consultSheet.getOpenId());
Sort sort = new Sort("a.create_time", OrderType.DESC);
List<ConsultSheet> list = consultSheetService.fetchSearchBy(conds, sort, iDisplayStart, iDisplayLength, null);
Integer counts = consultSheetService.fetchSearchByCount(conds, null);
JSONObject rtnJson = new JSONObject();
rtnJson.put("iTotalRecords", counts);
rtnJson.put("iTotalDisplayRecords", counts);
rtnJson.put("aaData", list);
return rtnJson;
}
//删除数据 //删除数据
@RequiresPermissions(value = CONSULTSHEET_EDIT) @RequiresPermissions(value = CONSULTSHEET_EDIT)
@RequestMapping("/delete") @RequestMapping("/delete")
...@@ -502,8 +524,7 @@ public class ConsultSheetController { ...@@ -502,8 +524,7 @@ public class ConsultSheetController {
consultSheet.setNumberId(fansAlias); consultSheet.setNumberId(fansAlias);
consultSheet.setStatus(status); consultSheet.setStatus(status);
consultSheet.setOrderId(order.getId()); consultSheet.setOrderId(order.getId());
consultSheetService.update(consultSheet); if (consultSheetService.update(consultSheet)) {
//发送审核通过模板消息 //发送审核通过模板消息
String appid = SystemConfig.p.getProperty("WX_MP_SERVER_APPID"); String appid = SystemConfig.p.getProperty("WX_MP_SERVER_APPID");
String refuseTmpId = SystemConfig.p.getProperty("CONSULT_SHEET_AUDIT_SUCCESS_TEMPLATE_MSG"); String refuseTmpId = SystemConfig.p.getProperty("CONSULT_SHEET_AUDIT_SUCCESS_TEMPLATE_MSG");
...@@ -515,6 +536,8 @@ public class ConsultSheetController { ...@@ -515,6 +536,8 @@ public class ConsultSheetController {
order.getNumber()}; order.getNumber()};
sendMessage(refuseTmpId, token, consultSheet.getOpenId(),first, remark, keywords, url); sendMessage(refuseTmpId, token, consultSheet.getOpenId(),first, remark, keywords, url);
sendQyWechatMassage(consultSheet);
}
rtnJson.put("errorNo", 0); rtnJson.put("errorNo", 0);
} }
} }
...@@ -582,16 +605,28 @@ public class ConsultSheetController { ...@@ -582,16 +605,28 @@ public class ConsultSheetController {
Conds qyuserConds = new Conds(); Conds qyuserConds = new Conds();
qyuserConds.equal("t.del_flag", Constants.DEL_FLAG_0); qyuserConds.equal("t.del_flag", Constants.DEL_FLAG_0);
qyuserConds.equal("t.id", consultSheet.getServiceId());//订单员职业 qyuserConds.equal("t.id", consultSheet.getServiceId());//客服
List<Qyuser> qyusers = qyuserService.fetchSearchByPage(qyuserConds, null, 0, 0); List<Qyuser> qyusers = qyuserService.fetchSearchByPage(qyuserConds, null, 0, 0);
if (qyusers == null || qyusers.size() <= 0) { if (qyusers == null || qyusers.size() <= 0) {
return false; return false;
} }
//推送客服消息 //获取咨询单当前审核状态
String msg = SystemConfig.p.getProperty("QY_SEND_SERVICE_AUDIT_FAIL_MAG") + consultSheet.getConsultId() + ";患者昵称:" + ConsultSheet nowConsultSheet = consultSheetService.fetchById(consultSheet.getId());
String msg = "";
if (StringUtils.equals(nowConsultSheet.getStatus(), "1")) {
//咨询单审核失败推送消息(客服)
msg = SystemConfig.p.getProperty("QY_SEND_SERVICE_AUDIT_SUCCESS_MAG") + consultSheet.getConsultId() + ";患者昵称:" +
(StringUtils.isNoneBlank(consultSheet.getNickName()) ? consultSheet.getNickName() : "") + ";患者别名:" + (StringUtils.isNoneBlank(consultSheet.getNickName()) ? consultSheet.getNickName() : "") + ";患者别名:" +
consultSheet.getFansAlias() + ";患者openid:"+consultSheet.getOpenId(); consultSheet.getFansAlias() + ";患者openid:"+consultSheet.getOpenId();
} else {
//咨询单审核失败推送消息(客服)
msg = SystemConfig.p.getProperty("QY_SEND_SERVICE_AUDIT_FAIL_MAG") + consultSheet.getConsultId() + ";患者昵称:" +
(StringUtils.isNoneBlank(consultSheet.getNickName()) ? consultSheet.getNickName() : "") + ";患者别名:" +
consultSheet.getFansAlias() + ";患者openid:"+consultSheet.getOpenId();
}
qyMsgUtil.sendText(accounts, false, qyusers, null, null, agenId, msg, false); qyMsgUtil.sendText(accounts, false, qyusers, null, null, agenId, msg, false);
return true; return true;
} }
......
...@@ -233,7 +233,7 @@ ...@@ -233,7 +233,7 @@
a.id,a.number,DATE_FORMAT(a.take_Effect_Date,'%Y-%m-%d') create_time,DATE_FORMAT(a.expire_Date,'%Y-%m-%d') a.id,a.number,DATE_FORMAT(a.take_Effect_Date,'%Y-%m-%d') create_time,DATE_FORMAT(a.expire_Date,'%Y-%m-%d')
invalid_date,a.status,c.name invalid_date,a.status,c.name
from t_aidea_coupon_record a from t_aidea_coupon_record a
inner join t_aidea_Check_coupon c on a.coupon_Id = c.id inner join t_aidea_check_coupon c on a.coupon_Id = c.id
where a.del_flag = 0 and a.status=2 where a.del_flag = 0 and a.status=2
<if test="openId!=null"> <if test="openId!=null">
and a.openid = #{openId} and a.openid = #{openId}
...@@ -249,7 +249,7 @@ ...@@ -249,7 +249,7 @@
a.id,a.number,DATE_FORMAT(a.take_Effect_Date,'%Y-%m-%d') create_time,DATE_FORMAT(a.expire_Date,'%Y-%m-%d') a.id,a.number,DATE_FORMAT(a.take_Effect_Date,'%Y-%m-%d') create_time,DATE_FORMAT(a.expire_Date,'%Y-%m-%d')
invalid_date,a.status ,c.name invalid_date,a.status ,c.name
from t_aidea_coupon_record a from t_aidea_coupon_record a
inner join t_aidea_Check_coupon c on a.coupon_Id = c.id inner join t_aidea_check_coupon c on a.coupon_Id = c.id
where a.del_flag = 0 and a.status=3 where a.del_flag = 0 and a.status=3
<if test="openId!=null"> <if test="openId!=null">
and a.openid = #{openId} and a.openid = #{openId}
...@@ -265,7 +265,7 @@ ...@@ -265,7 +265,7 @@
a.id,a.number,DATE_FORMAT(a.take_Effect_Date,'%Y-%m-%d') create_time,DATE_FORMAT(a.expire_Date,'%Y-%m-%d') a.id,a.number,DATE_FORMAT(a.take_Effect_Date,'%Y-%m-%d') create_time,DATE_FORMAT(a.expire_Date,'%Y-%m-%d')
invalid_date,a.status, c.name invalid_date,a.status, c.name
from t_aidea_coupon_record a from t_aidea_coupon_record a
inner join t_aidea_Check_coupon c on a.coupon_Id = c.id inner join t_aidea_check_coupon c on a.coupon_Id = c.id
where a.del_flag = 0 and (a.status=1 or a.status=0) where a.del_flag = 0 and (a.status=1 or a.status=0)
<if test="openId!=null"> <if test="openId!=null">
and a.openid = #{openId} and a.openid = #{openId}
...@@ -289,7 +289,7 @@ ...@@ -289,7 +289,7 @@
c.instructions, c.instructions,
c.name c.name
from t_aidea_coupon_record a from t_aidea_coupon_record a
inner join t_aidea_Check_coupon c on a.coupon_Id = c.id inner join t_aidea_check_coupon c on a.coupon_Id = c.id
where a.id = #{id} where a.id = #{id}
</select> </select>
......
...@@ -202,7 +202,8 @@ public class CouponrecordServiceImpl extends GenericServiceImpl<Couponrecord> im ...@@ -202,7 +202,8 @@ public class CouponrecordServiceImpl extends GenericServiceImpl<Couponrecord> im
if (date != null) { if (date != null) {
conds.greatEqual("t.pay_time", date); conds.greatEqual("t.pay_time", date);
} else { } else {
conds.equal("DATE_FORMAT(t.pay_time, '%Y')", new Date().getYear()); Calendar calendar = Calendar.getInstance();
conds.equal("DATE_FORMAT(t.pay_time, '%Y')", calendar.get(Calendar.YEAR));
} }
conds.in("t.status", new String[]{"2", "3", "4"}); conds.in("t.status", new String[]{"2", "3", "4"});
Map<String, Object> params = new HashMap<>(); Map<String, Object> params = new HashMap<>();
......
...@@ -173,7 +173,7 @@ ...@@ -173,7 +173,7 @@
<div class="panel panel-primary"> <div class="panel panel-primary">
<div class="panel-heading">商品信息</div> <div class="panel-heading">商品信息</div>
<div class="panel-body" style="overflow: hidden; overflow-x: auto; white-space: nowrap;"> <div class="panel-body" style="overflow: hidden; overflow-x: auto; white-space: nowrap;">
<div class="form-group form-md-line-input"> <div class="form-group form-md-line-input col-xs-8">
<div id="group" class="list-group"> <div id="group" class="list-group">
<li class="list-group-item"> <li class="list-group-item">
<th style=""><label style="width: 160px;margin-right: 50px;text-align: center">商品名称</label></th> <th style=""><label style="width: 160px;margin-right: 50px;text-align: center">商品名称</label></th>
...@@ -198,20 +198,17 @@ ...@@ -198,20 +198,17 @@
<button class="btn btn-primary" onclick="orderSplit()">订单拆分</button> <button class="btn btn-primary" onclick="orderSplit()">订单拆分</button>
</div> </div>
#end #end
</div>
<table id="table" class="table table-bordered table-striped"> <div class="form-group form-md-line-input col-xs-8">
<thead> <div id="splitTable" class="list-group">
<tr> <li class="list-group-item">
<th>Id</th> <th style=""><label style="width: 160px;margin-right: 50px;text-align: center">商品名称</label></th>
<th>商品名称</th> <th style=""><label style="width: 200px;margin-right: 40px;text-align: center">商品编码</label></th>
<th>商品编码</th> <th style=""><label style="width: 100px;margin-right: 45px;text-align: center">数量</label></th>
<th>数量</th> <th style=""><label style="width: 100px;margin-right: 100px;text-align: center">批次号</label></th>
<th>批次号</th> </li>
</tr> </div>
</thead>
<tbody id="tablebody">
</tbody>
</table>
</div> </div>
</div> </div>
</div> </div>
...@@ -266,13 +263,11 @@ ...@@ -266,13 +263,11 @@
<script src="common/js/cfapp.js"></script> <script src="common/js/cfapp.js"></script>
<!-- END PAGE LEVEL PLUGINS --> <!-- END PAGE LEVEL PLUGINS -->
<script> <script>
var csrf='${_csrf.token}'; var csrf = '${_csrf.token}';
var csrf_header='${_csrf.headerName}'; var csrf_header = '${_csrf.headerName}';
var pageType = '${pageType}'; var pageType = '${pageType}';
var orderId = '${data.id}';
var areaList = []; var areaList = [];
var batchNoList = [];
let status = `$!{data.status}`; let status = `$!{data.status}`;
if (status != null && status != '') { if (status != null && status != '') {
...@@ -439,16 +434,19 @@ ...@@ -439,16 +434,19 @@
var confirm = $("#confirm").val(); var confirm = $("#confirm").val();
if (confirm = '0') { if (confirm = '0') {
$("#divClass").css('display', 'blocks') $("#divClass").css('display', 'blocks');
} }
Cfapp.init(); Cfapp.init();
initScanEvent(); initScanEvent();
delGoodsFun(); delGoodsFun();
list(); list();
if (pageType == 'true') { if (pageType == 'true') {
orderSplit(); orderSplit();
} }
initBatchNo();
splitOrders();
}); });
...@@ -494,7 +492,7 @@ ...@@ -494,7 +492,7 @@
//扫码商品编码 //扫码商品编码
var HtmlCode = `<button name="delGoods" type="button" class="btn btn-danger delGoods">删除</button>`; var HtmlCode = `<button name="delGoods" type="button" class="btn btn-danger delGoods">删除</button>`;
let html = `<li id="form-translate" class="list-group-item translate" style="display:flex;"> let html = `<li name="form-translate" class="list-group-item translate" style="display:flex;">
${idHtml} ${idHtml}
${proIdHtml} ${proIdHtml}
...@@ -531,6 +529,7 @@ ...@@ -531,6 +529,7 @@
$("#group").find('.list-group-item').each(function(i) { $("#group").find('.list-group-item').each(function(i) {
if ($(this).find('input[name="orderNum"]').val() != $(this).find('input[name="sendNum"]').val()) { if ($(this).find('input[name="orderNum"]').val() != $(this).find('input[name="sendNum"]').val()) {
flag = true; flag = true;
return;
} }
}); });
...@@ -540,37 +539,38 @@ ...@@ -540,37 +539,38 @@
return; return;
} }
// let datas = [];
// $(".translate").each(function (index,item){
// datas.push({
// idDetail : $(item).find('[name="idDetail"]').val(),
// productName : $(item).find('[name="productName"]').val(),
// productCode : $(item).find('[name="productCode"]').val(),
// orderNum : $(item).find('[name="orderNum"]').val(),
// sendNum : $(item).find('[name="sendNum"]').val()
// })
// });
//增加产品批次号 //增加产品批次号
let drugArr = []; let drugArr = [];
$(".table ").find('tr').each(function(i, item) { $("#splitTable").find('.split-translate').each(function(i, item) {
let batchNo = $(item).find('td:eq(4)').find('input').val(); let batchNum = $(item).find('input[name="splitNum"]').val();
if (batchNo == null || batchNo == '') { if (batchNum == null || batchNum == '' || batchNum == 0) {
$("#labels").text("请输入产品批次号!"); flag = true;
$('#exampleModal').modal('show');
return; return;
} }
drugArr.push({ //判断是否重复
drugId: $(item).find('td:eq(0)').text(), $("#splitTable").find('.split-translate').each(function(y, items) {
drugName: $(item).find('td:eq(1)').text(), if (y != i && $(item).find('select').val() == $(items).find('select').val()) {
drugCode: $(item).find('td:eq(2)').text(), flag = true;
num: $(item).find('td:eq(3)').text(), return;
batchNo: batchNo }
}); });
drugArr.push({
drugId: $(item).find('input[name="productId"]').val(),
drugName: $(item).find('input[name="productName"]').val(),
drugCode: $(item).find('input[name="productCode"]').val(),
num: $(item).find('input[name="splitNum"]').val(),
batchNo: $(item).find('select').val()
});
}); });
if (flag) {
$("#labels").text("请输入批次数量或批次号不能重复!");
$('#exampleModal').modal('show');
return;
}
$("#save").attr("disabled", true); $("#save").attr("disabled", true);
var url = "#springUrl('/a/waybill/orderSendOutForWaybill')"; var url = "#springUrl('/a/waybill/orderSendOutForWaybill')";
$.ajax({ $.ajax({
...@@ -601,113 +601,129 @@ ...@@ -601,113 +601,129 @@
}); });
} }
function initBatchNo(productId) {
var url = "#springUrl('/a/productBatch/listData')";
$.ajax({
url: url,
type: "POST",
dateType:'json',
headers:{"Accept": "application/json;charset=UTF-8"},
data : { _csrf: csrf,
_csrf_header: csrf_header,
productId: productId,
status: "1",
iDisplayStart: 0,
iDisplayLength: 0},
success :function (rsp) {
batchNoList = rsp.aaData;
}
});
}
function fetchBatchOptionEle(productId) {
let htmlStr = "";
batchNoList.forEach(function(item, i) {
if (item.productId == productId) {
htmlStr += '<option value="'+item.batchNo+'">'+item.batchNo+'</option>';
}
});
return htmlStr;
}
/** /**
* 订单拆分,输入批次号 * 订单拆分,输入批次号
*/ */
function orderSplit() { function orderSplit() {
let dttable = $('#table').dataTable(); let splitHtml = ``;
dttable.fnClearTable(); //清空一下table $('#splitTable').find('.split-translate').remove();
$(".translate").each(function (index, item){
let datas = []; let batchHtml = fetchBatchOptionEle($(item).find('[name="productId"]').val());
$(".translate").each(function (index,item){ splitHtml +=
let idDetail = $(item).find('[name="idDetail"]').val(); `<li name="form-translate" class="list-group-item split-translate mainele" style="display:flex;">
let productId = $(item).find('[name="productId"]').val(); <input type="hidden" name="idDetail" value="${$(item).find('[name="idDetail"]').val()}">
let productName = $(item).find('[name="productName"]').val(); <input type="hidden" name="productId" value="${$(item).find('[name="productId"]').val()}">
let productCode = $(item).find('[name="productCode"]').val(); <input name="productName" class="form-control" style="width: 160px; margin-right: 50px" type="text" readOnly="readonly" value="${$(item).find('[name="productName"]').val()}">
let orderNum = $(item).find('[name="orderNum"]').val(); <input name="productCode" class="form-control" style="width: 200px; margin-right: 50px" type="text" readOnly="readonly" value="${$(item).find('[name="productCode"]').val()}">
let sendNum = $(item).find('[name="sendNum"]').val(); <input name="splitNum" class="form-control" type="text" style="width: 100px; margin-right: 50px;" value="${$(item).find('[name="orderNum"]').val()}" readonly="readonly">
<select name="batchNo" class="form-control pull-right" style="width: 150px; margin-right: 30px;">`+batchHtml+`</select>
if (orderNum != sendNum) { <button name="culNum" type="button" class="btn btn-success culNum" style="margin-right: 30px;">-</button>
$("#labels").text("订单商品数量和出库数量不一致!"); <button name="splitOrder" type="button" class="btn btn-primary splitBtn">拆分</button>
</li>`;
});
$('#splitTable').append(splitHtml);
}
/**
* 订单拆分
*/
function splitOrders() {
$('#splitTable').on('click', '.splitBtn', function() {
let obj = $(this).parent();
let idDetail = obj.find('input[name="idDetail"]').val();
let i = 0;
$('#splitTable').find('li').each(function (index, item){
if (idDetail == $(this).find('input[name="idDetail"]').val()) {
i++;
}
});
if (i>=2) {
$("#labels").text("无法继续拆分");
$('#exampleModal').modal('show'); $('#exampleModal').modal('show');
return; return;
} }
obj.find('input[name="splitNum"]').val(obj.find('input[name="splitNum"]').val() - 1);
datas.push({ let batchHtml = fetchBatchOptionEle(obj.find('[name="productId"]').val());
idDetail : idDetail, let parentStr = `<li name="form-translate" class="list-group-item split-translate" style="display:flex;">
productId : productId, <input type="hidden" name="idDetail" value="${obj.find('[name="idDetail"]').val()}">
productName :productName, <input type="hidden" name="productId" value="${obj.find('[name="productId"]').val()}">
productCode : productCode, <input name="productName" class="form-control" style="width: 160px; margin-right: 50px" type="text" readOnly="readonly" value="${obj.find('[name="productName"]').val()}">
orderNum : orderNum, <input name="productCode" class="form-control" style="width: 200px; margin-right: 50px" type="text" readOnly="readonly" value="${obj.find('[name="productCode"]').val()}">
sendNum : sendNum <input name="splitNum" class="form-control splitNum" type="text" style="width: 100px; margin-right: 50px;" readOnly="readonly" value="1">
}) <select name="batchNo" class="form-control pull-right" style="width: 150px; margin-right: 30px;">`+batchHtml+`</select>
<button name="culNum" type="button" class="btn btn-success culNum" style="margin-right: 30px;">-</button>
<button name="splitOrder" type="button" class="btn btn-danger splitDelBtn">删除</button>
</li>`;
$(this).parent().after(parentStr);
}); });
$('#splitTable').on('click', '.splitDelBtn', function() {
let num = $(this).parent().find('input[name="splitNum"]').val();
$(this).parent().prev('li').find('input[name="splitNum"]').val(Number($(this).parent().prev('li').find('input[name="splitNum"]').val()) + Number(num));
$(this).parent().remove();
});
seachTable(datas); $('#splitTable').on('click', '.culNum', function() {
let obj = $(this).parent();
let idDetail = obj.find('input[name="idDetail"]').val();
let i = 0;//变量次数
$('#splitTable').find('li').each(function (index, item){
if (idDetail == $(this).find('input[name="idDetail"]').val()) {
i++;
} }
function seachTable(datas) {
var sSource = "#springUrl('/a/order/orderSplit')";
var aoData = {};
var retrieveData = function (sSource, aoData, fnCallback) {
aoData.push({ name: "drugs", value: JSON.stringify(datas) });
aoData.push({ name: "accountId", value: 348 });
aoData.push({ name: "orderId", value: orderId });
aoData.push({ name: "pageType", value: pageType });
$.ajax({
"type": "GET",
"url": sSource,
"dataType": "json",
"data": aoData, //以json格式传递
"success": fnCallback
}); });
}; if (i!=2) {
$("#labels").text("请先拆分");
$('#table').DataTable({ $('#exampleModal').modal('show');
"lengthChange": false, return;
"searching": false,
"ordering": false,
"bFiltered": false,
"bStateSave": true, // save datatable state(pagination, sort, etc) in cookie.
"bProcessing": true,//是否加载完成
"bServerSide": true,
"sAjaxSource": sSource,
"fnServerData": retrieveData,
"destroy": true,
"autoWidth": true,
"scrollX": true,
"sScrollY": false,
"bInfo": false,
"bPaginate": false,
"aoColumns": [
{
"mData": "drugId"
},
{
"mData": "drugName"
},
{
"mData": "drugCode"
},
{
"mData": "num"
},
{
"mData": "batchNO"
}
],
"aoColumnDefs": [
{ // set default column settings
'targets': [0]
},
{ // set default column settings
'targets': [4],
"mData": "batchNO",
"mRender": function (a, b, c, d) {
if (pageType == 'true') {
return a;
} else {
return '<input id="batchNo" name="batchNo" class="form-control" placeholder="请输入产品批次号" />'
} }
let num = obj.find('input[name="splitNum"]').val();
if (Number(num) == 0) {
$("#labels").text("数量为0无法拆分");
$('#exampleModal').modal('show');
return;
} }
num = num - 1;
obj.find('input[name="splitNum"]').val(num);
obj.siblings("li").each(function() {
if ($(this).find('input[name="idDetail"]').val() == idDetail) {
$(this).find('input[name="splitNum"]').val(Number($(this).find('input[name="splitNum"]').val()) + 1);
} }
]
}); });
$('.sorting_asc').removeClass("sorting_asc"); });
} }
var recdTypeAdd = function () { var recdTypeAdd = function () {
......
...@@ -227,7 +227,7 @@ ...@@ -227,7 +227,7 @@
d.id, d.id,
d.order_id, d.order_id,
t.product_number AS productNumber, t.product_number AS productNumber,
t.product_name AS productName, t.common_name AS productName,
t.id AS productId, t.id AS productId,
d.drugs_num AS drugsNum, d.drugs_num AS drugsNum,
d.price, d.price,
...@@ -302,11 +302,14 @@ ...@@ -302,11 +302,14 @@
o.cancel_time cancelTime, o.cancel_time cancelTime,
o.remind_type remindType, o.remind_type remindType,
o.remarks, o.remarks,
o.accounts_id accountsId,
t.id as productId, t.id as productId,
GROUP_CONCAT(t.product_number SEPARATOR ',') productNumber, GROUP_CONCAT(t.product_number SEPARATOR ',') productNumber,
GROUP_CONCAT(t.common_name SEPARATOR ',') productName, GROUP_CONCAT(t.common_name SEPARATOR ',') productName,
t.take_frequency takeFrequency, t.take_frequency takeFrequency,
cs.consult_id consultCode, cs.consult_id consultCode,
cs.service_id serviceId,
cs.doctor_id doctorId,
DATE_FORMAT(aw.create_time, '%Y-%m-%d %H:%i') outTime, DATE_FORMAT(aw.create_time, '%Y-%m-%d %H:%i') outTime,
DATE_FORMAT(aw.create_time, '%Y-%m-%d %H:%i:%s') sendExpressDateStr, DATE_FORMAT(aw.create_time, '%Y-%m-%d %H:%i:%s') sendExpressDateStr,
DATE_FORMAT(aw.accept_express_date, '%Y-%m-%d %H:%i:%s') acceptExpressDateStr, DATE_FORMAT(aw.accept_express_date, '%Y-%m-%d %H:%i:%s') acceptExpressDateStr,
......
...@@ -114,7 +114,7 @@ public interface OrderService extends GenericService<Order> { ...@@ -114,7 +114,7 @@ public interface OrderService extends GenericService<Order> {
* @param id * @param id
* @return * @return
*/ */
boolean sendQyWechatMassage(Long id); boolean sendQyWechatMassage(Long id, String msgType);
/** /**
* 获取路由信息 * 获取路由信息
......
...@@ -533,10 +533,6 @@ public class OrderServiceImpl extends GenericServiceImpl<Order> implements Order ...@@ -533,10 +533,6 @@ public class OrderServiceImpl extends GenericServiceImpl<Order> implements Order
order.setPayStatus(result); order.setPayStatus(result);
order.setStatus("2");//待发货 order.setStatus("2");//待发货
order.setTradeNo(transaction_id); order.setTradeNo(transaction_id);
//订单总金额
// if (StringUtils.isNoneBlank(map.get("total_fee"))) {
// order.setTotalAmount(Double.parseDouble(map.get("total_fee")));
// }
//现金支付总金额 //现金支付总金额
if (StringUtils.isNoneBlank(map.get("cash_fee"))) { if (StringUtils.isNoneBlank(map.get("cash_fee"))) {
order.setPayAmount(Double.parseDouble(map.get("cash_fee"))); order.setPayAmount(Double.parseDouble(map.get("cash_fee")));
...@@ -551,7 +547,8 @@ public class OrderServiceImpl extends GenericServiceImpl<Order> implements Order ...@@ -551,7 +547,8 @@ public class OrderServiceImpl extends GenericServiceImpl<Order> implements Order
if (isThreeUsers(order.getOpenid()) == 0) { if (isThreeUsers(order.getOpenid()) == 0) {
couponrecordService.sendCouponRecord(order.getOpenid(), order.getAccountsId()); couponrecordService.sendCouponRecord(order.getOpenid(), order.getAccountsId());
} }
sendQyWechatMassage(order.getId()); sendQyWechatMassage(order.getId(), "0");
sendQyWechatMassage(order.getId(), "1");
return WechatPayUtils.retSucXml; return WechatPayUtils.retSucXml;
} }
} else { } else {
...@@ -629,7 +626,7 @@ public class OrderServiceImpl extends GenericServiceImpl<Order> implements Order ...@@ -629,7 +626,7 @@ public class OrderServiceImpl extends GenericServiceImpl<Order> implements Order
} }
@Override @Override
public boolean sendQyWechatMassage(Long orderId) { public boolean sendQyWechatMassage(Long orderId, String msgType) {
Long accounts = Long.parseLong(SystemConfig.p.getProperty("QY_SEND_APPID")); Long accounts = Long.parseLong(SystemConfig.p.getProperty("QY_SEND_APPID"));
MpAccountsEntity accountsEntity = mpAccountsService.getDetail(accounts); MpAccountsEntity accountsEntity = mpAccountsService.getDetail(accounts);
Long agenId = Long.parseLong(accountsEntity.getAgentId()); Long agenId = Long.parseLong(accountsEntity.getAgentId());
...@@ -642,21 +639,33 @@ public class OrderServiceImpl extends GenericServiceImpl<Order> implements Order ...@@ -642,21 +639,33 @@ public class OrderServiceImpl extends GenericServiceImpl<Order> implements Order
return false; return false;
} }
Order order = orders.get(0);
String msg = "";
List<Qyuser> qyusers = null;
if (StringUtils.equals(msgType, "0")) {//订单员发货消息
Conds qyuserConds = new Conds(); Conds qyuserConds = new Conds();
qyuserConds.equal("t.del_flag", Constants.DEL_FLAG_0); qyuserConds.equal("t.del_flag", Constants.DEL_FLAG_0);
qyuserConds.equal("t.user_type", "4");//订单员职业 qyuserConds.equal("t.user_type", "4");//订单员职业
List<Qyuser> qyusers = qyuserService.fetchSearchByPage(qyuserConds, null, 0, 0); qyusers = qyuserService.fetchSearchByPage(qyuserConds, null, 0, 0);
if (qyusers == null || qyusers.size() <= 0) { msg = SystemConfig.p.getProperty("QY_SEND_ORDERCLERK_MSG") + order.getNumber();
return false; } else if (StringUtils.equals(msgType, "1")) {//客服付款消息
} Conds qyuserConds = new Conds();
qyuserConds.equal("t.del_flag", Constants.DEL_FLAG_0);
qyuserConds.equal("t.id", order.getServiceId());//客服
qyusers = qyuserService.fetchSearchByPage(qyuserConds, null, 0, 0);
//推送客服消息 msg = SystemConfig.p.getProperty("QY_SEND_SERVICE_PAYMENT_SUCCESS_MAG") + order.getNumber() + ";患者昵称:" +
Order order = orders.get(0); (StringUtils.isNoneBlank(order.getNickName()) ? order.getNickName() : "") + ";患者别名:" +
String msg = SystemConfig.p.getProperty("QY_SEND_ORDERCLERK_MSG") + order.getNumber(); order.getFansAlias() + ";患者openid:"+order.getOpenid() + ";患者付款金额:" + order.getPayAmount() + "(单位/分)";
}
if (qyusers != null && qyusers.size() > 0) {
qyMsgUtil.sendText(accounts, false, qyusers, null, null, agenId, msg, false); qyMsgUtil.sendText(accounts, false, qyusers, null, null, agenId, msg, false);
return true; return true;
} }
return false;
}
@Override @Override
public JSONObject findRouteDetails(String appId, String orderCode) { public JSONObject findRouteDetails(String appId, String orderCode) {
......
...@@ -575,7 +575,6 @@ public class OrderController { ...@@ -575,7 +575,6 @@ public class OrderController {
if (integer > 0) { if (integer > 0) {
//线下付款成功 //线下付款成功
if (StringUtils.equals(status, "2")) { if (StringUtils.equals(status, "2")) {
orderService.sendQyWechatMassage(id);
try { try {
OrderFromVO orderFromVO = orderService.fetchId(id); OrderFromVO orderFromVO = orderService.fetchId(id);
if (orderFromVO != null && StringUtils.isNoneBlank(orderFromVO.getOpenid())) { if (orderFromVO != null && StringUtils.isNoneBlank(orderFromVO.getOpenid())) {
...@@ -584,6 +583,8 @@ public class OrderController { ...@@ -584,6 +583,8 @@ public class OrderController {
couponrecordService.sendCouponRecord(orderFromVO.getOpenid(), accountId); couponrecordService.sendCouponRecord(orderFromVO.getOpenid(), accountId);
} }
} }
orderService.sendQyWechatMassage(id, "0");
orderService.sendQyWechatMassage(id, "1");
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} catch (WriterException e) { } catch (WriterException e) {
......
...@@ -88,6 +88,14 @@ ...@@ -88,6 +88,14 @@
name="commonName" placeholder="产品名称"> name="commonName" placeholder="产品名称">
</div> </div>
<div class="col-xs-2">
<select id="status" name="status" class="form-control pull-right">
<option value="" >请选择状态</option>
<option value="0"></option>
<option value="1"></option>
</select>
</div>
<div class="col-xs-5"> <div class="col-xs-5">
<button type="button" class="search btn btn-primary">搜索</button> <button type="button" class="search btn btn-primary">搜索</button>
#if($shiro.hasPermission("qy:productBatch:edit")) #if($shiro.hasPermission("qy:productBatch:edit"))
...@@ -173,7 +181,7 @@ ...@@ -173,7 +181,7 @@
} }
var retrieveData = function (sSource, aoData, fnCallback) { var retrieveData = function (sSource, aoData, fnCallback) {
$("#seachTableForm input").each(function () { $("#seachTableForm input,select").each(function () {
var params = { var params = {
name: $(this).attr("name"), name: $(this).attr("name"),
value: $(this).val() value: $(this).val()
...@@ -235,9 +243,9 @@ ...@@ -235,9 +243,9 @@
"aTargets": [4], "aTargets": [4],
"mData": "status", "mData": "status",
"mRender": function (a, b, c, d) { "mRender": function (a, b, c, d) {
if (a == '0') { if (a == '1') {
return '已激活'; return '已激活';
} else if (a == '1') { } else if (a == '0') {
return '已失效'; return '已失效';
} }
return ''; return '';
...@@ -324,7 +332,9 @@ ...@@ -324,7 +332,9 @@
* 批次号激活/失效 * 批次号激活/失效
*/ */
function updateStatus(dom) { function updateStatus(dom) {
let id = $(dom).attr('data-id');
let status = $(dom).attr('data-status');
console.log(id + "=====" + status);
} }
function importExcel() { function importExcel() {
......
...@@ -15,7 +15,6 @@ ...@@ -15,7 +15,6 @@
<result column="description" property="description"/> <result column="description" property="description"/>
<result column="create_by" property="createBy"/> <result column="create_by" property="createBy"/>
<result column="update_by" property="updateBy"/> <result column="update_by" property="updateBy"/>
<result column="productCode" property="productCode"/> <result column="productCode" property="productCode"/>
<result column="productName" property="productName"/> <result column="productName" property="productName"/>
<result column="commonName" property="commonName"/> <result column="commonName" property="commonName"/>
...@@ -94,6 +93,7 @@ ...@@ -94,6 +93,7 @@
p.product_name productName, p.product_name productName,
p.common_name commonName p.common_name commonName
FROM t_aidea_product_batch t FROM t_aidea_product_batch t
LEFT JOIN t_aidea_product p ON t.product_id = p.id
WHERE t.id=#{id} WHERE t.id=#{id}
</select> </select>
......
...@@ -96,7 +96,6 @@ public class ProductBatchController { ...@@ -96,7 +96,6 @@ public class ProductBatchController {
} }
//获取列表数据 //获取列表数据
@RequiresPermissions(value = PRODUCTBATCH_VIEW)
@RequestMapping(value = "/listData") @RequestMapping(value = "/listData")
@ResponseBody @ResponseBody
public JSONObject listData(int iDisplayStart, int iDisplayLength, ProductBatch productBatch, HttpServletRequest request) { public JSONObject listData(int iDisplayStart, int iDisplayLength, ProductBatch productBatch, HttpServletRequest request) {
...@@ -113,6 +112,14 @@ public class ProductBatchController { ...@@ -113,6 +112,14 @@ public class ProductBatchController {
conds.equal("p.product_number", productBatch.getProductCode()); conds.equal("p.product_number", productBatch.getProductCode());
} }
if (!StringUtils.isEmpty(productBatch.getProductId())) {
conds.equal("t.product_id", productBatch.getProductId());
}
if (!StringUtils.isEmpty(productBatch.getStatus())) {
conds.equal("t.status", productBatch.getStatus());
}
Sort sort = new Sort("t.create_time", OrderType.DESC); Sort sort = new Sort("t.create_time", OrderType.DESC);
List<ProductBatch> list = productBatchService.fetchSearchByPage(conds, sort, iDisplayStart, iDisplayLength); List<ProductBatch> list = productBatchService.fetchSearchByPage(conds, sort, iDisplayStart, iDisplayLength);
......
...@@ -101,9 +101,9 @@ ...@@ -101,9 +101,9 @@
<div class="invoice"> <div class="invoice">
<div class="header"> <div class="header">
<div class="describe">诺康大药房咨询平台</div> <div class="describe">诺康大药房咨询平台</div>
<div class="describe">***一切为了百姓***</div> <!-- <div class="describe">***一切为了百姓***</div>-->
<div class="orderNumber">订单号 <span>$!{printData.orderCode}</span></div> <div class="orderNumber">订单号 <span>$!{printData.orderCode}</span></div>
<div class="deliverydate">发货日期 <span>$!date.format('yyyy-MM-dd HH:mm:ss',$!printData.printDate)</span></div> <div class="deliverydate">发货日期 <span>$!date.format('yyyy-MM-dd HH:mm:ss', $!printData.printDate)</span></div>
<div class="splitline"></div> <div class="splitline"></div>
</div> </div>
...@@ -116,12 +116,11 @@ ...@@ -116,12 +116,11 @@
<div class="splitline"></div> <div class="splitline"></div>
<div class="footer"> <div class="footer">
<div class="think">***谢谢惠顾***</div> <div class="think">***谢谢惠顾***</div>
<div class="think">[如非质量问题,概不退换]</div> <div class="think">[如非质量/物流破损,概不退换]</div>
<div>门店电话:400-828-4688</div> <div>门店电话:400-828-4688</div>
<div>门店地址:扬州市运河西路233</div> <div>门店地址:扬州市邗江区科技园路18</div>
</div> </div>
</div> </div>
</div> </div>
<!--endprint--> <!--endprint-->
......
...@@ -105,7 +105,7 @@ public class WaybillServiceImpl extends GenericServiceImpl<Waybill> implements W ...@@ -105,7 +105,7 @@ public class WaybillServiceImpl extends GenericServiceImpl<Waybill> implements W
List<OrderDetails> odets = orderDetailsService.fetchSearchByPage(detailConds, null, 0, 0); List<OrderDetails> odets = orderDetailsService.fetchSearchByPage(detailConds, null, 0, 0);
if (odets == null || odets.size() == 0) { if (odets == null || odets.size() == 0) {
retObj.put("errorNo", 1); retObj.put("errorNo", 1);
retObj.put("errorMsg", " 订单明细不存在 ! "); retObj.put("errorMsg", " 订单明细不存在! ");
return retObj; return retObj;
} }
...@@ -116,7 +116,6 @@ public class WaybillServiceImpl extends GenericServiceImpl<Waybill> implements W ...@@ -116,7 +116,6 @@ public class WaybillServiceImpl extends GenericServiceImpl<Waybill> implements W
return retObj; return retObj;
} }
//生成物流数据 //生成物流数据
Waybill waybill = new Waybill(); Waybill waybill = new Waybill();
waybill.setAccountsId(accountsId); waybill.setAccountsId(accountsId);
...@@ -205,22 +204,6 @@ public class WaybillServiceImpl extends GenericServiceImpl<Waybill> implements W ...@@ -205,22 +204,6 @@ public class WaybillServiceImpl extends GenericServiceImpl<Waybill> implements W
orderDetailsService.saveDrugBatchNo(orderSplitBatchDto); orderDetailsService.saveDrugBatchNo(orderSplitBatchDto);
} }
//
// Conds orderDesConds = new Conds();
// orderDesConds.equal("d.del_flag", Constants.DEL_FLAG_0);
// orderDesConds.equal("d.order_id", orderId);
// List<OrderDetails> orderDetailsList = orderDetailsService.fetchSearchByPage(orderDesConds, null, 0, 0);
// for (OrderDetails orderDetails : orderDetailsList) {
// for (int i=0; i< arr.size(); i++) {
// JSONObject obj = arr.getJSONObject(i);
// if (StringUtils.equals(orderDetails.getDrugsCode(), obj.getString("productCode"))) {
// orderDetails.setDrugsName(obj.getString("productName"));
// orderDetails.setDrugsMateriel(obj.getString("batchNo"));
// orderDetailsService.update(orderDetails);
// continue;
// }
// }
// }
} }
waybillMapper.save(waybill); waybillMapper.save(waybill);
......
##JDBC Global Setting ##JDBC Global Setting
#\u5916\u7F51 #\u5916\u7F51
jdbc.driver=com.mysql.jdbc.Driver jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://58.220.99.124:3306/aidea_wechat?useSSL=false&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true #jdbc.url=jdbc:mysql://58.220.99.124:3306/aidea_wechat?useSSL=false&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true
jdbc.username=root
jdbc.password=Aidea@2017
#\u5185\u7F51
#jdbc.url=jdbc:mysql://172.18.10.40:3306/aidea_wechat?useSSL=false&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true
#jdbc.username=root #jdbc.username=root
#jdbc.password=Aidea@2017 #jdbc.password=Aidea@2017
#\u5185\u7F51
jdbc.url=jdbc:mysql://172.18.10.40:3306/aidea_wechat?useSSL=false&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true
jdbc.username=root
jdbc.password=Aidea@2017
##DataSource Global Setting ##DataSource Global Setting
......
...@@ -34,13 +34,17 @@ QY_CHAT_WORK=351 ...@@ -34,13 +34,17 @@ QY_CHAT_WORK=351
#\u63A8\u9001\u5BA2\u670D\u6D88\u606F\u6DFB\u52A0\u7528\u6237 #\u63A8\u9001\u5BA2\u670D\u6D88\u606F\u6DFB\u52A0\u7528\u6237
QY_SEND_CUSTOMERSERVICE_MSG=\u60A8\u6536\u5230\u4E00\u5F20\u54A8\u8BE2\u5355\uFF0C\u54A8\u8BE2\u5355\u7F16\u7801\uFF1A{NUMBER}\uFF0C\u6635\u79F0\uFF1A{NICKNAME}\uFF0C\u522B\u540D\uFF1A{FANSALIAS} QY_SEND_CUSTOMERSERVICE_MSG=\u60A8\u6536\u5230\u4E00\u5F20\u54A8\u8BE2\u5355\uFF0C\u54A8\u8BE2\u5355\u7F16\u7801\uFF1A{NUMBER}\uFF0C\u6635\u79F0\uFF1A{NICKNAME}\uFF0C\u522B\u540D\uFF1A{FANSALIAS}
#\u63A8\u9001\u836F\u5E08\u6D88\u606F\u5BA1\u6279\u54A8\u8BE2\u5355 #\u63A8\u9001\u836F\u5E08\u6D88\u606F\u5BA1\u6279\u54A8\u8BE2\u5355
QY_SEND_DOCTOR_MSG=\u60A8\u6536\u5230\u4E00\u5F20\u54A8\u8BE2\u5355\uFF0C\u8BF7\u5BA1\u6279\uFF0C\u54A8\u8BE2\u5355\u7F16\u7801\uFF1A{NUMBER}\uFF0C\u6635\u79F0\uFF1A{NICKNAME}\uFF0C\u522B\u540D\uFF1A{fansAlias} QY_SEND_DOCTOR_MSG=\u60A8\u6536\u5230\u4E00\u5F20\u54A8\u8BE2\u5355\uFF0C\u8BF7\u5BA1\u6279\uFF0C\u54A8\u8BE2\u5355\u7F16\u7801\uFF1A{NUMBER}\uFF0C\u6635\u79F0\uFF1A{NICKNAME}\uFF0C\u522B\u540D\uFF1A{FANSALIAS}
#\u63A8\u9001\u8BA2\u5355\u5458\u53D1\u8D27\u6D88\u606F #\u63A8\u9001\u8BA2\u5355\u5458\u53D1\u8D27\u6D88\u606F
QY_SEND_ORDERCLERK_MSG=\u60A8\u6536\u5230\u4E00\u5F20\u5F85\u53D1\u8D27\u8BA2\u5355\uFF0C\u8BA2\u5355\u7F16\u7801: QY_SEND_ORDERCLERK_MSG=\u60A8\u6536\u5230\u4E00\u5F20\u5F85\u53D1\u8D27\u8BA2\u5355\uFF0C\u8BA2\u5355\u7F16\u7801:
#\u63A8\u9001\u5BA2\u670D\u8DDF\u8FDB\u63D0\u9192\u6D88\u606F #\u63A8\u9001\u5BA2\u670D\u8DDF\u8FDB\u63D0\u9192\u6D88\u606F
QY_SEND_SERVICE_FOLLOWUP_MSG=\u60A8\u6536\u5230\u4E00\u5F20\u8BA2\u5355\u8DDF\u8FDB\u63D0\u9192\uFF0C\u8BA2\u5355\u7F16\u7801\uFF1A QY_SEND_SERVICE_FOLLOWUP_MSG=\u60A8\u6536\u5230\u4E00\u5F20\u8BA2\u5355\u8DDF\u8FDB\u63D0\u9192\uFF0C\u8BA2\u5355\u7F16\u7801\uFF1A
#\u54A8\u8BE2\u5355\u5BA1\u6838\u5931\u8D25\u63A8\u9001\u6D88\u606F #\u54A8\u8BE2\u5355\u5BA1\u6838\u5931\u8D25\u63A8\u9001\u6D88\u606F
QY_SEND_SERVICE_AUDIT_FAIL_MAG=\u60A8\u6536\u5230\u4E00\u5F20\u5BA1\u6838\u672A\u901A\u8FC7\u7684\u54A8\u8BE2\u5355\uFF0C\u54A8\u8BE2\u5355\u7F16\u7801\uFF1A QY_SEND_SERVICE_AUDIT_FAIL_MAG=\u60A8\u6536\u5230\u4E00\u5F20\u5BA1\u6838\u672A\u901A\u8FC7\u7684\u54A8\u8BE2\u5355\uFF0C\u54A8\u8BE2\u5355\u7F16\u7801\uFF1A
#\u54A8\u8BE2\u5355\u5BA1\u6838\u901A\u8FC7\u63A8\u9001\u6D88\u606F
QY_SEND_SERVICE_AUDIT_SUCCESS_MAG=\u60A8\u6536\u5230\u4E00\u5F20\u5BA1\u6838\u901A\u8FC7\u7684\u54A8\u8BE2\u5355\uFF0C\u54A8\u8BE2\u5355\u7F16\u7801\uFF1A
#\u9700\u6C42\u6E05\u5355\u5DF2\u4ED8\u6B3E\u63A8\u9001\u5BA2\u670D
QY_SEND_SERVICE_PAYMENT_SUCCESS_MAG=\u60A8\u6536\u5230\u4E00\u5F20\u5DF2\u4ED8\u6B3E\u7684\u9700\u6C42\u6E05\u5355\uFF0C\u9700\u6C42\u6E05\u5355\u7F16\u7801\uFF1A
#\u8BA2\u5355\u5F85\u66F4\u8FDB\u63D0\u9192 #\u8BA2\u5355\u5F85\u66F4\u8FDB\u63D0\u9192
QY_SEND_SERVICE_ORDER_FOLLOW_REMIND=\u60A8\u6709\u4E00\u5F20\u5F85\u8DDF\u8FDB\u8BA2\u5355\uFF0C\u8BA2\u5355\u7F16\u7801\uFF1A QY_SEND_SERVICE_ORDER_FOLLOW_REMIND=\u60A8\u6709\u4E00\u5F20\u5F85\u8DDF\u8FDB\u8BA2\u5355\uFF0C\u8BA2\u5355\u7F16\u7801\uFF1A
......
...@@ -11,6 +11,10 @@ CONSULT_SHEET_AUDIT_SUCCESS_TEMPLATE_MSG=a7oZd-03JxbKKNup-q9p4vrR4h0a6pbiLMNCi69 ...@@ -11,6 +11,10 @@ CONSULT_SHEET_AUDIT_SUCCESS_TEMPLATE_MSG=a7oZd-03JxbKKNup-q9p4vrR4h0a6pbiLMNCi69
CONSULT_SHEET_AUDIT_REFUSE_TEMPLATE_MSG=qJNaTk1KaSCha1LowafhVWS6y4rNBI5JxKP5Af9CPGQ CONSULT_SHEET_AUDIT_REFUSE_TEMPLATE_MSG=qJNaTk1KaSCha1LowafhVWS6y4rNBI5JxKP5Af9CPGQ
#\u54A8\u8BE2\u5355\u5BA1\u6838\u5931\u8D25\u6A21\u677F\u6D88\u606F #\u54A8\u8BE2\u5355\u5BA1\u6838\u5931\u8D25\u6A21\u677F\u6D88\u606F
CONSULT_SHEET_AUDIT_FAILED_TEMPLATE_MSG=77tLdRPQx1m8Gg0-t9HCGVOlka0G4ocFPdq8D5UkHwk CONSULT_SHEET_AUDIT_FAILED_TEMPLATE_MSG=77tLdRPQx1m8Gg0-t9HCGVOlka0G4ocFPdq8D5UkHwk
#\u75C5\u8F7D\u68C0\u6D4B\u7ED3\u679C\u901A\u77E5\u6A21\u677F\u6D88\u606F
CHECK_RESULT_TEMPLATE_MSG=5Fy77DKlvulE4L2vxsQfhOsJuRqQzIoI-LSmDYWCJt0
#\u75C5\u8F7D\u68C0\u6D4B\u5238\u751F\u6548\u63D0\u9192
CHECK_COUPON_TAKE_EFFECT_REMIND_TEMPLATE_MSG=
#\u4F01\u4E1A\u53F7\u914D\u7F6E\u4FE1\u606F #\u4F01\u4E1A\u53F7\u914D\u7F6E\u4FE1\u606F
ROOT_ORG_NAME=\u6C5F\u82CF\u827E\u8FEA\u836F\u4E1A ROOT_ORG_NAME=\u6C5F\u82CF\u827E\u8FEA\u836F\u4E1A
...@@ -30,13 +34,17 @@ QY_CHAT_WORK=351 ...@@ -30,13 +34,17 @@ QY_CHAT_WORK=351
#\u63A8\u9001\u5BA2\u670D\u6D88\u606F\u6DFB\u52A0\u7528\u6237 #\u63A8\u9001\u5BA2\u670D\u6D88\u606F\u6DFB\u52A0\u7528\u6237
QY_SEND_CUSTOMERSERVICE_MSG=\u60A8\u6536\u5230\u4E00\u5F20\u54A8\u8BE2\u5355\uFF0C\u54A8\u8BE2\u5355\u7F16\u7801\uFF1A{NUMBER}\uFF0C\u6635\u79F0\uFF1A{NICKNAME}\uFF0C\u522B\u540D\uFF1A{FANSALIAS} QY_SEND_CUSTOMERSERVICE_MSG=\u60A8\u6536\u5230\u4E00\u5F20\u54A8\u8BE2\u5355\uFF0C\u54A8\u8BE2\u5355\u7F16\u7801\uFF1A{NUMBER}\uFF0C\u6635\u79F0\uFF1A{NICKNAME}\uFF0C\u522B\u540D\uFF1A{FANSALIAS}
#\u63A8\u9001\u836F\u5E08\u6D88\u606F\u5BA1\u6279\u54A8\u8BE2\u5355 #\u63A8\u9001\u836F\u5E08\u6D88\u606F\u5BA1\u6279\u54A8\u8BE2\u5355
QY_SEND_DOCTOR_MSG=\u60A8\u6536\u5230\u4E00\u5F20\u54A8\u8BE2\u5355\uFF0C\u8BF7\u5BA1\u6279\uFF0C\u54A8\u8BE2\u5355\u7F16\u7801\uFF1A{NUMBER}\uFF0C\u6635\u79F0\uFF1A{NICKNAME}\uFF0C\u522B\u540D\uFF1A{fansAlias} QY_SEND_DOCTOR_MSG=\u60A8\u6536\u5230\u4E00\u5F20\u54A8\u8BE2\u5355\uFF0C\u8BF7\u5BA1\u6279\uFF0C\u54A8\u8BE2\u5355\u7F16\u7801\uFF1A{NUMBER}\uFF0C\u6635\u79F0\uFF1A{NICKNAME}\uFF0C\u522B\u540D\uFF1A{FANSALIAS}
#\u63A8\u9001\u8BA2\u5355\u5458\u53D1\u8D27\u6D88\u606F #\u63A8\u9001\u8BA2\u5355\u5458\u53D1\u8D27\u6D88\u606F
QY_SEND_ORDERCLERK_MSG=\u60A8\u6536\u5230\u4E00\u5F20\u5F85\u53D1\u8D27\u8BA2\u5355\uFF0C\u8BA2\u5355\u7F16\u7801: QY_SEND_ORDERCLERK_MSG=\u60A8\u6536\u5230\u4E00\u5F20\u5F85\u53D1\u8D27\u8BA2\u5355\uFF0C\u8BA2\u5355\u7F16\u7801:
#\u63A8\u9001\u5BA2\u670D\u8DDF\u8FDB\u63D0\u9192\u6D88\u606F #\u63A8\u9001\u5BA2\u670D\u8DDF\u8FDB\u63D0\u9192\u6D88\u606F
QY_SEND_SERVICE_FOLLOWUP_MSG=\u60A8\u6536\u5230\u4E00\u5F20\u8BA2\u5355\u8DDF\u8FDB\u63D0\u9192\uFF0C\u8BA2\u5355\u7F16\u7801\uFF1A QY_SEND_SERVICE_FOLLOWUP_MSG=\u60A8\u6536\u5230\u4E00\u5F20\u8BA2\u5355\u8DDF\u8FDB\u63D0\u9192\uFF0C\u8BA2\u5355\u7F16\u7801\uFF1A
#\u54A8\u8BE2\u5355\u5BA1\u6838\u5931\u8D25\u63A8\u9001\u6D88\u606F #\u54A8\u8BE2\u5355\u5BA1\u6838\u5931\u8D25\u63A8\u9001\u6D88\u606F
QY_SEND_SERVICE_AUDIT_FAIL_MAG=\u60A8\u6536\u5230\u4E00\u5F20\u5BA1\u6838\u672A\u901A\u8FC7\u7684\u54A8\u8BE2\u5355\uFF0C\u54A8\u8BE2\u5355\u7F16\u7801\uFF1A QY_SEND_SERVICE_AUDIT_FAIL_MAG=\u60A8\u6536\u5230\u4E00\u5F20\u5BA1\u6838\u672A\u901A\u8FC7\u7684\u54A8\u8BE2\u5355\uFF0C\u54A8\u8BE2\u5355\u7F16\u7801\uFF1A
#\u54A8\u8BE2\u5355\u5BA1\u6838\u901A\u8FC7\u63A8\u9001\u6D88\u606F
QY_SEND_SERVICE_AUDIT_SUCCESS_MAG=\u60A8\u6536\u5230\u4E00\u5F20\u5BA1\u6838\u901A\u8FC7\u7684\u54A8\u8BE2\u5355\uFF0C\u54A8\u8BE2\u5355\u7F16\u7801\uFF1A
#\u9700\u6C42\u6E05\u5355\u5DF2\u4ED8\u6B3E\u63A8\u9001\u5BA2\u670D
QY_SEND_SERVICE_PAYMENT_SUCCESS_MAG=\u60A8\u6536\u5230\u4E00\u5F20\u5DF2\u4ED8\u6B3E\u7684\u9700\u6C42\u6E05\u5355\uFF0C\u9700\u6C42\u6E05\u5355\u7F16\u7801\uFF1A
#\u8BA2\u5355\u5F85\u66F4\u8FDB\u63D0\u9192 #\u8BA2\u5355\u5F85\u66F4\u8FDB\u63D0\u9192
QY_SEND_SERVICE_ORDER_FOLLOW_REMIND=\u60A8\u6709\u4E00\u5F20\u5F85\u8DDF\u8FDB\u8BA2\u5355\uFF0C\u8BA2\u5355\u7F16\u7801\uFF1A QY_SEND_SERVICE_ORDER_FOLLOW_REMIND=\u60A8\u6709\u4E00\u5F20\u5F85\u8DDF\u8FDB\u8BA2\u5355\uFF0C\u8BA2\u5355\u7F16\u7801\uFF1A
...@@ -51,6 +59,10 @@ userfiles.qrcodedir=/mydata/fileQrcode ...@@ -51,6 +59,10 @@ userfiles.qrcodedir=/mydata/fileQrcode
#\u4E09\u671F\u60A3\u8005\u6298\u6263\u836F\u54C1id #\u4E09\u671F\u60A3\u8005\u6298\u6263\u836F\u54C1id
THREE_DRUGS_ID=24 THREE_DRUGS_ID=24
#\u68C0\u6D4B\u7ED3\u679C\u5B9E\u9A8C\u5BA4\u7EC4\u7EC7id
LABORATORY_ROOT_ORG_ID=21
#\u533B\u9662\u7EC4\u7EC7id
HOSPITAL_ORG_TYPE_ID=1
#\u56FE\u7247\u8BBF\u95EE\u5730\u5740 #\u56FE\u7247\u8BBF\u95EE\u5730\u5740
...@@ -65,13 +77,13 @@ LOG_URL=http://www.michang-tech.com.cn:6989/log/addlog ...@@ -65,13 +77,13 @@ LOG_URL=http://www.michang-tech.com.cn:6989/log/addlog
#\u6821\u9A8C\u5151\u6362\u5BC6\u7801KEY #\u6821\u9A8C\u5151\u6362\u5BC6\u7801KEY
MEMBER_PASSWORD_KEY=DONGCHANGINT9527; MEMBER_PASSWORD_KEY=DONGCHANGINT9527;
list.refreshtoken=true list.refreshtoken=true
jwt.domain=localhost jwt.domain=pe.aidea.com.cn
#\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD #\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD
jwt.duration=86400000 jwt.duration=86400000
#\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u03AAtrue #\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u03AAtrue
security.secure=false security.secure=false
#\u662F\u5426\u96C6\u7FA4 master\u4E3Atrue #\u662F\u5426\u96C6\u7FA4 master\u4E3Atrue
quartz.isCluster=false quartz.isCluster=true
#\u987A\u4E30\u7269\u6D41\u914D\u7F6E\u4FE1\u606F\u53C2\u6570 #\u987A\u4E30\u7269\u6D41\u914D\u7F6E\u4FE1\u606F\u53C2\u6570
#\u987A\u4E30\u5BA2\u6237\u7F16\u7801 #\u987A\u4E30\u5BA2\u6237\u7F16\u7801
......
...@@ -2,9 +2,9 @@ ...@@ -2,9 +2,9 @@
# Redis\uFFFD\uFFFD\uFFFD\u077F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u012C\uFFFD\uFFFD\u03AA0\uFFFD\uFFFD # Redis\uFFFD\uFFFD\uFFFD\u077F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u012C\uFFFD\uFFFD\u03AA0\uFFFD\uFFFD
spring.redis.database=10 spring.redis.database=10
# Redis\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u05B7 # Redis\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u05B7
spring.redis.host=58.220.99.124 #spring.redis.host=58.220.99.124
# \u5185\u7F51Reids # \u5185\u7F51Redis
#spring.redis.host=172.18.10.44 spring.redis.host=172.18.10.44
# Redis\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u04F6\u02FF\uFFFD # Redis\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u04F6\u02FF\uFFFD
spring.redis.port=6379 spring.redis.port=6379
# Redis\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uB8E8\u012C\uFFFD\uFFFD\u03AA\uFFFD\u0563\uFFFD # Redis\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uB8E8\u012C\uFFFD\uFFFD\u03AA\uFFFD\u0563\uFFFD
......
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