Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
A
Aidea
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
sa_aidea
Aidea
Commits
13ed6a75
Commit
13ed6a75
authored
Sep 02, 2021
by
谢希宇
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
增加小程序处方开票流程!
parent
38438eae
Hide whitespace changes
Inline
Side-by-side
Showing
23 changed files
with
757 additions
and
251 deletions
+757
-251
prescriptionform.html
...n/webapp/WEB-INF/views/prescription/prescriptionform.html
+174
-6
prescriptionlist.html
...n/webapp/WEB-INF/views/prescription/prescriptionlist.html
+123
-45
pom.xml
aidea-modules/prescription-module/pom.xml
+0
-10
CdfortisService.java
...ain/java/com/cftech/cdfortis/service/CdfortisService.java
+1
-9
CdfortisServiceImpl.java
...com/cftech/cdfortis/service/impl/CdfortisServiceImpl.java
+0
-46
CdfortisController.java
...main/java/com/cftech/cdfortis/web/CdfortisController.java
+34
-43
PreDrugsController.java
...main/java/com/cftech/predrugs/web/PreDrugsController.java
+0
-2
PrescriptionMapper.java
.../java/com/cftech/prescription/dao/PrescriptionMapper.java
+15
-0
PrescriptionMapper.xml
...n/java/com/cftech/prescription/dao/PrescriptionMapper.xml
+96
-0
Prescription.java
...main/java/com/cftech/prescription/model/Prescription.java
+12
-1
PrescriptionService.java
.../com/cftech/prescription/service/PrescriptionService.java
+9
-0
PrescriptionServiceImpl.java
...ch/prescription/service/impl/PrescriptionServiceImpl.java
+85
-40
MobilePrecriptionController.java
.../cftech/prescription/web/MobilePrecriptionController.java
+16
-2
PrescriptionController.java
...a/com/cftech/prescription/web/PrescriptionController.java
+4
-5
productlist.html
...eb/src/main/webapp/WEB-INF/views/product/productlist.html
+35
-33
pom.xml
aidea-modules/product-module/pom.xml
+6
-0
ProductMapper.xml
...le/src/main/java/com/cftech/product/dao/ProductMapper.xml
+2
-1
ProductVO.java
...ule/src/main/java/com/cftech/product/model/ProductVO.java
+2
-0
ProductService.java
.../main/java/com/cftech/product/service/ProductService.java
+8
-0
ProductServiceImpl.java
...a/com/cftech/product/service/impl/ProductServiceImpl.java
+52
-0
ProductController.java
...c/main/java/com/cftech/product/web/ProductController.java
+45
-2
common-test.properties
cftech-common-web/src/main/resources/common-test.properties
+6
-6
QyMediaUtil.java
...le/src/main/java/com/cftech/base/org/api/QyMediaUtil.java
+32
-0
No files found.
aidea-modules/prescription-module-web/src/main/webapp/WEB-INF/views/prescription/prescriptionform.html
View file @
13ed6a75
...
...
@@ -73,13 +73,152 @@
<!-- 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>
<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>
<input
type=
"text"
required
readonly
class=
"form-control pull-right"
value=
"$!{data.number}"
maxlength=
"500"
required
name=
"productName"
placeholder=
"处方编号"
>
</div>
<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.storeId}"
maxlength=
"500"
required
name=
"productName"
placeholder=
"药店编码"
>
</div>
<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.hospitalName}"
maxlength=
"500"
required
name=
"productName"
placeholder=
"医院名称"
>
</div>
<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.storeName}"
maxlength=
"500"
required
name=
"productName"
placeholder=
"药店名称"
>
</div>
<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.custName}"
maxlength=
"500"
required
name=
"productName"
placeholder=
"用户姓名"
>
</div>
<div
class=
"form-group form-md-line-input col-md-12"
>
<label>
患者性别
</label>
<input
type=
"text"
required
readonly
class=
"form-control pull-right"
#
if
($!
data
.
custSex=
='S00030001')
value=
"男"
#
elseif
($!
data
.
custSex =
=
'
S00030002
')
value=
"女"
#
else
value=
"位置"
#
end
maxlength=
"500"
required
name=
"productName"
placeholder=
"患者性别"
>
</div>
<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.custPhone}"
maxlength=
"500"
required
name=
"productName"
placeholder=
"用户电话"
>
</div>
<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.symptom}"
maxlength=
"500"
required
name=
"productName"
placeholder=
"病人状况描述"
>
</div>
<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.doctorName}"
maxlength=
"500"
required
name=
"productName"
placeholder=
"开方的医生"
>
</div>
<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.doctorDpmtName}"
maxlength=
"500"
name=
"productName"
placeholder=
"医生科室"
>
</div>
<div
class=
"form-group form-md-line-input col-md-12"
>
<label>
医生开方状态
</label>
<input
type=
"text"
required
readonly
class=
"form-control pull-right"
#
if
($!
data
.
docStatus =
=
'
0
')
value=
"通过"
#
elseif
($!
data
.
docStatus =
=
'
1
')
value=
"未通过"
#
else
value=
"未审核"
#
end
maxlength=
"500"
name=
"productName"
placeholder=
"医生开方状态"
>
</div>
<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.docResult}"
maxlength=
"500"
required
name=
"docResult"
placeholder=
"医生审核不通过理由"
>
</div>
<div
class=
"form-group form-md-line-input col-md-12"
>
<label>
本次开方时间
</label>
<input
type=
"text"
required
readonly
class=
"form-control pull-right"
value=
"$!date.format('yyyy-MM-dd HH:mm:ss', $!data.createTime)"
maxlength=
"500"
required
name=
"docResult"
placeholder=
"本次开方时间"
>
</div>
<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.guoms}"
maxlength=
"500"
required
name=
"docResult"
placeholder=
"过敏史"
>
</div>
<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.age}"
maxlength=
"500"
required
name=
"docResult"
placeholder=
"用户年龄"
>
</div>
<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"
style=
"cursor:zoom-in; width: 100%; height: 100% "
src=
"$!{data.presUrl}"
onclick=
"imgcli(this)"
>
</div>
</div>
</div>
<div
class=
"box-footer"
>
#if($shiro.hasPermission("qy:prescription:edit"))
<input
class=
"btn btn-primary"
id=
"save"
value=
"保存"
type=
"submit"
>
<!-- <input class="btn btn-primary" id="save" value="保存" type="submit">--
>
#end
<a
href=
"#springUrl('/a/prescription/list')"
class=
"btn btn-default"
>
取消
</a>
</div>
...
...
@@ -98,7 +237,10 @@
immediately after the control sidebar -->
<div
class=
"control-sidebar-bg"
></div>
</div>
<!-- ./wrapper -->
<div
id=
"divimg"
style=
"cursor:zoom-out; background: rgba(0,0,0,.6); width:100%; height:100%; position: absolute;z-index: 9999;left: 0;top: 0;display: none"
onclick=
"hide()"
>
<img>
</div>
<script
src=
"plugins/jQuery/jQuery-2.1.4.min.js"
></script>
<!-- Bootstrap 3.3.5 -->
<script
src=
"bootstrap/js/bootstrap.min.js"
></script>
...
...
@@ -129,14 +271,40 @@
recdTypeAdd
.
init
();
});
function
imgcli
(
obj
)
{
$
(
'#divimg img'
).
attr
(
'src'
,
$
(
obj
).
attr
(
"src"
));
var
img
=
$
(
obj
)[
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
);
}
$
(
'#divimg'
).
click
(
function
()
{
$
(
this
).
fadeOut
(
200
)
});
var
recdTypeAdd
=
function
()
{
var
initForm
=
function
()
{
var
initFormCtrl
=
function
()
{
bindEvent
();
imgcli
();
hide
();
};
var
bindEvent
=
function
()
{
$
(
"#myForm"
).
validate
({
rules
:
{},
messages
:
{},
...
...
aidea-modules/prescription-module-web/src/main/webapp/WEB-INF/views/prescription/prescriptionlist.html
View file @
13ed6a75
...
...
@@ -77,13 +77,13 @@
<div
class=
"box"
>
<div
class=
"box-header"
>
<form
id=
"seachTableForm"
action=
"#springUrl('/a/prescription/list')"
method=
"get"
>
<div
class=
"col-xs-5"
>
<button
type=
"button"
class=
"search btn btn-primary"
>
搜索
</button>
#if($shiro.hasPermission("qy:prescription:edit"))
<div
class=
"col-xs-5"
>
<button
type=
"button"
class=
"search btn btn-primary"
>
搜索
</button>
#if($shiro.hasPermission("qy:prescription:edit"))
<a
href=
"#springUrl('/a/prescription/form')"
class=
"btn btn-primary"
>
新增
</a>
<a
href=
"#springUrl('/a/prescription/exportExcel')"
class=
"btn btn-primary"
>
导出
</a
>
<a
onclick=
"importExcel();"
class=
"btn btn-primary"
>
导入
</a
>
#end
<!-- <a href="#springUrl('/a/prescription/exportExcel')" class="btn btn-primary">导出</a>--
>
<!-- <a onclick="importExcel();" class="btn btn-primary">导入</a>--
>
#end
</div>
</form>
</div>
<!-- /.box-header -->
...
...
@@ -91,7 +91,19 @@
<table
id=
"table"
class=
"table table-bordered table-striped"
>
<thead>
<tr>
<td
hidden=
"true"
>
Id
</td><th>
创建时间
</th>
<td
hidden=
"true"
>
Id
</td>
<th>
处方编号
</th>
<th>
咨询单编号
</th>
<th>
药店编号
</th>
<th>
医院名称
</th>
<th>
药店名称
</th>
<th>
用户姓名
</th>
<th>
用户手机号码
</th>
<th>
医生开方状态
</th>
<th>
本次处方开方时间
</th>
<th>
处方状态
</th>
<th>
付费金额
</th>
<th>
付费时间
</th>
<th>
操作
</th>
</tr>
</thead>
...
...
@@ -145,7 +157,7 @@
var
minute
=
now
.
getMinutes
();
var
second
=
now
.
getSeconds
();
return
year
+
"-"
+
month
+
"-"
+
date
+
" "
+
hour
+
":"
+
minute
+
":"
+
second
;
+
minute
+
":"
+
second
;
}
function
seachTable
()
{
...
...
@@ -185,32 +197,96 @@
"fnServerData"
:
retrieveData
,
"pagingType"
:
"full_numbers"
,
"aoColumns"
:
[
{
"mData"
:
"id"
},
{
"mData"
:
"createTime"
},
{
{
"mData"
:
"id"
},
{
"mData"
:
"number"
},
{
"mData"
:
"consultNo"
},
{
"mData"
:
"storeId"
},
{
"mData"
:
"hospitalName"
},
{
"mData"
:
"storeName"
},
{
"mData"
:
"custName"
},
{
"mData"
:
"custPhone"
},
{
"mData"
:
"docStatus"
},
{
"mData"
:
"createTime"
},
{
"mData"
:
"status"
},
{
"mData"
:
"paymentPrice"
},
{
"mData"
:
"paymentDate"
},
{
"mData"
:
"id"
}],
"aoColumnDefs"
:
[
{
// set default column settings
'visible'
:
false
,
'targets'
:
[
0
]
},
{
"aTargets"
:
[
1
],
"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>'
;
}
},
]
{
// set default column settings
'visible'
:
false
,
'targets'
:
[
0
]
},
{
// set default column settings
'targets'
:
[
8
],
"mRender"
:
function
(
a
,
b
,
c
,
d
)
{
if
(
a
==
'0'
)
{
return
'未审核'
;
}
else
if
(
a
==
'1'
)
{
return
'审核通过'
;
}
else
if
(
a
==
'2'
)
{
return
'审核拒绝'
;
}
}
},
{
"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>'
;
}
},
{
// set default column settings
'targets'
:
[
10
],
"mRender"
:
function
(
a
,
b
,
c
,
d
)
{
if
(
a
==
'0'
)
{
return
'未审核'
;
}
else
if
(
a
==
'1'
)
{
return
'审核通过'
;
}
else
if
(
a
==
'2'
)
{
return
'审核拒绝'
;
}
}
},
{
"aTargets"
:
[
13
],
"mData"
:
"id"
,
"mRender"
:
function
(
a
,
b
,
c
,
d
)
{
var
html
=
''
;
html
+=
'<a href="#springUrl("/a/prescription/form?id='
+
a
+
'")" class="btn green">查看</a>'
;
return
html
;
}
}
]
});
}
...
...
@@ -231,6 +307,7 @@
});
Cfapp
.
init
();
function
removeData
(
data
)
{
Cfapp
.
confirm
({
message
:
"确定要删除吗"
,
...
...
@@ -262,22 +339,23 @@
}
});
}
function
importExcel
()
{
var
templateExcelUrl
=
"#springUrl('/a/prescription/templateExcel')"
;
var
importExcelUrl
=
"#springUrl('/a/prescription/importExcel')"
;
Cfapp
.
importExcel
({
title
:
'处方单列表导入'
,
importurl
:
importExcelUrl
,
templateurl
:
templateExcelUrl
,
cancel
:
function
()
{
},
success
:
function
()
{
function
importExcel
()
{
var
templateExcelUrl
=
"#springUrl('/a/prescription/templateExcel')"
;
var
importExcelUrl
=
"#springUrl('/a/prescription/importExcel')"
;
Cfapp
.
importExcel
({
title
:
'处方单列表导入'
,
importurl
:
importExcelUrl
,
templateurl
:
templateExcelUrl
,
cancel
:
function
()
{
},
success
:
function
()
{
}
});
}
}
});
}
</script>
...
...
aidea-modules/prescription-module/pom.xml
View file @
13ed6a75
...
...
@@ -10,14 +10,4 @@
<modelVersion>
4.0.0
</modelVersion>
<artifactId>
prescription-module
</artifactId>
<dependencies>
<dependency>
<groupId>
com.cftech
</groupId>
<artifactId>
product-module
</artifactId>
<version>
1.0-SNAPSHOT
</version>
</dependency>
</dependencies>
</project>
\ No newline at end of file
aidea-modules/prescription-module/src/main/java/com/cftech/cdfortis/service/CdfortisService.java
View file @
13ed6a75
...
...
@@ -4,7 +4,7 @@ package com.cftech.cdfortis.service;
import
com.alibaba.fastjson.JSONObject
;
import
com.cftech.cdfortis.model.FbusiDetail
;
import
com.cftech.prescription.model.Prescription
;
import
com.cftech
.product.model.Product
;
import
org.mp.api.wxstore
.product.model.Product
;
import
java.util.List
;
...
...
@@ -16,14 +16,6 @@ import java.util.List;
*/
public
interface
CdfortisService
{
/**
* 药品清单上传
*
* @param productList
* @return
*/
JSONObject
uploadDrugInfo
(
List
<
Product
>
productList
)
throws
Exception
;
/**
* 获取图文处方列表
*
...
...
aidea-modules/prescription-module/src/main/java/com/cftech/cdfortis/service/impl/CdfortisServiceImpl.java
View file @
13ed6a75
...
...
@@ -12,7 +12,6 @@ import com.cftech.cdfortis.util.CdfortisTokenUtil;
import
com.cftech.core.util.StringUtils
;
import
com.cftech.core.util.SystemConfig
;
import
com.cftech.prescription.model.Prescription
;
import
com.cftech.product.model.Product
;
import
lombok.extern.slf4j.Slf4j
;
import
okhttp3.MediaType
;
import
okhttp3.RequestBody
;
...
...
@@ -44,31 +43,6 @@ public class CdfortisServiceImpl implements CdfortisService {
private
static
String
appid
=
SystemConfig
.
p
.
getProperty
(
"cdfortis.appid"
);
/**
* 上传药品清单
*
* @param productList
* @return
*/
@Override
public
JSONObject
uploadDrugInfo
(
List
<
Product
>
productList
)
throws
Exception
{
String
uploadUrl
=
SystemConfig
.
p
.
getProperty
(
"cdfortis.drug_upload_url"
);
// 构建参数
JSONObject
param
=
new
JSONObject
();
param
.
put
(
"appid"
,
appid
);
param
.
put
(
"token"
,
cdfortisTokenUtil
.
getToken
());
// 转换药品类型为微问诊需要的结构
List
<
CdfortisDrugInfo
>
cdfortisDrugList
=
productList
.
stream
().
map
(
this
::
fromProduct
).
collect
(
Collectors
.
toList
());
param
.
put
(
"drugInfo"
,
cdfortisDrugList
);
RequestBody
body
=
RequestBody
.
create
(
MEDIA_TYPE_JSON
,
param
.
toJSONString
());
// 请求获取数据
String
data
=
CdfortisResponseUtil
.
request
(
uploadUrl
,
CdfortisConstant
.
METHOD_POST
,
null
,
null
,
body
);
// 判断数据是否正确
return
JSONObject
.
parseObject
(
data
);
}
/**
* 获取图文处方列表
*
...
...
@@ -173,24 +147,4 @@ public class CdfortisServiceImpl implements CdfortisService {
return
picUrl
;
}
/**
* 转换药品信息
*
* @return
* @para preDrugs
*/
private
CdfortisDrugInfo
fromProduct
(
Product
product
)
{
CdfortisDrugInfo
cdfortisDrug
=
new
CdfortisDrugInfo
();
cdfortisDrug
.
setApprNumber
(
product
.
getApproveNumber
());
cdfortisDrug
.
setSpec
(
product
.
getFormat
());
cdfortisDrug
.
setPrice
(
String
.
valueOf
(
product
.
getPrice
()));
// 这里不确定是否应该用这个字段
cdfortisDrug
.
setErpId
(
product
.
getProductNumber
());
cdfortisDrug
.
setDrugName
(
product
.
getProductName
());
cdfortisDrug
.
setFactoryName
(
product
.
getManufacturer
());
return
cdfortisDrug
;
}
}
aidea-modules/prescription-module/src/main/java/com/cftech/cdfortis/web/CdfortisController.java
View file @
13ed6a75
package
com
.
cftech
.
cdfortis
.
web
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.cftech.cdfortis.model.FbusiDetail
;
import
com.cftech.cdfortis.service.CdfortisService
;
import
com.cftech.cdfortis.util.CdfortisTokenUtil
;
import
com.cftech.prescription.model.Prescription
;
import
com.cftech.prescription.service.PrescriptionService
;
import
com.cftech.product.model.Product
;
import
com.cftech.product.service.ProductService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
/**
* 微问诊相关接口调用Controller
...
...
@@ -39,15 +33,12 @@ public class CdfortisController {
@Autowired
PrescriptionService
prescriptionService
;
@Autowired
ProductService
productService
;
/**
* 获取微问诊token
*
* @return
*/
@
Ge
tMapping
(
"/get/token"
)
@
Pos
tMapping
(
"/get/token"
)
public
JSONObject
getToken
()
{
JSONObject
rtnJson
=
new
JSONObject
();
try
{
...
...
@@ -67,34 +58,34 @@ public class CdfortisController {
* @param productList
* @return
*/
@PostMapping
(
"/upload/druginfo"
)
public
JSONObject
uploadDrugInfo
(
@RequestBody
List
<
Product
>
productList
)
{
JSONObject
rtnJson
=
new
JSONObject
();
try
{
JSONObject
dataJsonObj
=
cdfortisService
.
uploadDrugInfo
(
productList
);
boolean
isAllSuccess
=
dataJsonObj
.
getBooleanValue
(
"isAllSuccess"
);
Object
data
=
""
;
if
(!
isAllSuccess
)
{
JSONArray
failedDataArr
=
dataJsonObj
.
getJSONArray
(
"failedData"
);
// List转map,key是productNumber、value是product本身
List
<
String
>
productNumberList
=
productList
.
stream
()
.
map
(
Product:
:
getProductNumber
)
.
collect
(
Collectors
.
toList
());
// 遍历上传失败的数据,排除掉
for
(
int
i
=
0
;
i
<
failedDataArr
.
size
();
i
++)
{
String
erpId
=
failedDataArr
.
getJSONObject
(
i
).
getString
(
"erpId"
);
productNumberList
.
remove
(
erpId
);
}
productService
.
updateUploadFlag
(
productNumberList
,
true
);
data
=
failedDataArr
;
}
setSuccResult
(
rtnJson
,
data
);
}
catch
(
Exception
e
)
{
handleException
(
rtnJson
,
e
);
}
return
rtnJson
;
}
//
@PostMapping("/upload/druginfo")
//
public JSONObject uploadDrugInfo(@RequestBody List<Product> productList) {
//
JSONObject rtnJson = new JSONObject();
//
try {
//
JSONObject dataJsonObj = cdfortisService.uploadDrugInfo(productList);
//
boolean isAllSuccess = dataJsonObj.getBooleanValue("isAllSuccess");
//
Object data = "";
//
if (!isAllSuccess) {
//
JSONArray failedDataArr = dataJsonObj.getJSONArray("failedData");
//
// List转map,key是productNumber、value是product本身
//
List<String> productNumberList = productList.stream()
//
.map(Product::getProductNumber)
//
.collect(Collectors.toList());
//
//
// 遍历上传失败的数据,排除掉
//
for (int i = 0; i < failedDataArr.size(); i++) {
//
String erpId = failedDataArr.getJSONObject(i).getString("erpId");
//
productNumberList.remove(erpId);
//
}
//
productService.updateUploadFlag(productNumberList, true);
//
data = failedDataArr;
//
}
//
setSuccResult(rtnJson, data);
//
} catch (Exception e) {
//
handleException(rtnJson, e);
//
}
//
return rtnJson;
//
}
/**
...
...
@@ -106,7 +97,7 @@ public class CdfortisController {
* @param endTime 结束时间
* @return
*/
@
Ge
tMapping
(
"/get/fbusi/list"
)
@
Pos
tMapping
(
"/get/fbusi/list"
)
public
JSONObject
getFbusiList
(
int
iDisplayStart
,
int
iDisplayLength
,
String
startTime
,
String
endTime
)
{
JSONObject
rtnJson
=
new
JSONObject
();
try
{
...
...
@@ -125,7 +116,7 @@ public class CdfortisController {
* @param presId 处方编号
* @return
*/
@
Ge
tMapping
(
"/get/fbusi/detail"
)
@
Pos
tMapping
(
"/get/fbusi/detail"
)
public
JSONObject
getFbusiDetail
(
@RequestParam
String
presId
)
{
JSONObject
rtnJson
=
new
JSONObject
();
try
{
...
...
@@ -144,7 +135,7 @@ public class CdfortisController {
* @param orderId 处方编号
* @return
*/
@
Ge
tMapping
(
"/get/fbusi/info"
)
@
Pos
tMapping
(
"/get/fbusi/info"
)
public
JSONObject
getFbusiDetailByOrderId
(
@RequestParam
String
orderId
)
{
JSONObject
rtnJson
=
new
JSONObject
();
try
{
...
...
@@ -163,7 +154,7 @@ public class CdfortisController {
* @param presId 处方编号
* @return
*/
@
Ge
tMapping
(
"/get/fbusi/picture"
)
@
Pos
tMapping
(
"/get/fbusi/picture"
)
public
JSONObject
getFbusiPicture
(
@RequestParam
String
presId
)
{
JSONObject
rtnJson
=
new
JSONObject
();
try
{
...
...
aidea-modules/prescription-module/src/main/java/com/cftech/predrugs/web/PreDrugsController.java
View file @
13ed6a75
...
...
@@ -104,7 +104,6 @@ public class PreDrugsController {
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
<
PreDrugs
>
list
=
preDrugsService
.
fetchSearchByPage
(
conds
,
sort
,
iDisplayStart
,
iDisplayLength
);
...
...
@@ -138,7 +137,6 @@ public class PreDrugsController {
Sort
sort
=
new
Sort
(
"create_time"
,
OrderType
.
ASC
);
Conds
conds
=
new
Conds
();
conds
.
equal
(
"del_flag"
,
0
);
conds
.
equal
(
"accounts_id"
,
accountId
);
List
<
PreDrugs
>
list
=
preDrugsService
.
fetchSearchByPage
(
conds
,
sort
,
0
,
0
);
ExcelKit
.
$Export
(
PreDrugs
.
class
,
response
).
toExcel
(
list
,
"处方单药品列表信息"
);
}
...
...
aidea-modules/prescription-module/src/main/java/com/cftech/prescription/dao/PrescriptionMapper.java
View file @
13ed6a75
...
...
@@ -3,6 +3,8 @@ package com.cftech.prescription.dao;
import
com.cftech.prescription.model.Prescription
;
import
com.cftech.core.generic.GenericDao
;
import
java.util.Map
;
/**
* 处方单列表Mapper
*
...
...
@@ -11,4 +13,17 @@ import com.cftech.core.generic.GenericDao;
*/
public
interface
PrescriptionMapper
extends
GenericDao
<
Prescription
>
{
/**
* 查询药品实体
* @param three_drugs_id
* @return
*/
Map
<
String
,
Object
>
fetchByProjectId
(
String
three_drugs_id
);
/**
* 通过处方单编码更新处方单
* @param prescription
* @return
*/
int
updateByNumber
(
Prescription
prescription
);
}
\ No newline at end of file
aidea-modules/prescription-module/src/main/java/com/cftech/prescription/dao/PrescriptionMapper.xml
View file @
13ed6a75
...
...
@@ -291,4 +291,100 @@
set del_flag=1
where id = #{id,jdbcType=BIGINT}
</update>
<select
id=
"fetchByProjectId"
parameterType=
"java.util.Map"
resultType=
"java.util.Map"
>
SELECT
t.product_number productNumber,
t.unit
FROM t_aidea_product t
where id = #{id,jdbcType=BIGINT}
</select>
<update
id=
"updateByNumber"
parameterType=
"com.cftech.prescription.model.Prescription"
>
update t_aidea_prescription
<set>
<if
test=
"minProgramNo != null"
>
min_program_no = #{minProgramNo, jdbcType=VARCHAR},
</if>
<if
test=
"storeId != null"
>
store_id = #{storeId, jdbcType=VARCHAR},
</if>
<if
test=
"hospitalName != null"
>
hospital_name = #{hospitalName, jdbcType=VARCHAR},
</if>
<if
test=
"storeName != null"
>
store_name = #{storeName, jdbcType=VARCHAR},
</if>
<if
test=
"custName != null"
>
cust_name = #{custName, jdbcType=VARCHAR},
</if>
<if
test=
"weight != null"
>
weight = #{weight, jdbcType=VARCHAR},
</if>
<if
test=
"custSex != null"
>
cust_sex = #{custSex, jdbcType=VARCHAR},
</if>
<if
test=
"custPhone != null"
>
cust_phone = #{custPhone, jdbcType=VARCHAR},
</if>
<if
test=
"symptom != null"
>
symptom = #{symptom, jdbcType=VARCHAR},
</if>
<if
test=
"syptmFlag != null"
>
syptm_flag = #{syptmFlag, jdbcType=VARCHAR},
</if>
<if
test=
"doctorName != null"
>
doctor_name = #{doctorName, jdbcType=VARCHAR},
</if>
<if
test=
"doctorDpmtName != null"
>
doctor_dpmt_name = #{doctorDpmtName, jdbcType=VARCHAR},
</if>
<if
test=
"docStatus != null"
>
doc_status = #{docStatus, jdbcType=VARCHAR},
</if>
<if
test=
"docResult != null"
>
doc_result = #{docResult, jdbcType=VARCHAR},
</if>
<if
test=
"pharmName != null"
>
pharm_name = #{pharmName, jdbcType=VARCHAR},
</if>
<if
test=
"result != null"
>
result = #{result, jdbcType=VARCHAR},
</if>
<if
test=
"guoms != null"
>
guoms = #{guoms, jdbcType=VARCHAR},
</if>
<if
test=
"age != null"
>
age = #{age, jdbcType=VARCHAR},
</if>
<if
test=
"presUrl != null"
>
pres_url = #{presUrl, 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>
<if
test=
"openid != null"
>
openid = #{openid, jdbcType=BIGINT},
</if>
</set>
where number = #{number,jdbcType=VARCHAR}
</update>
</mapper>
\ No newline at end of file
aidea-modules/prescription-module/src/main/java/com/cftech/prescription/model/Prescription.java
View file @
13ed6a75
...
...
@@ -4,6 +4,7 @@ import com.cftech.core.poi.ExportConfig;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.Date
;
/**
...
...
@@ -68,6 +69,8 @@ public class Prescription implements Serializable {
/* 此处方被审核后审方药师名 */
@ExportConfig
(
value
=
"此处方被审核后审方药师名"
,
width
=
100
,
showLevel
=
1
)
private
String
pharmName
;
@ExportConfig
(
value
=
"药师审核 0 通过 1未审核 2 未通过"
,
width
=
100
,
showLevel
=
1
)
private
String
pharmStatus
;
/* 本次审核结果,若不通过则此处为不通过的理 */
@ExportConfig
(
value
=
"本次审核结果,若不通过则此处为不通过的理"
,
width
=
100
,
showLevel
=
1
)
private
String
result
;
...
...
@@ -91,12 +94,20 @@ public class Prescription implements Serializable {
/* 更新时间 */
private
Date
updateTime
;
/* 备注 */
private
String
description
;
private
String
description
;
//0-临时状态 1-提交状态 2-返回状态
/* 创建人 */
private
Long
createBy
;
/* 更新人 */
private
Long
updateBy
;
/**
* 展示字段
*/
private
String
consultNo
;
private
BigDecimal
paymentPrice
;
private
String
paymentDate
;
public
Prescription
()
{
this
.
delFlag
=
false
;
this
.
status
=
"0"
;
...
...
aidea-modules/prescription-module/src/main/java/com/cftech/prescription/service/PrescriptionService.java
View file @
13ed6a75
...
...
@@ -22,6 +22,15 @@ public interface PrescriptionService extends GenericService<Prescription> {
*/
JSONObject
generatePre
(
String
appId
,
String
openId
);
/**
* 修改处方单编码
* @param appId
* @param openId
* @param number
* @return
*/
JSONObject
updatePrescription
(
String
appId
,
String
openId
,
String
number
);
/**
* 获取处方单列表(从距今日7天内的数据)
*
...
...
aidea-modules/prescription-module/src/main/java/com/cftech/prescription/service/impl/PrescriptionServiceImpl.java
View file @
13ed6a75
...
...
@@ -9,6 +9,7 @@ import com.cftech.cdfortis.model.FbusiDrug;
import
com.cftech.cdfortis.service.CdfortisService
;
import
com.cftech.core.scope.OrderType
;
import
com.cftech.core.sql.Sort
;
import
com.cftech.core.util.Constants
;
import
com.cftech.core.util.DateUtils
;
import
com.cftech.core.util.SystemConfig
;
import
com.cftech.predrugs.model.PreDrugs
;
...
...
@@ -19,19 +20,15 @@ import com.cftech.prescription.service.PrescriptionService;
import
com.cftech.core.generic.GenericDao
;
import
com.cftech.core.generic.GenericServiceImpl
;
import
com.cftech.core.sql.Conds
;
import
com.cftech.product.model.Product
;
import
com.cftech.product.service.ProductService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.jetbrains.annotations.NotNull
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.data.redis.connection.ConnectionUtils
;
import
org.springframework.beans.factory.annotation.Qualifier
;;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
import
java.util.List
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.util.StringUtils
;
import
java.util.*
;
...
...
@@ -57,9 +54,6 @@ public class PrescriptionServiceImpl extends GenericServiceImpl<Prescription> im
@Autowired
private
MpAccountsService
accountsService
;
@Autowired
private
ProductService
productService
;
@Autowired
CdfortisService
cdfortisService
;
...
...
@@ -76,19 +70,40 @@ public class PrescriptionServiceImpl extends GenericServiceImpl<Prescription> im
JSONObject
retObj
=
new
JSONObject
();
try
{
MpAccountsEntity
accountsEntity
=
accountsService
.
getMpAccountsAppid
(
appId
);
String
storeNo
=
SystemConfig
.
p
.
getProperty
(
"cdfortis.store_no"
);
Map
<
String
,
Object
>
params
=
prescriptionMapper
.
fetchByProjectId
(
SystemConfig
.
p
.
getProperty
(
"THREE_DRUGS_ID"
));
//获取当前用户当天开取的处方单
Conds
conds
=
new
Conds
();
conds
.
equal
(
"t.description"
,
0
);
//临时订单
conds
.
equal
(
"DATE_FORMAT(t.create_time ,'%Y-%m-%d')"
,
DateUtils
.
getDate
());
conds
.
equal
(
"t.openid"
,
openId
);
Prescription
prescription
=
this
.
fetchSearchByConds
(
conds
);
if
(
prescription
!=
null
)
{
JSONObject
data
=
new
JSONObject
();
data
.
put
(
"prescriptionNo"
,
prescription
.
getNumber
());
data
.
put
(
"productNo"
,
params
.
get
(
"productNumber"
));
data
.
put
(
"unit"
,
params
.
get
(
"unit"
));
data
.
put
(
"storeNo"
,
storeNo
);
retObj
.
put
(
"errorNo"
,
0
);
retObj
.
put
(
"data"
,
data
);
return
retObj
;
}
prescription
=
new
Prescription
();
//生成处方单编码
String
number
=
codingruleUtils
.
getNumber
(
accountsEntity
.
getId
(),
Prescription
.
class
.
getName
());
Product
product
=
productService
.
fetchById
(
SystemConfig
.
p
.
getProperty
(
"THREE_DRUGS_ID"
));
Prescription
prescription
=
new
Prescription
();
prescription
.
setNumber
(
number
);
prescription
.
setOpenid
(
openId
);
prescription
.
setDescription
(
"0"
);
if
(
this
.
save
(
prescription
))
{
JSONObject
data
=
new
JSONObject
();
data
.
put
(
"prescriptionNo"
,
number
);
data
.
put
(
"productNo"
,
p
roduct
.
getProductNumber
(
));
data
.
put
(
"unit"
,
p
roduct
.
getUnit
(
));
data
.
put
(
"storeNo"
,
SystemConfig
.
p
.
getProperty
(
"cdfortis.store_no"
)
);
data
.
put
(
"productNo"
,
p
arams
.
get
(
"productNumber"
));
data
.
put
(
"unit"
,
p
arams
.
get
(
"unit"
));
data
.
put
(
"storeNo"
,
storeNo
);
retObj
.
put
(
"errorNo"
,
0
);
retObj
.
put
(
"data"
,
data
);
...
...
@@ -104,24 +119,59 @@ public class PrescriptionServiceImpl extends GenericServiceImpl<Prescription> im
return
retObj
;
}
@Override
public
JSONObject
updatePrescription
(
String
appId
,
String
openId
,
String
number
)
{
JSONObject
retObj
=
new
JSONObject
();
try
{
//获取当前用户当天开取的处方单
Conds
conds
=
new
Conds
();
conds
.
equal
(
"t.description"
,
"0"
);
conds
.
equal
(
"t.number"
,
number
);
conds
.
equal
(
"t.openid"
,
openId
);
Prescription
prescription
=
this
.
fetchSearchByConds
(
conds
);
if
(
prescription
!=
null
)
{
prescription
.
setDescription
(
"1"
);
this
.
update
(
prescription
);
retObj
.
put
(
"errorNo"
,
0
);
return
retObj
;
}
}
catch
(
Exception
e
)
{
retObj
.
put
(
"errorNo"
,
1
);
e
.
printStackTrace
();
}
retObj
.
put
(
"errorNo"
,
1
);
return
retObj
;
}
@Override
public
JSONObject
findLastPrescription
(
String
appId
,
String
openId
)
{
JSONObject
retObj
=
new
JSONObject
();
try
{
//获取最新处方单数据
Conds
conds
=
new
Conds
();
conds
.
equal
(
"t.del_flag"
,
Constants
.
DEL_FLAG_0
);
conds
.
equal
(
"t.openid"
,
openId
);
conds
.
in
(
"t.description"
,
new
String
[]
{
"1"
,
"2"
});
//已获取返回结果
conds
.
equal
(
"DATE_FORMAT(t.create_time ,'%Y-%m-%d')"
,
DateUtils
.
getDate
());
Sort
sort
=
new
Sort
(
"t.create_time"
,
OrderType
.
DESC
);
List
<
Prescription
>
list
=
this
.
fetchSearchByPage
(
conds
,
sort
,
0
,
0
);
if
(
CollectionUtils
.
isEmpty
(
list
))
{
retObj
.
put
(
"errorNo"
,
1
);
retObj
.
put
(
"errorMsg"
,
"
暂无处方单信息,请稍后
"
);
retObj
.
put
(
"errorMsg"
,
"
处方暂未开具
"
);
return
retObj
;
}
retObj
.
put
(
"errorNo"
,
0
);
retObj
.
put
(
"data"
,
list
.
get
(
0
));
Prescription
prescription
=
list
.
get
(
0
);
if
(
"2"
.
equals
(
prescription
.
getDescription
())
&&
"0"
.
equals
(
prescription
.
getDocStatus
()))
{
retObj
.
put
(
"errorNo"
,
0
);
retObj
.
put
(
"data"
,
prescription
);
}
else
{
prescription
=
this
.
findPreScriptionByOrderId
(
prescription
.
getNumber
());
retObj
.
put
(
"errorNo"
,
0
);
retObj
.
put
(
"data"
,
prescription
);
}
}
catch
(
Exception
e
)
{
retObj
.
put
(
"errorNo"
,
1
);
e
.
printStackTrace
();
}
return
retObj
;
...
...
@@ -145,7 +195,7 @@ public class PrescriptionServiceImpl extends GenericServiceImpl<Prescription> im
startTime
=
DateUtils
.
formatDateTime
(
startDate
);
endTime
=
DateUtils
.
formatDateTime
(
endDate
);
}
Sort
sort
=
new
Sort
(
"create_time"
,
OrderType
.
DESC
);
Sort
sort
=
new
Sort
(
"
t.
create_time"
,
OrderType
.
DESC
);
// TODO 查询在时间范围内的数据
Conds
listConds
=
new
Conds
();
...
...
@@ -166,7 +216,7 @@ public class PrescriptionServiceImpl extends GenericServiceImpl<Prescription> im
// 构建查询参数
Long
[]
idArr
=
onLineList
.
stream
().
map
(
Prescription:
:
getId
).
toArray
(
Long
[]::
new
);
Conds
idConds
=
new
Conds
();
idConds
.
in
(
"id"
,
idArr
);
idConds
.
in
(
"
t.
id"
,
idArr
);
// 将db里面数据查询出来转成Set,数据为id
Set
<
Long
>
dbIdSet
=
fetchSearchByPage
(
idConds
,
sort
,
iDisplayStart
,
iDisplayLength
)
.
stream
()
...
...
@@ -199,7 +249,7 @@ public class PrescriptionServiceImpl extends GenericServiceImpl<Prescription> im
return
prescription
;
}
FbusiDetail
fbusiDetail
=
cdfortisService
.
getFbusiDetail
(
presId
);
prescription
=
handlePrescription
(
prescription
,
fbusiDetail
);
prescription
=
handlePrescription
(
fbusiDetail
,
prescription
.
getNumber
()
);
return
prescription
;
}
...
...
@@ -213,33 +263,28 @@ public class PrescriptionServiceImpl extends GenericServiceImpl<Prescription> im
*/
@Override
public
Prescription
findPreScriptionByOrderId
(
String
orderId
)
throws
Exception
{
Conds
conds
=
new
Conds
();
conds
.
equal
(
"number"
,
orderId
);
Prescription
prescription
=
fetchSearchByConds
(
conds
);
if
(
prescription
!=
null
&&
!
StringUtils
.
isEmpty
(
prescription
.
getSymptom
()))
{
return
prescription
;
}
FbusiDetail
fbusiDetail
=
cdfortisService
.
getFbusiDetailByOrderId
(
orderId
);
prescription
=
handlePrescription
(
prescription
,
fbusiDetail
);
return
prescription
;
return
handlePrescription
(
fbusiDetail
,
orderId
);
}
@NotNull
private
Prescription
handlePrescription
(
Prescription
prescription
,
FbusiDetail
fbusiDetail
)
throws
Exception
{
private
Prescription
handlePrescription
(
FbusiDetail
fbusiDetail
,
String
number
)
throws
Exception
{
if
(
fbusiDetail
==
null
)
{
throw
new
Exception
(
"找不到对应的处方数据(暂无数据)"
);
}
if
(
prescription
==
null
)
{
// save数据
prescription
=
new
Prescription
();
BeanUtils
.
copyProperties
(
fbusiDetail
,
prescription
);
save
(
prescription
);
}
else
{
// update 数据
BeanUtils
.
copyProperties
(
fbusiDetail
,
prescription
);
update
(
prescription
);
}
//更新
Prescription
prescription
=
new
Prescription
();
BeanUtils
.
copyProperties
(
fbusiDetail
,
prescription
);
prescription
.
setDescription
(
"2"
);
//已返回
prescription
.
setNumber
(
number
);
//通过编码更新
prescription
.
setMinProgramNo
(
fbusiDetail
.
getId
());
prescriptionMapper
.
updateByNumber
(
prescription
);
//设置分录
Conds
conds
=
new
Conds
();
conds
.
equal
(
"t.number"
,
number
);
prescription
=
fetchSearchByConds
(
conds
);
handleFrug
(
fbusiDetail
,
prescription
);
return
prescription
;
}
...
...
aidea-modules/prescription-module/src/main/java/com/cftech/prescription/web/MobilePrecriptionController.java
View file @
13ed6a75
...
...
@@ -20,7 +20,7 @@ public class MobilePrecriptionController {
* @param openId
* @return
*/
@RequestMapping
(
value
=
"generatePrescriptionNumber"
,
method
=
{
RequestMethod
.
GE
T
},
produces
=
MediaType
.
APPLICATION_JSON_UTF8_VALUE
)
@RequestMapping
(
value
=
"generatePrescriptionNumber"
,
method
=
{
RequestMethod
.
POS
T
},
produces
=
MediaType
.
APPLICATION_JSON_UTF8_VALUE
)
public
JSONObject
generatePrescriptionNumber
(
@RequestParam
String
appId
,
@RequestParam
String
openId
)
{
return
prescriptionService
.
generatePre
(
appId
,
openId
);
...
...
@@ -32,9 +32,23 @@ public class MobilePrecriptionController {
* @param openId
* @return
*/
@RequestMapping
(
value
=
"findLastPrescription"
,
method
=
{
RequestMethod
.
GE
T
},
produces
=
MediaType
.
APPLICATION_JSON_UTF8_VALUE
)
@RequestMapping
(
value
=
"findLastPrescription"
,
method
=
{
RequestMethod
.
POS
T
},
produces
=
MediaType
.
APPLICATION_JSON_UTF8_VALUE
)
public
JSONObject
findLastPrescription
(
@RequestParam
String
appId
,
@RequestParam
String
openId
)
{
return
prescriptionService
.
findLastPrescription
(
appId
,
openId
);
}
/**
* 更新处方单
* @param appId
* @param openId
* @param number
* @return
*/
@RequestMapping
(
value
=
"updatePrescription"
,
method
=
{
RequestMethod
.
POST
},
produces
=
MediaType
.
APPLICATION_JSON_UTF8_VALUE
)
public
JSONObject
updatePrescription
(
@RequestParam
String
appId
,
@RequestParam
String
openId
,
@RequestParam
String
number
)
{
return
prescriptionService
.
updatePrescription
(
appId
,
openId
,
number
);
}
}
aidea-modules/prescription-module/src/main/java/com/cftech/prescription/web/PrescriptionController.java
View file @
13ed6a75
...
...
@@ -103,9 +103,9 @@ public class PrescriptionController {
public
JSONObject
listData
(
int
iDisplayStart
,
int
iDisplayLength
,
Prescription
prescription
,
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
);
conds
.
equal
(
"
t.
del_flag"
,
Constants
.
DEL_FLAG_0
);
conds
.
equal
(
"
t.description"
,
"2"
);
Sort
sort
=
new
Sort
(
"
t.
create_time"
,
OrderType
.
DESC
);
List
<
Prescription
>
list
=
prescriptionService
.
fetchSearchByPage
(
conds
,
sort
,
iDisplayStart
,
iDisplayLength
);
Integer
counts
=
prescriptionService
.
count
(
conds
);
...
...
@@ -137,8 +137,7 @@ public class PrescriptionController {
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
);
conds
.
equal
(
"t.del_flag"
,
0
);
List
<
Prescription
>
list
=
prescriptionService
.
fetchSearchByPage
(
conds
,
sort
,
0
,
0
);
ExcelKit
.
$Export
(
Prescription
.
class
,
response
).
toExcel
(
list
,
"处方单列表信息"
);
}
...
...
aidea-modules/product-module-web/src/main/webapp/WEB-INF/views/product/productlist.html
View file @
13ed6a75
...
...
@@ -115,15 +115,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>
<th>
创建时间
</th>
...
...
@@ -247,33 +239,9 @@
{
"mData"
:
"productNumber"
},
// {
// "mData":"dosagaFrom"
// },
// {
// "mData":"format"
// },
// {
// "mData":"approveNumber"
// },
{
"mData"
:
"manufacturer"
},
// {
// "mData":"tips"
// },
// {
// "mData":"takeType"
// },
// {
// "mData":"takeFrequency"
// },
// {
// "mData":"takeAmount"
// },
// {
// "mData":"stock"
// },
{
"mData"
:
"price"
},
...
...
@@ -307,7 +275,6 @@
return
formatDates
(
a
,
"yyyy-MM-dd HH:mm:ss"
);
}
},
{
"aTargets"
:
[
10
],
"mData"
:
"id"
,
...
...
@@ -315,6 +282,9 @@
var
html
=
'#if($shiro.hasPermission("qy:product:edit"))'
;
html
+=
'<a href="#springUrl("/a/product/form?id='
+
a
+
'")" data-id="'
+
a
+
'" data-action="view" class="btn green">修改</a>'
;
html
+=
'<a href="javascript:void(0);" data-id="'
+
a
+
'" data-action="remove" onclick="removeData('
+
a
+
')" class="btn red">删除</a>'
;
if
(
c
.
uploadFlag
==
'0'
)
{
html
+=
'<a href="javascript:void(0);" data-id="'
+
a
+
'" data-action="remove" onclick="uploadPlatform('
+
a
+
')" class="btn red">上传</a>'
;
}
html
+=
'#end'
;
return
html
;
}
...
...
@@ -343,6 +313,38 @@
Cfapp
.
init
();
function
uploadPlatform
(
data
)
{
Cfapp
.
confirm
({
message
:
"确定上传?"
,
btnoktext
:
"确定"
,
btncanceltext
:
"取消"
,
success
:
function
()
{
$
.
ajax
({
type
:
"POST"
,
url
:
"#springUrl('/a/product/uploadPlatform')"
,
"data"
:
{
id
:
data
,
_csrfheader
:
csrfheader
.
value
,
_csrf
:
csrftoken
.
value
},
dataType
:
"json"
,
success
:
function
(
data
)
{
if
(
data
.
errorNo
==
0
)
{
Cfapp
.
alert
({
message
:
"上传成功"
,
btntext
:
"确定"
,
success
:
function
()
{
location
.
href
=
"#springUrl('/a/product/list')"
;
}
});
}
},
error
:
function
()
{
}
})
},
cancel
:
function
()
{
$
(
".modal-backdrop"
).
fadeOut
();
}
});
}
function
removeData
(
data
)
{
Cfapp
.
confirm
({
message
:
"确定要删除吗"
,
...
...
aidea-modules/product-module/pom.xml
View file @
13ed6a75
...
...
@@ -31,6 +31,12 @@
<artifactId>
product-detail-module
</artifactId>
<version>
1.0-SNAPSHOT
</version>
</dependency>
<dependency>
<groupId>
com.cftech
</groupId>
<artifactId>
prescription-module
</artifactId>
<version>
1.0-SNAPSHOT
</version>
<scope>
compile
</scope>
</dependency>
</dependencies>
...
...
aidea-modules/product-module/src/main/java/com/cftech/product/dao/ProductMapper.xml
View file @
13ed6a75
...
...
@@ -130,7 +130,8 @@
t.isreading,
t.invoice_code invoiceCode,
t.deviation,
t.upload_flag AS uploadFlag
t.upload_flag AS uploadFlag,
t.unit
</sql>
<insert
id=
"save"
parameterType=
"com.cftech.product.model.Product"
useGeneratedKeys=
"true"
...
...
aidea-modules/product-module/src/main/java/com/cftech/product/model/ProductVO.java
View file @
13ed6a75
...
...
@@ -56,5 +56,7 @@ public class ProductVO {
private
String
productImgDetail
;
/*是否展示销量*/
private
Long
isreading
;
/*单位*/
private
String
unit
;
}
aidea-modules/product-module/src/main/java/com/cftech/product/service/ProductService.java
View file @
13ed6a75
...
...
@@ -51,4 +51,12 @@ public interface ProductService extends GenericService<Product> {
* @param uploadFlag
*/
void
updateUploadFlag
(
List
<
String
>
productNumberList
,
boolean
uploadFlag
);
/**
* 药品清单上传
*
* @param productList
* @return
*/
JSONObject
uploadDrugInfo
(
List
<
Product
>
productList
)
throws
Exception
;
}
aidea-modules/product-module/src/main/java/com/cftech/product/service/impl/ProductServiceImpl.java
View file @
13ed6a75
...
...
@@ -4,8 +4,13 @@ import com.alibaba.fastjson.JSONObject;
import
com.cftech.accounts.model.MpAccountsEntity
;
import
com.cftech.accounts.service.MpAccountsService
;
import
com.cftech.base.codingrule.utils.CodingruleUtils
;
import
com.cftech.cdfortis.constants.CdfortisConstant
;
import
com.cftech.cdfortis.model.CdfortisDrugInfo
;
import
com.cftech.cdfortis.util.CdfortisResponseUtil
;
import
com.cftech.cdfortis.util.CdfortisTokenUtil
;
import
com.cftech.core.sql.Sort
;
import
com.cftech.core.util.StringUtils
;
import
com.cftech.core.util.SystemConfig
;
import
com.cftech.product.model.Product
;
import
com.cftech.product.dao.ProductMapper
;
import
com.cftech.product.model.ProductVO
;
...
...
@@ -18,6 +23,8 @@ import com.cftech.productdetail.model.ProductDetail;
import
com.cftech.productintowareroom.dao.ProductIntoWareroomMapper
;
import
com.cftech.productintowareroom.model.ProductIntoWareroom
;
import
com.esotericsoftware.minlog.Log
;
import
okhttp3.MediaType
;
import
okhttp3.RequestBody
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.stereotype.Service
;
...
...
@@ -27,6 +34,7 @@ import java.math.BigDecimal;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
/**
* 产品ServiceImpl
...
...
@@ -53,6 +61,10 @@ public class ProductServiceImpl extends GenericServiceImpl<Product> implements P
@Autowired
private
MpAccountsService
mpAccountsService
;
@Autowired
private
CdfortisTokenUtil
cdfortisTokenUtil
;
@Override
public
GenericDao
<
Product
>
getGenericMapper
()
{
return
productMapper
;
...
...
@@ -205,5 +217,45 @@ public class ProductServiceImpl extends GenericServiceImpl<Product> implements P
productMapper
.
updateUploadFlag
(
productNumberList
,
uploadFlag
?
1
:
0
);
}
/**
* 上传药品清单
*
* @param productList
* @return
*/
@Override
public
JSONObject
uploadDrugInfo
(
List
<
Product
>
productList
)
throws
Exception
{
String
uploadUrl
=
SystemConfig
.
p
.
getProperty
(
"cdfortis.drug_upload_url"
);
// 构建参数
JSONObject
param
=
new
JSONObject
();
param
.
put
(
"appid"
,
SystemConfig
.
p
.
getProperty
(
"cdfortis.appid"
));
param
.
put
(
"token"
,
cdfortisTokenUtil
.
getToken
());
// 转换药品类型为微问诊需要的结构
List
<
CdfortisDrugInfo
>
cdfortisDrugList
=
productList
.
stream
().
map
(
this
::
fromProduct
).
collect
(
Collectors
.
toList
());
param
.
put
(
"drugInfo"
,
cdfortisDrugList
);
RequestBody
body
=
RequestBody
.
create
(
MediaType
.
parse
(
"application/json; charset=utf-8"
),
param
.
toJSONString
());
// 请求获取数据
String
data
=
CdfortisResponseUtil
.
request
(
uploadUrl
,
CdfortisConstant
.
METHOD_POST
,
null
,
null
,
body
);
// 判断数据是否正确
return
JSONObject
.
parseObject
(
data
);
}
/**
* 转换药品信息
*
* @return
* @para preDrugs
*/
private
CdfortisDrugInfo
fromProduct
(
Product
product
)
{
CdfortisDrugInfo
cdfortisDrug
=
new
CdfortisDrugInfo
();
cdfortisDrug
.
setApprNumber
(
product
.
getApproveNumber
());
cdfortisDrug
.
setSpec
(
product
.
getFormat
());
cdfortisDrug
.
setPrice
(
String
.
valueOf
(
product
.
getPrice
()));
// 这里不确定是否应该用这个字段
cdfortisDrug
.
setErpId
(
product
.
getProductNumber
());
cdfortisDrug
.
setDrugName
(
product
.
getProductName
());
cdfortisDrug
.
setFactoryName
(
product
.
getManufacturer
());
return
cdfortisDrug
;
}
}
\ No newline at end of file
aidea-modules/product-module/src/main/java/com/cftech/product/web/ProductController.java
View file @
13ed6a75
package
com
.
cftech
.
product
.
web
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.cftech.base.codingrule.utils.CodingruleUtils
;
import
com.cftech.cdfortis.service.CdfortisService
;
import
com.cftech.core.util.StringUtils
;
import
com.cftech.product.model.Product
;
import
com.cftech.product.service.ProductService
;
...
...
@@ -19,6 +21,7 @@ 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.CollectionUtils
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
org.springframework.web.multipart.MultipartFile
;
...
...
@@ -27,8 +30,10 @@ import javax.servlet.http.HttpServletRequest;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.File
;
import
java.io.IOException
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.stream.Collectors
;
/**
...
...
@@ -58,6 +63,8 @@ public class ProductController {
@Autowired
private
CodingruleUtils
codingruleUtils
;
@Autowired
private
CdfortisService
cdfortisService
;
//列表页面
@RequiresPermissions
(
value
=
PRODUCT_VIEW
)
...
...
@@ -138,7 +145,6 @@ public class ProductController {
Long
accountsId
=
UserUtils
.
getmpaccounts
(
request
);
Conds
conds
=
new
Conds
();
conds
.
equal
(
"a.del_flag"
,
Constants
.
DEL_FLAG_0
);
conds
.
equal
(
"a.accounts_id"
,
accountsId
);
List
<
String
>
classifyId
=
null
;
if
(!
StringUtils
.
isEmpty
(
product
.
getProductName
()))
{
conds
.
like
(
"a.product_name"
,
product
.
getProductName
());
...
...
@@ -176,13 +182,50 @@ public class ProductController {
return
rtnJosn
;
}
//删除数据
@RequiresPermissions
(
value
=
PRODUCT_EDIT
)
@RequestMapping
(
"/uploadPlatform"
)
@ResponseBody
public
JSONObject
uploadPlatform
(
String
id
)
{
JSONObject
rtnJosn
=
new
JSONObject
();
Object
data
=
""
;
try
{
Product
product
=
productService
.
fetchById
(
id
);
List
<
Product
>
list
=
new
ArrayList
<>();
list
.
add
(
product
);
JSONObject
dataJsonObj
=
productService
.
uploadDrugInfo
(
list
);
boolean
isAllSuccess
=
dataJsonObj
.
getBooleanValue
(
"isAllSuccess"
);
if
(!
isAllSuccess
)
{
JSONArray
failedDataArr
=
dataJsonObj
.
getJSONArray
(
"failedData"
);
// List转map,key是productNumber、value是product本身
List
<
String
>
productNumberList
=
list
.
stream
()
.
map
(
Product:
:
getProductNumber
)
.
collect
(
Collectors
.
toList
());
// 遍历上传失败的数据,排除掉
for
(
int
i
=
0
;
i
<
failedDataArr
.
size
();
i
++)
{
String
erpId
=
failedDataArr
.
getJSONObject
(
i
).
getString
(
"erpId"
);
productNumberList
.
remove
(
erpId
);
}
if
(!
CollectionUtils
.
isEmpty
(
productNumberList
))
productService
.
updateUploadFlag
(
productNumberList
,
true
);
data
=
failedDataArr
;
}
rtnJosn
.
put
(
"errorNo"
,
0
);
}
catch
(
Exception
e
)
{
rtnJosn
.
put
(
"errorNo"
,
1
);
}
rtnJosn
.
put
(
"errorMsg"
,
data
);
return
rtnJosn
;
}
@RequestMapping
(
"/exportExcel"
)
@RequiresPermissions
(
value
=
PRODUCT_VIEW
)
public
void
exportExcel
(
HttpServletRequest
request
,
HttpServletResponse
response
,
Product
product
)
{
Long
accountsId
=
UserUtils
.
getmpaccounts
(
request
);
Conds
conds
=
new
Conds
();
conds
.
equal
(
"a.del_flag"
,
Constants
.
DEL_FLAG_0
);
conds
.
equal
(
"a.accounts_id"
,
accountsId
);
List
<
String
>
classifyId
=
null
;
if
(!
StringUtils
.
isEmpty
(
product
.
getProductName
()))
{
conds
.
like
(
"a.product_name"
,
product
.
getProductName
());
...
...
cftech-common-web/src/main/resources/common-test.properties
View file @
13ed6a75
...
...
@@ -86,7 +86,7 @@ jwt.duration=86400000
#\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u03AAtrue
security.secure
=
false
#\u662F\u5426\u96C6\u7FA4 master\u4E3Atrue
quartz.isCluster
=
fals
e
quartz.isCluster
=
tru
e
#\u987A\u4E30\u7269\u6D41\u914D\u7F6E\u4FE1\u606F\u53C2\u6570
#\u987A\u4E30\u5BA2\u6237\u7F16\u7801
...
...
@@ -108,7 +108,7 @@ APP_SECRET=SD25624CC1DF4AB7
KAIHUHANG_ADDRESS
=
\u
6C5F
\u
82CF
\u
94F6
\u
884C
\u
626C
\u
5DDE
\u5510\u
57CE
\u
652F
\u
884C 90160188000128434
CLERK
=
\u5415\u5029
CHECKER
=
\u7530\u
59DD
PAYEE
=
\u
6C6A
\u
8A00
\u
52C7
PAYEE
=
\u
6C6A
\u
8A00
\u
52C7
#\u5F00\u53D1\u7968\u63A5\u53E3
INVOICE_API
=
nuonuo.ElectronInvoice.requestBillingNew
#\u67E5\u8BE2\u53D1\u7968\u63A5\u53E3
...
...
@@ -152,8 +152,8 @@ 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
=
aidea888
#\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
...
...
@@ -164,5 +164,5 @@ cdfortis.get_fbusi_pic_url=https://api.cdfortis.com/api/fbusi/getFbusiPicture
cdfortis.get_fbusi_info_url
=
https://api.cdfortis.com/api/fbusi/getFbusiInfo
#\u5FAE\u95EE\u8BCA\u901A\u8FC7\u8BA2\u5355\u53F7\u56FE\u6587\u5904\u65B9\u8BE6\u60C5
cdfortis.get_fbusi_info_by_order_id_url
=
https://api.cdfortis.com/api/fbusi/getFbusiInfoByOrderId
#\u5FAE\u95EE\u8BCA\u836F\u5E97\u7F16\u7801
cdfortis.store_no
=
aidea888
\ No newline at end of file
#\u5FAE\u95EE\u8BCA\u95E8\u5E97\u7F16\u7801
cdfortis.store_no
=
wxc43bd62c1
qy-modules/qyapi-module/src/main/java/com/cftech/base/org/api/QyMediaUtil.java
View file @
13ed6a75
package
com
.
cftech
.
base
.
org
.
api
;
import
bsh.StringUtil
;
import
com.alibaba.excel.util.StringUtils
;
import
com.cftech.accounts.model.MpAccountsEntity
;
import
com.cftech.core.constants.MpApiConstants
;
import
com.cftech.core.constants.WxApiConstants
;
...
...
@@ -15,7 +17,9 @@ import java.io.File;
import
java.io.FileOutputStream
;
import
java.io.IOException
;
import
java.net.HttpURLConnection
;
import
java.net.MalformedURLException
;
import
java.net.URL
;
import
java.net.URLConnection
;
import
java.util.UUID
;
/**
...
...
@@ -58,6 +62,34 @@ public class QyMediaUtil {
return
res
;
}
/**
* 下载媒体文件至本地
* @param accountsId
* @param moduleName
* @param imageUrl
* @return
*/
public
String
downloadLocalToDisk
(
Long
accountsId
,
String
moduleName
,
String
imageUrl
)
{
if
(
StringUtils
.
isEmpty
(
imageUrl
))
{
return
null
;
}
String
finalFileName
=
""
;
MpAccountsEntity
accountsEntity
=
mpTokenUtil
.
searchAccountsById
(
accountsId
);
try
{
URL
url
=
new
URL
(
imageUrl
);
URLConnection
conn
=
url
.
openConnection
();
conn
.
setDoInput
(
true
);
}
catch
(
MalformedURLException
e
)
{
e
.
printStackTrace
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
finally
{
}
return
null
;
}
/**
* 下载媒体文件至磁盘(服务号)
*
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment