Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
warehouse
Overview
Overview
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
胡懿
warehouse
Commits
55f87d07
Commit
55f87d07
authored
Feb 13, 2023
by
胡懿
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
货品,二维码,入库,台账表生成
parent
2d68aa17
Hide whitespace changes
Inline
Side-by-side
Showing
29 changed files
with
2132 additions
and
353 deletions
+2132
-353
Goods.java
...ava/com/jeeplus/modules/warehouse/goods/entity/Goods.java
+93
-0
GoodsInfo.java
...com/jeeplus/modules/warehouse/goods/entity/GoodsInfo.java
+93
-0
GoodsInfoMapper.java
...eplus/modules/warehouse/goods/mapper/GoodsInfoMapper.java
+7
-6
GoodsMapper.java
...m/jeeplus/modules/warehouse/goods/mapper/GoodsMapper.java
+5
-5
GoodsInfoMapper.xml
...us/modules/warehouse/goods/mapper/xml/GoodsInfoMapper.xml
+177
-0
GoodsMapper.xml
...eeplus/modules/warehouse/goods/mapper/xml/GoodsMapper.xml
+38
-32
GoodsService.java
...jeeplus/modules/warehouse/goods/service/GoodsService.java
+75
-0
GoodsController.java
.../jeeplus/modules/warehouse/goods/web/GoodsController.java
+49
-40
Ledger.java
...a/com/jeeplus/modules/warehouse/ledger/entity/Ledger.java
+89
-0
LedgerInfo.java
...m/jeeplus/modules/warehouse/ledger/entity/LedgerInfo.java
+124
-0
LedgerInfoMapper.java
...lus/modules/warehouse/ledger/mapper/LedgerInfoMapper.java
+7
-6
LedgerMapper.java
...jeeplus/modules/warehouse/ledger/mapper/LedgerMapper.java
+19
-0
LedgerInfoMapper.xml
.../modules/warehouse/ledger/mapper/xml/LedgerInfoMapper.xml
+212
-0
LedgerMapper.xml
...plus/modules/warehouse/ledger/mapper/xml/LedgerMapper.xml
+57
-56
LedgerService.java
...eplus/modules/warehouse/ledger/service/LedgerService.java
+75
-0
LedgerController.java
...eeplus/modules/warehouse/ledger/web/LedgerController.java
+74
-61
QrCode.java
...a/com/jeeplus/modules/warehouse/qrcode/entity/QrCode.java
+59
-0
QrCodeMapper.java
...jeeplus/modules/warehouse/qrcode/mapper/QrCodeMapper.java
+19
-0
QrCodeMapper.xml
...plus/modules/warehouse/qrcode/mapper/xml/QrCodeMapper.xml
+36
-27
QrCodeService.java
...eplus/modules/warehouse/qrcode/service/QrCodeService.java
+48
-0
QrCodeController.java
...eeplus/modules/warehouse/qrcode/web/QrCodeController.java
+60
-60
Storage.java
...com/jeeplus/modules/warehouse/storage/entity/Storage.java
+100
-0
StorageInfo.java
...jeeplus/modules/warehouse/storage/entity/StorageInfo.java
+94
-0
StorageInfoMapper.java
...s/modules/warehouse/storage/mapper/StorageInfoMapper.java
+19
-0
StorageMapper.java
...eplus/modules/warehouse/storage/mapper/StorageMapper.java
+19
-0
StorageInfoMapper.xml
...odules/warehouse/storage/mapper/xml/StorageInfoMapper.xml
+187
-0
StorageMapper.xml
...us/modules/warehouse/storage/mapper/xml/StorageMapper.xml
+153
-0
StorageService.java
...lus/modules/warehouse/storage/service/StorageService.java
+75
-0
StorageController.java
...plus/modules/warehouse/storage/web/StorageController.java
+69
-60
No files found.
src/main/java/com/jeeplus/modules/warehouse/goods/entity/Goods.java
0 → 100644
View file @
55f87d07
/**
* Copyright © 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
*/
package
com
.
jeeplus
.
modules
.
warehouse
.
goods
.
entity
;
import
java.util.Date
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
javax.validation.constraints.NotNull
;
import
com.jeeplus.modules.sys.entity.User
;
import
java.util.List
;
import
com.google.common.collect.Lists
;
import
com.jeeplus.core.persistence.DataEntity
;
import
com.jeeplus.common.utils.excel.annotation.ExcelField
;
/**
* 货品模块Entity
* @author huyi
* @version 2023-02-13
*/
public
class
Goods
extends
DataEntity
<
Goods
>
{
private
static
final
long
serialVersionUID
=
1L
;
private
String
batchNum
;
// 批次号
private
Date
time
;
// 时间
private
User
operator
;
// 操作人
private
Date
beginTime
;
// 开始 时间
private
Date
endTime
;
// 结束 时间
private
List
<
GoodsInfo
>
goodsInfoList
=
Lists
.
newArrayList
();
// 子表列表
public
Goods
()
{
super
();
}
public
Goods
(
String
id
){
super
(
id
);
}
@ExcelField
(
title
=
"批次号"
,
align
=
2
,
sort
=
1
)
public
String
getBatchNum
()
{
return
batchNum
;
}
public
void
setBatchNum
(
String
batchNum
)
{
this
.
batchNum
=
batchNum
;
}
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
@NotNull
(
message
=
"时间不能为空"
)
@ExcelField
(
title
=
"时间"
,
align
=
2
,
sort
=
2
)
public
Date
getTime
()
{
return
time
;
}
public
void
setTime
(
Date
time
)
{
this
.
time
=
time
;
}
@NotNull
(
message
=
"操作人不能为空"
)
@ExcelField
(
title
=
"操作人"
,
fieldType
=
User
.
class
,
value
=
"operator.name"
,
align
=
2
,
sort
=
4
)
public
User
getOperator
()
{
return
operator
;
}
public
void
setOperator
(
User
operator
)
{
this
.
operator
=
operator
;
}
public
Date
getBeginTime
()
{
return
beginTime
;
}
public
void
setBeginTime
(
Date
beginTime
)
{
this
.
beginTime
=
beginTime
;
}
public
Date
getEndTime
()
{
return
endTime
;
}
public
void
setEndTime
(
Date
endTime
)
{
this
.
endTime
=
endTime
;
}
public
List
<
GoodsInfo
>
getGoodsInfoList
()
{
return
goodsInfoList
;
}
public
void
setGoodsInfoList
(
List
<
GoodsInfo
>
goodsInfoList
)
{
this
.
goodsInfoList
=
goodsInfoList
;
}
}
\ No newline at end of file
src/main/java/com/jeeplus/modules/warehouse/goods/entity/GoodsInfo.java
0 → 100644
View file @
55f87d07
/**
* Copyright © 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
*/
package
com
.
jeeplus
.
modules
.
warehouse
.
goods
.
entity
;
import
com.jeeplus.modules.warehouse.materialtype.entity.MaterialType
;
import
com.jeeplus.modules.warehouse.goods.entity.Goods
;
import
com.jeeplus.core.persistence.DataEntity
;
import
com.jeeplus.common.utils.excel.annotation.ExcelField
;
/**
* 货品明细Entity
* @author huyi
* @version 2023-02-13
*/
public
class
GoodsInfo
extends
DataEntity
<
GoodsInfo
>
{
private
static
final
long
serialVersionUID
=
1L
;
private
String
name
;
// 名称
private
MaterialType
type
;
// 类型
private
String
model
;
// 型号
private
Integer
num
;
// 数量
private
String
state
;
// 入库状态
private
Goods
goods
;
// 主表ID 父类
public
GoodsInfo
()
{
super
();
}
public
GoodsInfo
(
String
id
){
super
(
id
);
}
public
GoodsInfo
(
Goods
goods
){
this
.
goods
=
goods
;
}
@ExcelField
(
title
=
"名称"
,
align
=
2
,
sort
=
1
)
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
@ExcelField
(
title
=
"类型"
,
fieldType
=
MaterialType
.
class
,
value
=
"type.code"
,
align
=
2
,
sort
=
2
)
public
MaterialType
getType
()
{
return
type
;
}
public
void
setType
(
MaterialType
type
)
{
this
.
type
=
type
;
}
@ExcelField
(
title
=
"型号"
,
align
=
2
,
sort
=
3
)
public
String
getModel
()
{
return
model
;
}
public
void
setModel
(
String
model
)
{
this
.
model
=
model
;
}
@ExcelField
(
title
=
"数量"
,
align
=
2
,
sort
=
4
)
public
Integer
getNum
()
{
return
num
;
}
public
void
setNum
(
Integer
num
)
{
this
.
num
=
num
;
}
@ExcelField
(
title
=
"入库状态"
,
dictType
=
"wh_stockroom_state"
,
align
=
2
,
sort
=
6
)
public
String
getState
()
{
return
state
;
}
public
void
setState
(
String
state
)
{
this
.
state
=
state
;
}
public
Goods
getGoods
()
{
return
goods
;
}
public
void
setGoods
(
Goods
goods
)
{
this
.
goods
=
goods
;
}
}
\ No newline at end of file
src/main/java/com/jeeplus/modules/
test/grid/mapper/TestCountry
Mapper.java
→
src/main/java/com/jeeplus/modules/
warehouse/goods/mapper/GoodsInfo
Mapper.java
View file @
55f87d07
/**
/**
* Copyright © 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
* Copyright © 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
*/
*/
package
com
.
jeeplus
.
modules
.
test
.
grid
.
mapper
;
package
com
.
jeeplus
.
modules
.
warehouse
.
goods
.
mapper
;
import
com.jeeplus.core.persistence.BaseMapper
;
import
com.jeeplus.core.persistence.BaseMapper
;
import
com.jeeplus.core.persistence.annotation.MyBatisMapper
;
import
com.jeeplus.core.persistence.annotation.MyBatisMapper
;
import
com.jeeplus.modules.
test.grid.entity.TestCountry
;
import
com.jeeplus.modules.
warehouse.goods.entity.GoodsInfo
;
/**
/**
*
国家
MAPPER接口
*
货品明细
MAPPER接口
* @author
lgf
* @author
huyi
* @version 20
18-04-10
* @version 20
23-02-13
*/
*/
@MyBatisMapper
@MyBatisMapper
public
interface
TestCountryMapper
extends
BaseMapper
<
TestCountry
>
{
public
interface
GoodsInfoMapper
extends
BaseMapper
<
GoodsInfo
>
{
}
}
\ No newline at end of file
src/main/java/com/jeeplus/modules/
test/manytoone
/mapper/GoodsMapper.java
→
src/main/java/com/jeeplus/modules/
warehouse/goods
/mapper/GoodsMapper.java
View file @
55f87d07
/**
/**
* Copyright © 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
* Copyright © 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
*/
*/
package
com
.
jeeplus
.
modules
.
test
.
manytoone
.
mapper
;
package
com
.
jeeplus
.
modules
.
warehouse
.
goods
.
mapper
;
import
com.jeeplus.core.persistence.BaseMapper
;
import
com.jeeplus.core.persistence.BaseMapper
;
import
com.jeeplus.core.persistence.annotation.MyBatisMapper
;
import
com.jeeplus.core.persistence.annotation.MyBatisMapper
;
import
com.jeeplus.modules.
test.manytoone
.entity.Goods
;
import
com.jeeplus.modules.
warehouse.goods
.entity.Goods
;
/**
/**
*
商品
MAPPER接口
*
货品模块
MAPPER接口
* @author
liugf
* @author
huyi
* @version 20
18-06-12
* @version 20
23-02-13
*/
*/
@MyBatisMapper
@MyBatisMapper
public
interface
GoodsMapper
extends
BaseMapper
<
Goods
>
{
public
interface
GoodsMapper
extends
BaseMapper
<
Goods
>
{
...
...
src/main/java/com/jeeplus/modules/warehouse/goods/mapper/xml/GoodsInfoMapper.xml
0 → 100644
View file @
55f87d07
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.jeeplus.modules.warehouse.goods.mapper.GoodsInfoMapper"
>
<sql
id=
"goodsInfoColumns"
>
a.id AS "id",
a.name AS "name",
a.type_id AS "type.id",
a.model AS "model",
a.num AS "num",
a.remarks AS "remarks",
a.state AS "state",
a.goods_id AS "goods.id",
a.create_by AS "createBy.id",
a.create_date AS "createDate",
a.update_by AS "updateBy.id",
a.update_date AS "updateDate",
a.del_flag AS "delFlag",
type.code AS "type.code",
type.name AS "type.name"
</sql>
<sql
id=
"goodsInfoJoins"
>
LEFT JOIN t_wh_material_type type ON type.id = a.type_id
LEFT JOIN t_wh_goods b ON b.id = a.goods_id
</sql>
<select
id=
"get"
resultType=
"GoodsInfo"
>
SELECT
<include
refid=
"goodsInfoColumns"
/>
FROM t_wh_goods_info a
<include
refid=
"goodsInfoJoins"
/>
WHERE a.id = #{id}
</select>
<select
id=
"findList"
resultType=
"GoodsInfo"
>
SELECT
<include
refid=
"goodsInfoColumns"
/>
FROM t_wh_goods_info a
<include
refid=
"goodsInfoJoins"
/>
<where>
a.del_flag = #{DEL_FLAG_NORMAL}
${dataScope}
<if
test=
"name != null and name != ''"
>
AND a.name = #{name}
</if>
<if
test=
"type != null and type.id != null and type.id != ''"
>
AND a.type_id = #{type.id}
</if>
<if
test=
"model != null and model != ''"
>
AND a.model LIKE
<if
test=
"dbName == 'oracle'"
>
'%'||#{model}||'%'
</if>
<if
test=
"dbName == 'mssql'"
>
'%'+#{model}+'%'
</if>
<if
test=
"dbName == 'mysql'"
>
concat('%',#{model},'%')
</if>
</if>
<if
test=
"state != null and state != ''"
>
AND a.state = #{state}
</if>
<if
test=
"goods != null and goods.id != null and goods.id != ''"
>
AND a.goods_id = #{goods.id}
</if>
</where>
<choose>
<when
test=
"page !=null and page.orderBy != null and page.orderBy != ''"
>
ORDER BY ${page.orderBy}
</when>
<otherwise>
ORDER BY a.create_date ASC
</otherwise>
</choose>
</select>
<select
id=
"findAllList"
resultType=
"GoodsInfo"
>
SELECT
<include
refid=
"goodsInfoColumns"
/>
FROM t_wh_goods_info a
<include
refid=
"goodsInfoJoins"
/>
<where>
a.del_flag = #{DEL_FLAG_NORMAL}
${dataScope}
</where>
<choose>
<when
test=
"page !=null and page.orderBy != null and page.orderBy != ''"
>
ORDER BY ${page.orderBy}
</when>
<otherwise>
ORDER BY a.create_date ASC
</otherwise>
</choose>
</select>
<insert
id=
"insert"
>
INSERT INTO t_wh_goods_info(
id,
name,
type_id,
model,
num,
remarks,
state,
goods_id,
create_by,
create_date,
update_by,
update_date,
del_flag
) VALUES (
#{id},
#{name},
#{type.id},
#{model},
#{num},
#{remarks},
#{state},
#{goods.id},
#{createBy.id},
#{createDate},
#{updateBy.id},
#{updateDate},
#{delFlag}
)
</insert>
<update
id=
"update"
>
UPDATE t_wh_goods_info SET
name = #{name},
type_id = #{type.id},
model = #{model},
num = #{num},
remarks = #{remarks},
state = #{state},
goods_id = #{goods.id},
update_by = #{updateBy.id},
update_date = #{updateDate}
WHERE id = #{id}
</update>
<!--物理删除-->
<update
id=
"delete"
>
DELETE FROM t_wh_goods_info
<choose>
<when
test=
"id !=null and id != ''"
>
WHERE id = #{id}
</when>
<otherwise>
WHERE goods_id = #{goods.id}
</otherwise>
</choose>
</update>
<!--逻辑删除-->
<update
id=
"deleteByLogic"
>
UPDATE t_wh_goods_info SET
del_flag = #{DEL_FLAG_DELETE}
<choose>
<when
test=
"id !=null and id != ''"
>
WHERE id = #{id}
</when>
<otherwise>
WHERE goods_id = #{goods.id}
</otherwise>
</choose>
</update>
<!-- 根据实体名称和字段名称和字段值获取唯一记录 -->
<select
id=
"findUniqueByProperty"
resultType=
"GoodsInfo"
statementType=
"STATEMENT"
>
select * FROM t_wh_goods_info where ${propertyName} = '${value}'
</select>
</mapper>
\ No newline at end of file
src/main/java/com/jeeplus/modules/
test/manytoone
/mapper/xml/GoodsMapper.xml
→
src/main/java/com/jeeplus/modules/
warehouse/goods
/mapper/xml/GoodsMapper.xml
View file @
55f87d07
<?xml version="1.0" encoding="UTF-8" ?>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.jeeplus.modules.
test.manytoone
.mapper.GoodsMapper"
>
<mapper
namespace=
"com.jeeplus.modules.
warehouse.goods
.mapper.GoodsMapper"
>
<sql
id=
"goodsColumns"
>
<sql
id=
"goodsColumns"
>
a.id AS "id",
a.id AS "id",
a.name AS "name",
a.batch_num AS "batchNum",
a.category_id AS "category.id",
a.time AS "time",
a.price AS "price",
a.remarks AS "remarks",
a.operator AS "operator.id",
a.create_by AS "createBy.id",
a.create_by AS "createBy.id",
a.create_date AS "createDate",
a.create_date AS "createDate",
a.update_by AS "updateBy.id",
a.update_by AS "updateBy.id",
a.update_date AS "updateDate",
a.update_date AS "updateDate",
a.remarks AS "remarks",
a.del_flag AS "delFlag",
a.del_flag AS "delFlag",
category.name AS "category.name"
operator.name AS "operator.name"
</sql>
</sql>
<sql
id=
"goodsJoins"
>
<sql
id=
"goodsJoins"
>
LEFT JOIN
test_category category ON category.id = a.category_id
LEFT JOIN
sys_user operator ON operator.id = a.operator
</sql>
</sql>
<select
id=
"get"
resultType=
"Goods"
>
<select
id=
"get"
resultType=
"Goods"
>
SELECT
SELECT
<include
refid=
"goodsColumns"
/>
<include
refid=
"goodsColumns"
/>
FROM t
est
_goods a
FROM t
_wh
_goods a
<include
refid=
"goodsJoins"
/>
<include
refid=
"goodsJoins"
/>
WHERE a.id = #{id}
WHERE a.id = #{id}
</select>
</select>
...
@@ -35,16 +37,19 @@
...
@@ -35,16 +37,19 @@
<select
id=
"findList"
resultType=
"Goods"
>
<select
id=
"findList"
resultType=
"Goods"
>
SELECT
SELECT
<include
refid=
"goodsColumns"
/>
<include
refid=
"goodsColumns"
/>
FROM t
est
_goods a
FROM t
_wh
_goods a
<include
refid=
"goodsJoins"
/>
<include
refid=
"goodsJoins"
/>
<where>
<where>
a.del_flag = #{DEL_FLAG_NORMAL}
a.del_flag = #{DEL_FLAG_NORMAL}
${dataScope}
${dataScope}
<if
test=
"name != null and name != ''"
>
<if
test=
"batchNum != null and batchNum != ''"
>
AND a.name = #{name}
AND a.batch_num = #{batchNum}
</if>
<if
test=
"beginTime != null and endTime != null "
>
AND a.time BETWEEN #{beginTime} AND #{endTime}
</if>
</if>
<if
test=
"
category != null and category.id != null and category
.id != ''"
>
<if
test=
"
operator != null and operator.id != null and operator
.id != ''"
>
AND a.
category_id = #{category
.id}
AND a.
operator = #{operator
.id}
</if>
</if>
</where>
</where>
<choose>
<choose>
...
@@ -60,7 +65,7 @@
...
@@ -60,7 +65,7 @@
<select
id=
"findAllList"
resultType=
"Goods"
>
<select
id=
"findAllList"
resultType=
"Goods"
>
SELECT
SELECT
<include
refid=
"goodsColumns"
/>
<include
refid=
"goodsColumns"
/>
FROM t
est
_goods a
FROM t
_wh
_goods a
<include
refid=
"goodsJoins"
/>
<include
refid=
"goodsJoins"
/>
<where>
<where>
a.del_flag = #{DEL_FLAG_NORMAL}
a.del_flag = #{DEL_FLAG_NORMAL}
...
@@ -77,52 +82,52 @@
...
@@ -77,52 +82,52 @@
</select>
</select>
<insert
id=
"insert"
>
<insert
id=
"insert"
>
INSERT INTO t
est
_goods(
INSERT INTO t
_wh
_goods(
id,
id,
name,
batch_num,
category_id,
time,
price,
remarks,
operator,
create_by,
create_by,
create_date,
create_date,
update_by,
update_by,
update_date,
update_date,
remarks,
del_flag
del_flag
) VALUES (
) VALUES (
#{id},
#{id},
#{name},
#{batchNum},
#{category.id},
#{time},
#{price},
#{remarks},
#{operator.id},
#{createBy.id},
#{createBy.id},
#{createDate},
#{createDate},
#{updateBy.id},
#{updateBy.id},
#{updateDate},
#{updateDate},
#{remarks},
#{delFlag}
#{delFlag}
)
)
</insert>
</insert>
<update
id=
"update"
>
<update
id=
"update"
>
UPDATE test_goods SET
UPDATE t_wh_goods SET
name = #{name},
batch_num = #{batchNum},
category_id = #{category.id},
time = #{time},
price = #{price},
remarks = #{remarks},
operator = #{operator.id},
update_by = #{updateBy.id},
update_by = #{updateBy.id},
update_date = #{updateDate},
update_date = #{updateDate}
remarks = #{remarks}
WHERE id = #{id}
WHERE id = #{id}
</update>
</update>
<!--物理删除-->
<!--物理删除-->
<update
id=
"delete"
>
<update
id=
"delete"
>
DELETE FROM t
est
_goods
DELETE FROM t
_wh
_goods
WHERE id = #{id}
WHERE id = #{id}
</update>
</update>
<!--逻辑删除-->
<!--逻辑删除-->
<update
id=
"deleteByLogic"
>
<update
id=
"deleteByLogic"
>
UPDATE t
est
_goods SET
UPDATE t
_wh
_goods SET
del_flag = #{DEL_FLAG_DELETE}
del_flag = #{DEL_FLAG_DELETE}
WHERE id = #{id}
WHERE id = #{id}
</update>
</update>
...
@@ -130,7 +135,7 @@
...
@@ -130,7 +135,7 @@
<!-- 根据实体名称和字段名称和字段值获取唯一记录 -->
<!-- 根据实体名称和字段名称和字段值获取唯一记录 -->
<select
id=
"findUniqueByProperty"
resultType=
"Goods"
statementType=
"STATEMENT"
>
<select
id=
"findUniqueByProperty"
resultType=
"Goods"
statementType=
"STATEMENT"
>
select * FROM t
est
_goods where ${propertyName} = '${value}'
select * FROM t
_wh
_goods where ${propertyName} = '${value}'
</select>
</select>
</mapper>
</mapper>
\ No newline at end of file
src/main/java/com/jeeplus/modules/warehouse/goods/service/GoodsService.java
0 → 100644
View file @
55f87d07
/**
* Copyright © 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
*/
package
com
.
jeeplus
.
modules
.
warehouse
.
goods
.
service
;
import
java.util.List
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
com.jeeplus.core.persistence.Page
;
import
com.jeeplus.core.service.CrudService
;
import
com.jeeplus.common.utils.StringUtils
;
import
com.jeeplus.modules.warehouse.goods.entity.Goods
;
import
com.jeeplus.modules.warehouse.goods.mapper.GoodsMapper
;
import
com.jeeplus.modules.warehouse.goods.entity.GoodsInfo
;
import
com.jeeplus.modules.warehouse.goods.mapper.GoodsInfoMapper
;
/**
* 货品模块Service
* @author huyi
* @version 2023-02-13
*/
@Service
@Transactional
(
readOnly
=
true
)
public
class
GoodsService
extends
CrudService
<
GoodsMapper
,
Goods
>
{
@Autowired
private
GoodsInfoMapper
goodsInfoMapper
;
public
Goods
get
(
String
id
)
{
Goods
goods
=
super
.
get
(
id
);
goods
.
setGoodsInfoList
(
goodsInfoMapper
.
findList
(
new
GoodsInfo
(
goods
)));
return
goods
;
}
public
List
<
Goods
>
findList
(
Goods
goods
)
{
return
super
.
findList
(
goods
);
}
public
Page
<
Goods
>
findPage
(
Page
<
Goods
>
page
,
Goods
goods
)
{
return
super
.
findPage
(
page
,
goods
);
}
@Transactional
(
readOnly
=
false
)
public
void
save
(
Goods
goods
)
{
super
.
save
(
goods
);
for
(
GoodsInfo
goodsInfo
:
goods
.
getGoodsInfoList
()){
if
(
goodsInfo
.
getId
()
==
null
){
continue
;
}
if
(
GoodsInfo
.
DEL_FLAG_NORMAL
.
equals
(
goodsInfo
.
getDelFlag
())){
if
(
StringUtils
.
isBlank
(
goodsInfo
.
getId
())){
goodsInfo
.
setGoods
(
goods
);
goodsInfo
.
preInsert
();
goodsInfoMapper
.
insert
(
goodsInfo
);
}
else
{
goodsInfo
.
preUpdate
();
goodsInfoMapper
.
update
(
goodsInfo
);
}
}
else
{
goodsInfoMapper
.
delete
(
goodsInfo
);
}
}
}
@Transactional
(
readOnly
=
false
)
public
void
delete
(
Goods
goods
)
{
super
.
delete
(
goods
);
goodsInfoMapper
.
delete
(
new
GoodsInfo
(
goods
));
}
}
\ No newline at end of file
src/main/java/com/jeeplus/modules/
test/manytoone
/web/GoodsController.java
→
src/main/java/com/jeeplus/modules/
warehouse/goods
/web/GoodsController.java
View file @
55f87d07
/**
/**
* Copyright © 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
* Copyright © 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
*/
*/
package
com
.
jeeplus
.
modules
.
test
.
manytoone
.
web
;
package
com
.
jeeplus
.
modules
.
warehouse
.
goods
.
web
;
import
java.io.UnsupportedEncodingException
;
import
java.net.URLDecoder
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
...
@@ -22,6 +20,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
...
@@ -22,6 +20,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.multipart.MultipartFile
;
import
org.springframework.web.multipart.MultipartFile
;
import
com.google.common.collect.Lists
;
import
com.google.common.collect.Lists
;
...
@@ -33,16 +32,16 @@ import com.jeeplus.core.web.BaseController;
...
@@ -33,16 +32,16 @@ import com.jeeplus.core.web.BaseController;
import
com.jeeplus.common.utils.StringUtils
;
import
com.jeeplus.common.utils.StringUtils
;
import
com.jeeplus.common.utils.excel.ExportExcel
;
import
com.jeeplus.common.utils.excel.ExportExcel
;
import
com.jeeplus.common.utils.excel.ImportExcel
;
import
com.jeeplus.common.utils.excel.ImportExcel
;
import
com.jeeplus.modules.
test.manytoone
.entity.Goods
;
import
com.jeeplus.modules.
warehouse.goods
.entity.Goods
;
import
com.jeeplus.modules.
test.manytoone
.service.GoodsService
;
import
com.jeeplus.modules.
warehouse.goods
.service.GoodsService
;
/**
/**
*
商品
Controller
*
货品模块
Controller
* @author
liugf
* @author
huyi
* @version 20
18-06-12
* @version 20
23-02-13
*/
*/
@Controller
@Controller
@RequestMapping
(
value
=
"${adminPath}/
test/manytoone
/goods"
)
@RequestMapping
(
value
=
"${adminPath}/
warehouse/goods
/goods"
)
public
class
GoodsController
extends
BaseController
{
public
class
GoodsController
extends
BaseController
{
@Autowired
@Autowired
...
@@ -61,20 +60,20 @@ public class GoodsController extends BaseController {
...
@@ -61,20 +60,20 @@ public class GoodsController extends BaseController {
}
}
/**
/**
*
商品
列表页面
*
货品模块
列表页面
*/
*/
@RequiresPermissions
(
"
test:manytoone
:goods:list"
)
@RequiresPermissions
(
"
warehouse:goods
:goods:list"
)
@RequestMapping
(
value
=
{
"list"
,
""
})
@RequestMapping
(
value
=
{
"list"
,
""
})
public
String
list
(
Goods
goods
,
Model
model
)
{
public
String
list
(
Goods
goods
,
Model
model
)
{
model
.
addAttribute
(
"goods"
,
goods
);
model
.
addAttribute
(
"goods"
,
goods
);
return
"modules/
test/manytoone
/goodsList"
;
return
"modules/
warehouse/goods
/goodsList"
;
}
}
/**
/**
*
商品
列表数据
*
货品模块
列表数据
*/
*/
@ResponseBody
@ResponseBody
@RequiresPermissions
(
"
test:manytoone
:goods:list"
)
@RequiresPermissions
(
"
warehouse:goods
:goods:list"
)
@RequestMapping
(
value
=
"data"
)
@RequestMapping
(
value
=
"data"
)
public
Map
<
String
,
Object
>
data
(
Goods
goods
,
HttpServletRequest
request
,
HttpServletResponse
response
,
Model
model
)
{
public
Map
<
String
,
Object
>
data
(
Goods
goods
,
HttpServletRequest
request
,
HttpServletResponse
response
,
Model
model
)
{
Page
<
Goods
>
page
=
goodsService
.
findPage
(
new
Page
<
Goods
>(
request
,
response
),
goods
);
Page
<
Goods
>
page
=
goodsService
.
findPage
(
new
Page
<
Goods
>(
request
,
response
),
goods
);
...
@@ -82,20 +81,21 @@ public class GoodsController extends BaseController {
...
@@ -82,20 +81,21 @@ public class GoodsController extends BaseController {
}
}
/**
/**
* 查看,增加,编辑
商品
表单页面
* 查看,增加,编辑
货品模块
表单页面
*/
*/
@RequiresPermissions
(
value
={
"
test:manytoone:goods:view"
,
"test:manytoone:goods:add"
,
"test:manytoone
:goods:edit"
},
logical
=
Logical
.
OR
)
@RequiresPermissions
(
value
={
"
warehouse:goods:goods:view"
,
"warehouse:goods:goods:add"
,
"warehouse:goods
:goods:edit"
},
logical
=
Logical
.
OR
)
@RequestMapping
(
value
=
"form"
)
@RequestMapping
(
value
=
"form
/{mode}
"
)
public
String
form
(
Goods
goods
,
Model
model
)
{
public
String
form
(
@PathVariable
String
mode
,
Goods
goods
,
Model
model
)
{
model
.
addAttribute
(
"goods"
,
goods
);
model
.
addAttribute
(
"goods"
,
goods
);
return
"modules/test/manytoone/goodsForm"
;
model
.
addAttribute
(
"mode"
,
mode
);
return
"modules/warehouse/goods/goodsForm"
;
}
}
/**
/**
* 保存
商品
* 保存
货品模块
*/
*/
@ResponseBody
@ResponseBody
@RequiresPermissions
(
value
={
"
test:manytoone:goods:add"
,
"test:manytoone
:goods:edit"
},
logical
=
Logical
.
OR
)
@RequiresPermissions
(
value
={
"
warehouse:goods:goods:add"
,
"warehouse:goods
:goods:edit"
},
logical
=
Logical
.
OR
)
@RequestMapping
(
value
=
"save"
)
@RequestMapping
(
value
=
"save"
)
public
AjaxJson
save
(
Goods
goods
,
Model
model
)
throws
Exception
{
public
AjaxJson
save
(
Goods
goods
,
Model
model
)
throws
Exception
{
AjaxJson
j
=
new
AjaxJson
();
AjaxJson
j
=
new
AjaxJson
();
...
@@ -111,28 +111,28 @@ public class GoodsController extends BaseController {
...
@@ -111,28 +111,28 @@ public class GoodsController extends BaseController {
//新增或编辑表单保存
//新增或编辑表单保存
goodsService
.
save
(
goods
);
//保存
goodsService
.
save
(
goods
);
//保存
j
.
setSuccess
(
true
);
j
.
setSuccess
(
true
);
j
.
setMsg
(
"保存
商品
成功"
);
j
.
setMsg
(
"保存
货品模块
成功"
);
return
j
;
return
j
;
}
}
/**
/**
* 删除
商品
* 删除
货品模块
*/
*/
@ResponseBody
@ResponseBody
@RequiresPermissions
(
"
test:manytoone
:goods:del"
)
@RequiresPermissions
(
"
warehouse:goods
:goods:del"
)
@RequestMapping
(
value
=
"delete"
)
@RequestMapping
(
value
=
"delete"
)
public
AjaxJson
delete
(
Goods
goods
)
{
public
AjaxJson
delete
(
Goods
goods
)
{
AjaxJson
j
=
new
AjaxJson
();
AjaxJson
j
=
new
AjaxJson
();
goodsService
.
delete
(
goods
);
goodsService
.
delete
(
goods
);
j
.
setMsg
(
"删除
商品
成功"
);
j
.
setMsg
(
"删除
货品模块
成功"
);
return
j
;
return
j
;
}
}
/**
/**
* 批量删除
商品
* 批量删除
货品模块
*/
*/
@ResponseBody
@ResponseBody
@RequiresPermissions
(
"
test:manytoone
:goods:del"
)
@RequiresPermissions
(
"
warehouse:goods
:goods:del"
)
@RequestMapping
(
value
=
"deleteAll"
)
@RequestMapping
(
value
=
"deleteAll"
)
public
AjaxJson
deleteAll
(
String
ids
)
{
public
AjaxJson
deleteAll
(
String
ids
)
{
AjaxJson
j
=
new
AjaxJson
();
AjaxJson
j
=
new
AjaxJson
();
...
@@ -140,7 +140,7 @@ public class GoodsController extends BaseController {
...
@@ -140,7 +140,7 @@ public class GoodsController extends BaseController {
for
(
String
id
:
idArray
){
for
(
String
id
:
idArray
){
goodsService
.
delete
(
goodsService
.
get
(
id
));
goodsService
.
delete
(
goodsService
.
get
(
id
));
}
}
j
.
setMsg
(
"删除
商品
成功"
);
j
.
setMsg
(
"删除
货品模块
成功"
);
return
j
;
return
j
;
}
}
...
@@ -148,30 +148,37 @@ public class GoodsController extends BaseController {
...
@@ -148,30 +148,37 @@ public class GoodsController extends BaseController {
* 导出excel文件
* 导出excel文件
*/
*/
@ResponseBody
@ResponseBody
@RequiresPermissions
(
"
test:manytoone
:goods:export"
)
@RequiresPermissions
(
"
warehouse:goods
:goods:export"
)
@RequestMapping
(
value
=
"export"
)
@RequestMapping
(
value
=
"export"
)
public
AjaxJson
exportFile
(
Goods
goods
,
HttpServletRequest
request
,
HttpServletResponse
response
)
{
public
AjaxJson
exportFile
(
Goods
goods
,
HttpServletRequest
request
,
HttpServletResponse
response
)
{
AjaxJson
j
=
new
AjaxJson
();
AjaxJson
j
=
new
AjaxJson
();
try
{
try
{
String
fileName
=
"
商品
"
+
DateUtils
.
getDate
(
"yyyyMMddHHmmss"
)+
".xlsx"
;
String
fileName
=
"
货品模块
"
+
DateUtils
.
getDate
(
"yyyyMMddHHmmss"
)+
".xlsx"
;
Page
<
Goods
>
page
=
goodsService
.
findPage
(
new
Page
<
Goods
>(
request
,
response
,
-
1
),
goods
);
Page
<
Goods
>
page
=
goodsService
.
findPage
(
new
Page
<
Goods
>(
request
,
response
,
-
1
),
goods
);
new
ExportExcel
(
"
商品
"
,
Goods
.
class
).
setDataList
(
page
.
getList
()).
write
(
response
,
fileName
).
dispose
();
new
ExportExcel
(
"
货品模块
"
,
Goods
.
class
).
setDataList
(
page
.
getList
()).
write
(
response
,
fileName
).
dispose
();
j
.
setSuccess
(
true
);
j
.
setSuccess
(
true
);
j
.
setMsg
(
"导出成功!"
);
j
.
setMsg
(
"导出成功!"
);
return
j
;
return
j
;
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
j
.
setSuccess
(
false
);
j
.
setSuccess
(
false
);
j
.
setMsg
(
"导出
商品
记录失败!失败信息:"
+
e
.
getMessage
());
j
.
setMsg
(
"导出
货品模块
记录失败!失败信息:"
+
e
.
getMessage
());
}
}
return
j
;
return
j
;
}
}
@ResponseBody
@RequestMapping
(
value
=
"detail"
)
public
Goods
detail
(
String
id
)
{
return
goodsService
.
get
(
id
);
}
/**
/**
* 导入Excel数据
* 导入Excel数据
*/
*/
@ResponseBody
@ResponseBody
@RequiresPermissions
(
"
test:manytoone
:goods:import"
)
@RequiresPermissions
(
"
warehouse:goods
:goods:import"
)
@RequestMapping
(
value
=
"import"
)
@RequestMapping
(
value
=
"import"
)
public
AjaxJson
importFile
(
@RequestParam
(
"file"
)
MultipartFile
file
,
HttpServletResponse
response
,
HttpServletRequest
request
)
{
public
AjaxJson
importFile
(
@RequestParam
(
"file"
)
MultipartFile
file
,
HttpServletResponse
response
,
HttpServletRequest
request
)
{
AjaxJson
j
=
new
AjaxJson
();
AjaxJson
j
=
new
AjaxJson
();
...
@@ -192,28 +199,28 @@ public class GoodsController extends BaseController {
...
@@ -192,28 +199,28 @@ public class GoodsController extends BaseController {
}
}
}
}
if
(
failureNum
>
0
){
if
(
failureNum
>
0
){
failureMsg
.
insert
(
0
,
",失败 "
+
failureNum
+
" 条
商品
记录。"
);
failureMsg
.
insert
(
0
,
",失败 "
+
failureNum
+
" 条
货品模块
记录。"
);
}
}
j
.
setMsg
(
"已成功导入 "
+
successNum
+
" 条
商品
记录"
+
failureMsg
);
j
.
setMsg
(
"已成功导入 "
+
successNum
+
" 条
货品模块
记录"
+
failureMsg
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
j
.
setSuccess
(
false
);
j
.
setSuccess
(
false
);
j
.
setMsg
(
"导入
商品
失败!失败信息:"
+
e
.
getMessage
());
j
.
setMsg
(
"导入
货品模块
失败!失败信息:"
+
e
.
getMessage
());
}
}
return
j
;
return
j
;
}
}
/**
/**
* 下载导入
商品
数据模板
* 下载导入
货品模块
数据模板
*/
*/
@ResponseBody
@ResponseBody
@RequiresPermissions
(
"
test:manytoone
:goods:import"
)
@RequiresPermissions
(
"
warehouse:goods
:goods:import"
)
@RequestMapping
(
value
=
"import/template"
)
@RequestMapping
(
value
=
"import/template"
)
public
AjaxJson
importFileTemplate
(
HttpServletResponse
response
)
{
public
AjaxJson
importFileTemplate
(
HttpServletResponse
response
)
{
AjaxJson
j
=
new
AjaxJson
();
AjaxJson
j
=
new
AjaxJson
();
try
{
try
{
String
fileName
=
"
商品
数据导入模板.xlsx"
;
String
fileName
=
"
货品模块
数据导入模板.xlsx"
;
List
<
Goods
>
list
=
Lists
.
newArrayList
();
List
<
Goods
>
list
=
Lists
.
newArrayList
();
new
ExportExcel
(
"
商品
数据"
,
Goods
.
class
,
1
).
setDataList
(
list
).
write
(
response
,
fileName
).
dispose
();
new
ExportExcel
(
"
货品模块
数据"
,
Goods
.
class
,
1
).
setDataList
(
list
).
write
(
response
,
fileName
).
dispose
();
return
null
;
return
null
;
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
j
.
setSuccess
(
false
);
j
.
setSuccess
(
false
);
...
@@ -221,5 +228,6 @@ public class GoodsController extends BaseController {
...
@@ -221,5 +228,6 @@ public class GoodsController extends BaseController {
}
}
return
j
;
return
j
;
}
}
}
}
\ No newline at end of file
src/main/java/com/jeeplus/modules/warehouse/ledger/entity/Ledger.java
0 → 100644
View file @
55f87d07
/**
* Copyright © 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
*/
package
com
.
jeeplus
.
modules
.
warehouse
.
ledger
.
entity
;
import
com.jeeplus.modules.warehouse.materialtype.entity.MaterialType
;
import
java.util.List
;
import
com.google.common.collect.Lists
;
import
com.jeeplus.core.persistence.DataEntity
;
import
com.jeeplus.common.utils.excel.annotation.ExcelField
;
/**
* 台账信息Entity
* @author huyi
* @version 2023-02-13
*/
public
class
Ledger
extends
DataEntity
<
Ledger
>
{
private
static
final
long
serialVersionUID
=
1L
;
private
String
name
;
// 物资名称
private
MaterialType
type
;
// 类型
private
String
model
;
// 型号
private
String
shelvesIds
;
// 货架id集合
private
Integer
num
;
// 数量
private
List
<
LedgerInfo
>
ledgerInfoList
=
Lists
.
newArrayList
();
// 子表列表
public
Ledger
()
{
super
();
}
public
Ledger
(
String
id
){
super
(
id
);
}
@ExcelField
(
title
=
"物资名称"
,
align
=
2
,
sort
=
1
)
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
@ExcelField
(
title
=
"类型"
,
fieldType
=
MaterialType
.
class
,
value
=
"type.name"
,
align
=
2
,
sort
=
2
)
public
MaterialType
getType
()
{
return
type
;
}
public
void
setType
(
MaterialType
type
)
{
this
.
type
=
type
;
}
@ExcelField
(
title
=
"型号"
,
align
=
2
,
sort
=
3
)
public
String
getModel
()
{
return
model
;
}
public
void
setModel
(
String
model
)
{
this
.
model
=
model
;
}
@ExcelField
(
title
=
"货架id集合"
,
align
=
2
,
sort
=
4
)
public
String
getShelvesIds
()
{
return
shelvesIds
;
}
public
void
setShelvesIds
(
String
shelvesIds
)
{
this
.
shelvesIds
=
shelvesIds
;
}
@ExcelField
(
title
=
"数量"
,
align
=
2
,
sort
=
5
)
public
Integer
getNum
()
{
return
num
;
}
public
void
setNum
(
Integer
num
)
{
this
.
num
=
num
;
}
public
List
<
LedgerInfo
>
getLedgerInfoList
()
{
return
ledgerInfoList
;
}
public
void
setLedgerInfoList
(
List
<
LedgerInfo
>
ledgerInfoList
)
{
this
.
ledgerInfoList
=
ledgerInfoList
;
}
}
\ No newline at end of file
src/main/java/com/jeeplus/modules/warehouse/ledger/entity/LedgerInfo.java
0 → 100644
View file @
55f87d07
/**
* Copyright © 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
*/
package
com
.
jeeplus
.
modules
.
warehouse
.
ledger
.
entity
;
import
com.jeeplus.modules.warehouse.goods.entity.GoodsInfo
;
import
com.jeeplus.modules.warehouse.materialtype.entity.MaterialType
;
import
com.jeeplus.modules.warehouse.qrcode.entity.QrCode
;
import
com.jeeplus.modules.warehouse.shelves.entity.Shelves
;
import
com.jeeplus.core.persistence.DataEntity
;
import
com.jeeplus.common.utils.excel.annotation.ExcelField
;
/**
* 台账明细Entity
* @author huyi
* @version 2023-02-13
*/
public
class
LedgerInfo
extends
DataEntity
<
LedgerInfo
>
{
private
static
final
long
serialVersionUID
=
1L
;
private
String
name
;
// 物资名称
private
MaterialType
type
;
// 类型
private
String
model
;
// 型号
private
String
batchNum
;
// 批次号
private
Ledger
ledger
;
// 主表外键 父类
private
GoodsInfo
goodsInfo
;
// 货品明细
private
QrCode
qr
;
// 二维码id
private
Shelves
shelves
;
// 货架id
private
String
code
;
// 物资编码
public
LedgerInfo
()
{
super
();
}
public
LedgerInfo
(
String
id
){
super
(
id
);
}
public
LedgerInfo
(
Ledger
ledger
){
this
.
ledger
=
ledger
;
}
@ExcelField
(
title
=
"物资名称"
,
align
=
2
,
sort
=
1
)
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
@ExcelField
(
title
=
"类型"
,
fieldType
=
MaterialType
.
class
,
value
=
"type.code"
,
align
=
2
,
sort
=
2
)
public
MaterialType
getType
()
{
return
type
;
}
public
void
setType
(
MaterialType
type
)
{
this
.
type
=
type
;
}
@ExcelField
(
title
=
"型号"
,
align
=
2
,
sort
=
3
)
public
String
getModel
()
{
return
model
;
}
public
void
setModel
(
String
model
)
{
this
.
model
=
model
;
}
@ExcelField
(
title
=
"批次号"
,
align
=
2
,
sort
=
4
)
public
String
getBatchNum
()
{
return
batchNum
;
}
public
void
setBatchNum
(
String
batchNum
)
{
this
.
batchNum
=
batchNum
;
}
public
Ledger
getLedger
()
{
return
ledger
;
}
public
void
setLedger
(
Ledger
ledger
)
{
this
.
ledger
=
ledger
;
}
@ExcelField
(
title
=
"货品明细id"
,
align
=
2
,
sort
=
6
)
public
GoodsInfo
getGoodsInfo
()
{
return
goodsInfo
;
}
public
void
setGoodsInfo
(
GoodsInfo
goodsInfo
)
{
this
.
goodsInfo
=
goodsInfo
;
}
@ExcelField
(
title
=
"二维码id"
,
align
=
2
,
sort
=
7
)
public
QrCode
getQr
()
{
return
qr
;
}
public
void
setQr
(
QrCode
qr
)
{
this
.
qr
=
qr
;
}
@ExcelField
(
title
=
"货架id"
,
fieldType
=
Shelves
.
class
,
value
=
"shelves.name"
,
align
=
2
,
sort
=
8
)
public
Shelves
getShelves
()
{
return
shelves
;
}
public
void
setShelves
(
Shelves
shelves
)
{
this
.
shelves
=
shelves
;
}
@ExcelField
(
title
=
"物资编码"
,
align
=
2
,
sort
=
9
)
public
String
getCode
()
{
return
code
;
}
public
void
setCode
(
String
code
)
{
this
.
code
=
code
;
}
}
\ No newline at end of file
src/main/java/com/jeeplus/modules/
test/manytomany/mapper/Course
Mapper.java
→
src/main/java/com/jeeplus/modules/
warehouse/ledger/mapper/LedgerInfo
Mapper.java
View file @
55f87d07
/**
/**
* Copyright © 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
* Copyright © 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
*/
*/
package
com
.
jeeplus
.
modules
.
test
.
manytomany
.
mapper
;
package
com
.
jeeplus
.
modules
.
warehouse
.
ledger
.
mapper
;
import
com.jeeplus.core.persistence.BaseMapper
;
import
com.jeeplus.core.persistence.BaseMapper
;
import
com.jeeplus.core.persistence.annotation.MyBatisMapper
;
import
com.jeeplus.core.persistence.annotation.MyBatisMapper
;
import
com.jeeplus.modules.
test.manytomany.entity.Course
;
import
com.jeeplus.modules.
warehouse.ledger.entity.LedgerInfo
;
/**
/**
*
课程
MAPPER接口
*
台账明细
MAPPER接口
* @author
lgf
* @author
huyi
* @version 20
18-06-12
* @version 20
23-02-13
*/
*/
@MyBatisMapper
@MyBatisMapper
public
interface
CourseMapper
extends
BaseMapper
<
Course
>
{
public
interface
LedgerInfoMapper
extends
BaseMapper
<
LedgerInfo
>
{
}
}
\ No newline at end of file
src/main/java/com/jeeplus/modules/warehouse/ledger/mapper/LedgerMapper.java
0 → 100644
View file @
55f87d07
/**
* Copyright © 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
*/
package
com
.
jeeplus
.
modules
.
warehouse
.
ledger
.
mapper
;
import
com.jeeplus.core.persistence.BaseMapper
;
import
com.jeeplus.core.persistence.annotation.MyBatisMapper
;
import
com.jeeplus.modules.warehouse.ledger.entity.Ledger
;
/**
* 台账信息MAPPER接口
* @author huyi
* @version 2023-02-13
*/
@MyBatisMapper
public
interface
LedgerMapper
extends
BaseMapper
<
Ledger
>
{
}
\ No newline at end of file
src/main/java/com/jeeplus/modules/warehouse/ledger/mapper/xml/LedgerInfoMapper.xml
0 → 100644
View file @
55f87d07
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.jeeplus.modules.warehouse.ledger.mapper.LedgerInfoMapper"
>
<sql
id=
"ledgerInfoColumns"
>
a.id AS "id",
a.name AS "name",
a.type_id AS "type.id",
a.model AS "model",
a.batch_num AS "batchNum",
a.ledger_id AS "ledger.id",
a.goods_info_id AS "goodsInfo.id",
a.qr_id AS "qr.id",
a.shelves_id AS "shelves.id",
a.code AS "code",
a.create_by AS "createBy.id",
a.create_date AS "createDate",
a.update_by AS "updateBy.id",
a.update_date AS "updateDate",
a.remarks AS "remarks",
a.del_flag AS "delFlag",
type.code AS "type.code",
type.name AS "type.name",
shelves.name AS "shelves.name"
</sql>
<sql
id=
"ledgerInfoJoins"
>
LEFT JOIN t_wh_material_type type ON type.id = a.type_id
LEFT JOIN t_wh_ledger b ON b.id = a.ledger_id
LEFT JOIN t_wh_shelves shelves ON shelves.id = a.shelves_id
</sql>
<select
id=
"get"
resultType=
"LedgerInfo"
>
SELECT
<include
refid=
"ledgerInfoColumns"
/>
FROM t_wh_ledger_info a
<include
refid=
"ledgerInfoJoins"
/>
WHERE a.id = #{id}
</select>
<select
id=
"findList"
resultType=
"LedgerInfo"
>
SELECT
<include
refid=
"ledgerInfoColumns"
/>
FROM t_wh_ledger_info a
<include
refid=
"ledgerInfoJoins"
/>
<where>
a.del_flag = #{DEL_FLAG_NORMAL}
${dataScope}
<if
test=
"name != null and name != ''"
>
AND a.name LIKE
<if
test=
"dbName == 'oracle'"
>
'%'||#{name}||'%'
</if>
<if
test=
"dbName == 'mssql'"
>
'%'+#{name}+'%'
</if>
<if
test=
"dbName == 'mysql'"
>
concat('%',#{name},'%')
</if>
</if>
<if
test=
"type != null and type.id != null and type.id != ''"
>
AND a.type_id = #{type.id}
</if>
<if
test=
"model != null and model != ''"
>
AND a.model LIKE
<if
test=
"dbName == 'oracle'"
>
'%'||#{model}||'%'
</if>
<if
test=
"dbName == 'mssql'"
>
'%'+#{model}+'%'
</if>
<if
test=
"dbName == 'mysql'"
>
concat('%',#{model},'%')
</if>
</if>
<if
test=
"batchNum != null and batchNum != ''"
>
AND a.batch_num LIKE
<if
test=
"dbName == 'oracle'"
>
'%'||#{batchNum}||'%'
</if>
<if
test=
"dbName == 'mssql'"
>
'%'+#{batchNum}+'%'
</if>
<if
test=
"dbName == 'mysql'"
>
concat('%',#{batchNum},'%')
</if>
</if>
<if
test=
"ledger != null and ledger.id != null and ledger.id != ''"
>
AND a.ledger_id = #{ledger.id}
</if>
<if
test=
"shelves != null and shelves.id != null and shelves.id != ''"
>
AND a.shelves_id = #{shelves.id}
</if>
<if
test=
"code != null and code != ''"
>
AND a.code LIKE
<if
test=
"dbName == 'oracle'"
>
'%'||#{code}||'%'
</if>
<if
test=
"dbName == 'mssql'"
>
'%'+#{code}+'%'
</if>
<if
test=
"dbName == 'mysql'"
>
concat('%',#{code},'%')
</if>
</if>
</where>
<choose>
<when
test=
"page !=null and page.orderBy != null and page.orderBy != ''"
>
ORDER BY ${page.orderBy}
</when>
<otherwise>
ORDER BY a.create_date ASC
</otherwise>
</choose>
</select>
<select
id=
"findAllList"
resultType=
"LedgerInfo"
>
SELECT
<include
refid=
"ledgerInfoColumns"
/>
FROM t_wh_ledger_info a
<include
refid=
"ledgerInfoJoins"
/>
<where>
a.del_flag = #{DEL_FLAG_NORMAL}
${dataScope}
</where>
<choose>
<when
test=
"page !=null and page.orderBy != null and page.orderBy != ''"
>
ORDER BY ${page.orderBy}
</when>
<otherwise>
ORDER BY a.create_date ASC
</otherwise>
</choose>
</select>
<insert
id=
"insert"
>
INSERT INTO t_wh_ledger_info(
id,
name,
type_id,
model,
batch_num,
ledger_id,
goods_info_id,
qr_id,
shelves_id,
code,
create_by,
create_date,
update_by,
update_date,
remarks,
del_flag
) VALUES (
#{id},
#{name},
#{type.id},
#{model},
#{batchNum},
#{ledger.id},
#{goodsInfo.id},
#{qr.id},
#{shelves.id},
#{code},
#{createBy.id},
#{createDate},
#{updateBy.id},
#{updateDate},
#{remarks},
#{delFlag}
)
</insert>
<update
id=
"update"
>
UPDATE t_wh_ledger_info SET
name = #{name},
type_id = #{type.id},
model = #{model},
batch_num = #{batchNum},
ledger_id = #{ledger.id},
goods_info_id = #{goodsInfo.id},
qr_id = #{qr.id},
shelves_id = #{shelves.id},
code = #{code},
update_by = #{updateBy.id},
update_date = #{updateDate},
remarks = #{remarks}
WHERE id = #{id}
</update>
<!--物理删除-->
<update
id=
"delete"
>
DELETE FROM t_wh_ledger_info
<choose>
<when
test=
"id !=null and id != ''"
>
WHERE id = #{id}
</when>
<otherwise>
WHERE ledger_id = #{ledger.id}
</otherwise>
</choose>
</update>
<!--逻辑删除-->
<update
id=
"deleteByLogic"
>
UPDATE t_wh_ledger_info SET
del_flag = #{DEL_FLAG_DELETE}
<choose>
<when
test=
"id !=null and id != ''"
>
WHERE id = #{id}
</when>
<otherwise>
WHERE ledger_id = #{ledger.id}
</otherwise>
</choose>
</update>
<!-- 根据实体名称和字段名称和字段值获取唯一记录 -->
<select
id=
"findUniqueByProperty"
resultType=
"LedgerInfo"
statementType=
"STATEMENT"
>
select * FROM t_wh_ledger_info where ${propertyName} = '${value}'
</select>
</mapper>
\ No newline at end of file
src/main/java/com/jeeplus/modules/
test/onetomany/form/mapper/xml/TestDataMain2
Mapper.xml
→
src/main/java/com/jeeplus/modules/
warehouse/ledger/mapper/xml/Ledger
Mapper.xml
View file @
55f87d07
<?xml version="1.0" encoding="UTF-8" ?>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.jeeplus.modules.
test.onetomany.form.mapper.TestDataMain2
Mapper"
>
<mapper
namespace=
"com.jeeplus.modules.
warehouse.ledger.mapper.Ledger
Mapper"
>
<sql
id=
"
testDataMain2
Columns"
>
<sql
id=
"
ledger
Columns"
>
a.id AS "id",
a.id AS "id",
a.user_id AS "tuser.id",
a.office_id AS "office.id",
a.area_id AS "area.id",
a.name AS "name",
a.name AS "name",
a.sex AS "sex",
a.type_id AS "type.id",
a.in_date AS "inDate",
a.model AS "model",
a.shelvesids AS "shelvesIds",
a.num AS "num",
a.create_by AS "createBy.id",
a.create_by AS "createBy.id",
a.create_date AS "createDate",
a.create_date AS "createDate",
a.update_by AS "updateBy.id",
a.update_by AS "updateBy.id",
...
@@ -17,51 +16,56 @@
...
@@ -17,51 +16,56 @@
a.remarks AS "remarks",
a.remarks AS "remarks",
a.del_flag AS "delFlag",
a.del_flag AS "delFlag",
tuser.name AS "tuser.name",
office.name AS "office.name",
type.name AS "type.name",
type.code AS "type.code"
area.name AS "area.name"
</sql>
</sql>
<sql
id=
"
testDataMain2
Joins"
>
<sql
id=
"
ledger
Joins"
>
LEFT JOIN sys_user tuser ON tuser.id = a.user_id
LEFT JOIN t_wh_material_type type ON type.id = a.type_id
LEFT JOIN sys_office office ON office.id = a.office_id
LEFT JOIN sys_area area ON area.id = a.area_id
</sql>
</sql>
<select
id=
"get"
resultType=
"
TestDataMain2
"
>
<select
id=
"get"
resultType=
"
Ledger
"
>
SELECT
SELECT
<include
refid=
"
testDataMain2
Columns"
/>
<include
refid=
"
ledger
Columns"
/>
FROM t
est_data_main
a
FROM t
_wh_ledger
a
<include
refid=
"
testDataMain2
Joins"
/>
<include
refid=
"
ledger
Joins"
/>
WHERE a.id = #{id}
WHERE a.id = #{id}
</select>
</select>
<select
id=
"findList"
resultType=
"
TestDataMain2
"
>
<select
id=
"findList"
resultType=
"
Ledger
"
>
SELECT
SELECT
<include
refid=
"
testDataMain2
Columns"
/>
<include
refid=
"
ledger
Columns"
/>
FROM t
est_data_main
a
FROM t
_wh_ledger
a
<include
refid=
"
testDataMain2
Joins"
/>
<include
refid=
"
ledger
Joins"
/>
<where>
<where>
a.del_flag = #{DEL_FLAG_NORMAL}
a.del_flag = #{DEL_FLAG_NORMAL}
${dataScope}
${dataScope}
<if
test=
"tuser != null and tuser.id != null and tuser.id != ''"
>
AND a.user_id = #{tuser.id}
</if>
<if
test=
"name != null and name != ''"
>
<if
test=
"name != null and name != ''"
>
AND a.name LIKE
AND a.name LIKE
<if
test=
"dbName == 'oracle'"
>
'%'||#{name}||'%'
</if>
<if
test=
"dbName == 'oracle'"
>
'%'||#{name}||'%'
</if>
<if
test=
"dbName == 'mssql'"
>
'%'+#{name}+'%'
</if>
<if
test=
"dbName == 'mssql'"
>
'%'+#{name}+'%'
</if>
<if
test=
"dbName == 'mysql'"
>
concat('%',#{name},'%')
</if>
<if
test=
"dbName == 'mysql'"
>
concat('%',#{name},'%')
</if>
</if>
</if>
<if
test=
"sex != null and sex != ''"
>
<if
test=
"type != null and type.id != null and type.id != ''"
>
AND a.sex = #{sex}
AND a.type_id = #{type.id}
</if>
<if
test=
"model != null and model != ''"
>
AND a.model LIKE
<if
test=
"dbName == 'oracle'"
>
'%'||#{model}||'%'
</if>
<if
test=
"dbName == 'mssql'"
>
'%'+#{model}+'%'
</if>
<if
test=
"dbName == 'mysql'"
>
concat('%',#{model},'%')
</if>
</if>
<if
test=
"shelvesIds != null and shelvesIds != ''"
>
AND a.shelvesids LIKE
<if
test=
"dbName == 'oracle'"
>
'%'||#{shelvesIds}||'%'
</if>
<if
test=
"dbName == 'mssql'"
>
'%'+#{shelvesIds}+'%'
</if>
<if
test=
"dbName == 'mysql'"
>
concat('%',#{shelvesIds},'%')
</if>
</if>
</if>
<if
test=
"
beginInDate != null and endInDate != null
"
>
<if
test=
"
num != null and num != ''
"
>
AND a.
in_date BETWEEN #{beginInDate} AND #{endInDate
}
AND a.
num >= #{num
}
</if>
</if>
</where>
</where>
<choose>
<choose>
...
@@ -74,11 +78,11 @@
...
@@ -74,11 +78,11 @@
</choose>
</choose>
</select>
</select>
<select
id=
"findAllList"
resultType=
"
TestDataMain2
"
>
<select
id=
"findAllList"
resultType=
"
Ledger
"
>
SELECT
SELECT
<include
refid=
"
testDataMain2
Columns"
/>
<include
refid=
"
ledger
Columns"
/>
FROM t
est_data_main
a
FROM t
_wh_ledger
a
<include
refid=
"
testDataMain2
Joins"
/>
<include
refid=
"
ledger
Joins"
/>
<where>
<where>
a.del_flag = #{DEL_FLAG_NORMAL}
a.del_flag = #{DEL_FLAG_NORMAL}
${dataScope}
${dataScope}
...
@@ -94,14 +98,13 @@
...
@@ -94,14 +98,13 @@
</select>
</select>
<insert
id=
"insert"
>
<insert
id=
"insert"
>
INSERT INTO t
est_data_main
(
INSERT INTO t
_wh_ledger
(
id,
id,
user_id,
office_id,
area_id,
name,
name,
sex,
type_id,
in_date,
model,
shelvesids,
num,
create_by,
create_by,
create_date,
create_date,
update_by,
update_by,
...
@@ -110,12 +113,11 @@
...
@@ -110,12 +113,11 @@
del_flag
del_flag
) VALUES (
) VALUES (
#{id},
#{id},
#{tuser.id},
#{office.id},
#{area.id},
#{name},
#{name},
#{sex},
#{type.id},
#{inDate},
#{model},
#{shelvesIds},
#{num},
#{createBy.id},
#{createBy.id},
#{createDate},
#{createDate},
#{updateBy.id},
#{updateBy.id},
...
@@ -126,14 +128,12 @@
...
@@ -126,14 +128,12 @@
</insert>
</insert>
<update
id=
"update"
>
<update
id=
"update"
>
UPDATE test_data_main SET
UPDATE t_wh_ledger SET
user_id = #{tuser.id},
office_id = #{office.id},
area_id = #{area.id},
name = #{name},
name = #{name},
sex = #{sex},
type_id = #{type.id},
in_date = #{inDate},
model = #{model},
create_date = #{createDate},
shelvesids = #{shelvesIds},
num = #{num},
update_by = #{updateBy.id},
update_by = #{updateBy.id},
update_date = #{updateDate},
update_date = #{updateDate},
remarks = #{remarks}
remarks = #{remarks}
...
@@ -143,21 +143,21 @@
...
@@ -143,21 +143,21 @@
<!--物理删除-->
<!--物理删除-->
<update
id=
"delete"
>
<update
id=
"delete"
>
DELETE FROM t
est_data_main
DELETE FROM t
_wh_ledger
WHERE id = #{id}
WHERE id = #{id}
</update>
</update>
<!--逻辑删除-->
<!--逻辑删除-->
<update
id=
"deleteByLogic"
>
<update
id=
"deleteByLogic"
>
UPDATE t
est_data_main
SET
UPDATE t
_wh_ledger
SET
del_flag = #{DEL_FLAG_DELETE}
del_flag = #{DEL_FLAG_DELETE}
WHERE id = #{id}
WHERE id = #{id}
</update>
</update>
<!-- 根据实体名称和字段名称和字段值获取唯一记录 -->
<!-- 根据实体名称和字段名称和字段值获取唯一记录 -->
<select
id=
"findUniqueByProperty"
resultType=
"
TestDataMain2
"
statementType=
"STATEMENT"
>
<select
id=
"findUniqueByProperty"
resultType=
"
Ledger
"
statementType=
"STATEMENT"
>
select * FROM t
est_data_main
where ${propertyName} = '${value}'
select * FROM t
_wh_ledger
where ${propertyName} = '${value}'
</select>
</select>
</mapper>
</mapper>
\ No newline at end of file
src/main/java/com/jeeplus/modules/warehouse/ledger/service/LedgerService.java
0 → 100644
View file @
55f87d07
/**
* Copyright © 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
*/
package
com
.
jeeplus
.
modules
.
warehouse
.
ledger
.
service
;
import
java.util.List
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
com.jeeplus.core.persistence.Page
;
import
com.jeeplus.core.service.CrudService
;
import
com.jeeplus.common.utils.StringUtils
;
import
com.jeeplus.modules.warehouse.ledger.entity.Ledger
;
import
com.jeeplus.modules.warehouse.ledger.mapper.LedgerMapper
;
import
com.jeeplus.modules.warehouse.ledger.entity.LedgerInfo
;
import
com.jeeplus.modules.warehouse.ledger.mapper.LedgerInfoMapper
;
/**
* 台账信息Service
* @author huyi
* @version 2023-02-13
*/
@Service
@Transactional
(
readOnly
=
true
)
public
class
LedgerService
extends
CrudService
<
LedgerMapper
,
Ledger
>
{
@Autowired
private
LedgerInfoMapper
ledgerInfoMapper
;
public
Ledger
get
(
String
id
)
{
Ledger
ledger
=
super
.
get
(
id
);
ledger
.
setLedgerInfoList
(
ledgerInfoMapper
.
findList
(
new
LedgerInfo
(
ledger
)));
return
ledger
;
}
public
List
<
Ledger
>
findList
(
Ledger
ledger
)
{
return
super
.
findList
(
ledger
);
}
public
Page
<
Ledger
>
findPage
(
Page
<
Ledger
>
page
,
Ledger
ledger
)
{
return
super
.
findPage
(
page
,
ledger
);
}
@Transactional
(
readOnly
=
false
)
public
void
save
(
Ledger
ledger
)
{
super
.
save
(
ledger
);
for
(
LedgerInfo
ledgerInfo
:
ledger
.
getLedgerInfoList
()){
if
(
ledgerInfo
.
getId
()
==
null
){
continue
;
}
if
(
LedgerInfo
.
DEL_FLAG_NORMAL
.
equals
(
ledgerInfo
.
getDelFlag
())){
if
(
StringUtils
.
isBlank
(
ledgerInfo
.
getId
())){
ledgerInfo
.
setLedger
(
ledger
);
ledgerInfo
.
preInsert
();
ledgerInfoMapper
.
insert
(
ledgerInfo
);
}
else
{
ledgerInfo
.
preUpdate
();
ledgerInfoMapper
.
update
(
ledgerInfo
);
}
}
else
{
ledgerInfoMapper
.
delete
(
ledgerInfo
);
}
}
}
@Transactional
(
readOnly
=
false
)
public
void
delete
(
Ledger
ledger
)
{
super
.
delete
(
ledger
);
ledgerInfoMapper
.
delete
(
new
LedgerInfo
(
ledger
));
}
}
\ No newline at end of file
src/main/java/com/jeeplus/modules/
test/pic/web/TestPic
Controller.java
→
src/main/java/com/jeeplus/modules/
warehouse/ledger/web/Ledger
Controller.java
View file @
55f87d07
/**
/**
* Copyright © 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
* Copyright © 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
*/
*/
package
com
.
jeeplus
.
modules
.
test
.
pic
.
web
;
package
com
.
jeeplus
.
modules
.
warehouse
.
ledger
.
web
;
import
java.io.UnsupportedEncodingException
;
import
java.net.URLDecoder
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
...
@@ -20,6 +22,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
...
@@ -20,6 +22,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.multipart.MultipartFile
;
import
org.springframework.web.multipart.MultipartFile
;
import
com.google.common.collect.Lists
;
import
com.google.common.collect.Lists
;
...
@@ -31,114 +34,115 @@ import com.jeeplus.core.web.BaseController;
...
@@ -31,114 +34,115 @@ import com.jeeplus.core.web.BaseController;
import
com.jeeplus.common.utils.StringUtils
;
import
com.jeeplus.common.utils.StringUtils
;
import
com.jeeplus.common.utils.excel.ExportExcel
;
import
com.jeeplus.common.utils.excel.ExportExcel
;
import
com.jeeplus.common.utils.excel.ImportExcel
;
import
com.jeeplus.common.utils.excel.ImportExcel
;
import
com.jeeplus.modules.
test.pic.entity.TestPic
;
import
com.jeeplus.modules.
warehouse.ledger.entity.Ledger
;
import
com.jeeplus.modules.
test.pic.service.TestPic
Service
;
import
com.jeeplus.modules.
warehouse.ledger.service.Ledger
Service
;
/**
/**
*
图片管理
Controller
*
台账信息
Controller
* @author
lgf
* @author
huyi
* @version 20
18-06-12
* @version 20
23-02-13
*/
*/
@Controller
@Controller
@RequestMapping
(
value
=
"${adminPath}/
test/pic/testPic
"
)
@RequestMapping
(
value
=
"${adminPath}/
warehouse/ledger/ledger
"
)
public
class
TestPic
Controller
extends
BaseController
{
public
class
Ledger
Controller
extends
BaseController
{
@Autowired
@Autowired
private
TestPicService
testPic
Service
;
private
LedgerService
ledger
Service
;
@ModelAttribute
@ModelAttribute
public
TestPic
get
(
@RequestParam
(
required
=
false
)
String
id
)
{
public
Ledger
get
(
@RequestParam
(
required
=
false
)
String
id
)
{
TestPic
entity
=
null
;
Ledger
entity
=
null
;
if
(
StringUtils
.
isNotBlank
(
id
)){
if
(
StringUtils
.
isNotBlank
(
id
)){
entity
=
testPic
Service
.
get
(
id
);
entity
=
ledger
Service
.
get
(
id
);
}
}
if
(
entity
==
null
){
if
(
entity
==
null
){
entity
=
new
TestPic
();
entity
=
new
Ledger
();
}
}
return
entity
;
return
entity
;
}
}
/**
/**
*
图片管理
列表页面
*
台账信息
列表页面
*/
*/
@RequiresPermissions
(
"
test:pic:testPic
:list"
)
@RequiresPermissions
(
"
warehouse:ledger:ledger
:list"
)
@RequestMapping
(
value
=
{
"list"
,
""
})
@RequestMapping
(
value
=
{
"list"
,
""
})
public
String
list
(
TestPic
testPic
,
Model
model
)
{
public
String
list
(
Ledger
ledger
,
Model
model
)
{
model
.
addAttribute
(
"
testPic"
,
testPic
);
model
.
addAttribute
(
"
ledger"
,
ledger
);
return
"modules/
test/pic/testPic
List"
;
return
"modules/
warehouse/ledger/ledger
List"
;
}
}
/**
/**
*
图片管理
列表数据
*
台账信息
列表数据
*/
*/
@ResponseBody
@ResponseBody
@RequiresPermissions
(
"
test:pic:testPic
:list"
)
@RequiresPermissions
(
"
warehouse:ledger:ledger
:list"
)
@RequestMapping
(
value
=
"data"
)
@RequestMapping
(
value
=
"data"
)
public
Map
<
String
,
Object
>
data
(
TestPic
testPic
,
HttpServletRequest
request
,
HttpServletResponse
response
,
Model
model
)
{
public
Map
<
String
,
Object
>
data
(
Ledger
ledger
,
HttpServletRequest
request
,
HttpServletResponse
response
,
Model
model
)
{
Page
<
TestPic
>
page
=
testPicService
.
findPage
(
new
Page
<
TestPic
>(
request
,
response
),
testPic
);
Page
<
Ledger
>
page
=
ledgerService
.
findPage
(
new
Page
<
Ledger
>(
request
,
response
),
ledger
);
return
getBootstrapData
(
page
);
return
getBootstrapData
(
page
);
}
}
/**
/**
* 查看,增加,编辑
图片管理
表单页面
* 查看,增加,编辑
台账信息
表单页面
*/
*/
@RequiresPermissions
(
value
={
"test:pic:testPic:view"
,
"test:pic:testPic:add"
,
"test:pic:testPic:edit"
},
logical
=
Logical
.
OR
)
@RequiresPermissions
(
value
={
"warehouse:ledger:ledger:view"
,
"warehouse:ledger:ledger:add"
,
"warehouse:ledger:ledger:edit"
},
logical
=
Logical
.
OR
)
@RequestMapping
(
value
=
"form"
)
@RequestMapping
(
value
=
"form/{mode}"
)
public
String
form
(
TestPic
testPic
,
Model
model
)
{
public
String
form
(
@PathVariable
String
mode
,
Ledger
ledger
,
Model
model
)
{
model
.
addAttribute
(
"testPic"
,
testPic
);
model
.
addAttribute
(
"ledger"
,
ledger
);
return
"modules/test/pic/testPicForm"
;
model
.
addAttribute
(
"mode"
,
mode
);
return
"modules/warehouse/ledger/ledgerForm"
;
}
}
/**
/**
* 保存
图片管理
* 保存
台账信息
*/
*/
@ResponseBody
@ResponseBody
@RequiresPermissions
(
value
={
"
test:pic:testPic:add"
,
"test:pic:testPic
:edit"
},
logical
=
Logical
.
OR
)
@RequiresPermissions
(
value
={
"
warehouse:ledger:ledger:add"
,
"warehouse:ledger:ledger
:edit"
},
logical
=
Logical
.
OR
)
@RequestMapping
(
value
=
"save"
)
@RequestMapping
(
value
=
"save"
)
public
AjaxJson
save
(
TestPic
testPic
,
Model
model
)
throws
Exception
{
public
AjaxJson
save
(
Ledger
ledger
,
Model
model
)
throws
Exception
{
AjaxJson
j
=
new
AjaxJson
();
AjaxJson
j
=
new
AjaxJson
();
/**
/**
* 后台hibernate-validation插件校验
* 后台hibernate-validation插件校验
*/
*/
String
errMsg
=
beanValidator
(
testPic
);
String
errMsg
=
beanValidator
(
ledger
);
if
(
StringUtils
.
isNotBlank
(
errMsg
)){
if
(
StringUtils
.
isNotBlank
(
errMsg
)){
j
.
setSuccess
(
false
);
j
.
setSuccess
(
false
);
j
.
setMsg
(
errMsg
);
j
.
setMsg
(
errMsg
);
return
j
;
return
j
;
}
}
//新增或编辑表单保存
//新增或编辑表单保存
testPicService
.
save
(
testPic
);
//保存
ledgerService
.
save
(
ledger
);
//保存
j
.
setSuccess
(
true
);
j
.
setSuccess
(
true
);
j
.
setMsg
(
"保存
图片管理
成功"
);
j
.
setMsg
(
"保存
台账信息
成功"
);
return
j
;
return
j
;
}
}
/**
/**
* 删除
图片管理
* 删除
台账信息
*/
*/
@ResponseBody
@ResponseBody
@RequiresPermissions
(
"
test:pic:testPic
:del"
)
@RequiresPermissions
(
"
warehouse:ledger:ledger
:del"
)
@RequestMapping
(
value
=
"delete"
)
@RequestMapping
(
value
=
"delete"
)
public
AjaxJson
delete
(
TestPic
testPic
)
{
public
AjaxJson
delete
(
Ledger
ledger
)
{
AjaxJson
j
=
new
AjaxJson
();
AjaxJson
j
=
new
AjaxJson
();
testPicService
.
delete
(
testPic
);
ledgerService
.
delete
(
ledger
);
j
.
setMsg
(
"删除
图片管理
成功"
);
j
.
setMsg
(
"删除
台账信息
成功"
);
return
j
;
return
j
;
}
}
/**
/**
* 批量删除
图片管理
* 批量删除
台账信息
*/
*/
@ResponseBody
@ResponseBody
@RequiresPermissions
(
"
test:pic:testPic
:del"
)
@RequiresPermissions
(
"
warehouse:ledger:ledger
:del"
)
@RequestMapping
(
value
=
"deleteAll"
)
@RequestMapping
(
value
=
"deleteAll"
)
public
AjaxJson
deleteAll
(
String
ids
)
{
public
AjaxJson
deleteAll
(
String
ids
)
{
AjaxJson
j
=
new
AjaxJson
();
AjaxJson
j
=
new
AjaxJson
();
String
idArray
[]
=
ids
.
split
(
","
);
String
idArray
[]
=
ids
.
split
(
","
);
for
(
String
id
:
idArray
){
for
(
String
id
:
idArray
){
testPicService
.
delete
(
testPic
Service
.
get
(
id
));
ledgerService
.
delete
(
ledger
Service
.
get
(
id
));
}
}
j
.
setMsg
(
"删除
图片管理
成功"
);
j
.
setMsg
(
"删除
台账信息
成功"
);
return
j
;
return
j
;
}
}
...
@@ -146,30 +150,37 @@ public class TestPicController extends BaseController {
...
@@ -146,30 +150,37 @@ public class TestPicController extends BaseController {
* 导出excel文件
* 导出excel文件
*/
*/
@ResponseBody
@ResponseBody
@RequiresPermissions
(
"
test:pic:testPic
:export"
)
@RequiresPermissions
(
"
warehouse:ledger:ledger
:export"
)
@RequestMapping
(
value
=
"export"
)
@RequestMapping
(
value
=
"export"
)
public
AjaxJson
exportFile
(
TestPic
testPic
,
HttpServletRequest
request
,
HttpServletResponse
response
)
{
public
AjaxJson
exportFile
(
Ledger
ledger
,
HttpServletRequest
request
,
HttpServletResponse
response
)
{
AjaxJson
j
=
new
AjaxJson
();
AjaxJson
j
=
new
AjaxJson
();
try
{
try
{
String
fileName
=
"
图片管理
"
+
DateUtils
.
getDate
(
"yyyyMMddHHmmss"
)+
".xlsx"
;
String
fileName
=
"
台账信息
"
+
DateUtils
.
getDate
(
"yyyyMMddHHmmss"
)+
".xlsx"
;
Page
<
TestPic
>
page
=
testPicService
.
findPage
(
new
Page
<
TestPic
>(
request
,
response
,
-
1
),
testPic
);
Page
<
Ledger
>
page
=
ledgerService
.
findPage
(
new
Page
<
Ledger
>(
request
,
response
,
-
1
),
ledger
);
new
ExportExcel
(
"
图片管理"
,
TestPic
.
class
).
setDataList
(
page
.
getList
()).
write
(
response
,
fileName
).
dispose
();
new
ExportExcel
(
"
台账信息"
,
Ledger
.
class
).
setDataList
(
page
.
getList
()).
write
(
response
,
fileName
).
dispose
();
j
.
setSuccess
(
true
);
j
.
setSuccess
(
true
);
j
.
setMsg
(
"导出成功!"
);
j
.
setMsg
(
"导出成功!"
);
return
j
;
return
j
;
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
j
.
setSuccess
(
false
);
j
.
setSuccess
(
false
);
j
.
setMsg
(
"导出
图片管理
记录失败!失败信息:"
+
e
.
getMessage
());
j
.
setMsg
(
"导出
台账信息
记录失败!失败信息:"
+
e
.
getMessage
());
}
}
return
j
;
return
j
;
}
}
@ResponseBody
@RequestMapping
(
value
=
"detail"
)
public
Ledger
detail
(
String
id
)
{
return
ledgerService
.
get
(
id
);
}
/**
/**
* 导入Excel数据
* 导入Excel数据
*/
*/
@ResponseBody
@ResponseBody
@RequiresPermissions
(
"
test:pic:testPic
:import"
)
@RequiresPermissions
(
"
warehouse:ledger:ledger
:import"
)
@RequestMapping
(
value
=
"import"
)
@RequestMapping
(
value
=
"import"
)
public
AjaxJson
importFile
(
@RequestParam
(
"file"
)
MultipartFile
file
,
HttpServletResponse
response
,
HttpServletRequest
request
)
{
public
AjaxJson
importFile
(
@RequestParam
(
"file"
)
MultipartFile
file
,
HttpServletResponse
response
,
HttpServletRequest
request
)
{
AjaxJson
j
=
new
AjaxJson
();
AjaxJson
j
=
new
AjaxJson
();
...
@@ -178,10 +189,10 @@ public class TestPicController extends BaseController {
...
@@ -178,10 +189,10 @@ public class TestPicController extends BaseController {
int
failureNum
=
0
;
int
failureNum
=
0
;
StringBuilder
failureMsg
=
new
StringBuilder
();
StringBuilder
failureMsg
=
new
StringBuilder
();
ImportExcel
ei
=
new
ImportExcel
(
file
,
1
,
0
);
ImportExcel
ei
=
new
ImportExcel
(
file
,
1
,
0
);
List
<
TestPic
>
list
=
ei
.
getDataList
(
TestPic
.
class
);
List
<
Ledger
>
list
=
ei
.
getDataList
(
Ledger
.
class
);
for
(
TestPic
testPic
:
list
){
for
(
Ledger
ledger
:
list
){
try
{
try
{
testPicService
.
save
(
testPic
);
ledgerService
.
save
(
ledger
);
successNum
++;
successNum
++;
}
catch
(
ConstraintViolationException
ex
){
}
catch
(
ConstraintViolationException
ex
){
failureNum
++;
failureNum
++;
...
@@ -190,28 +201,28 @@ public class TestPicController extends BaseController {
...
@@ -190,28 +201,28 @@ public class TestPicController extends BaseController {
}
}
}
}
if
(
failureNum
>
0
){
if
(
failureNum
>
0
){
failureMsg
.
insert
(
0
,
",失败 "
+
failureNum
+
" 条
图片管理
记录。"
);
failureMsg
.
insert
(
0
,
",失败 "
+
failureNum
+
" 条
台账信息
记录。"
);
}
}
j
.
setMsg
(
"已成功导入 "
+
successNum
+
" 条
图片管理
记录"
+
failureMsg
);
j
.
setMsg
(
"已成功导入 "
+
successNum
+
" 条
台账信息
记录"
+
failureMsg
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
j
.
setSuccess
(
false
);
j
.
setSuccess
(
false
);
j
.
setMsg
(
"导入
图片管理
失败!失败信息:"
+
e
.
getMessage
());
j
.
setMsg
(
"导入
台账信息
失败!失败信息:"
+
e
.
getMessage
());
}
}
return
j
;
return
j
;
}
}
/**
/**
* 下载导入
图片管理
数据模板
* 下载导入
台账信息
数据模板
*/
*/
@ResponseBody
@ResponseBody
@RequiresPermissions
(
"
test:pic:testPic
:import"
)
@RequiresPermissions
(
"
warehouse:ledger:ledger
:import"
)
@RequestMapping
(
value
=
"import/template"
)
@RequestMapping
(
value
=
"import/template"
)
public
AjaxJson
importFileTemplate
(
HttpServletResponse
response
)
{
public
AjaxJson
importFileTemplate
(
HttpServletResponse
response
)
{
AjaxJson
j
=
new
AjaxJson
();
AjaxJson
j
=
new
AjaxJson
();
try
{
try
{
String
fileName
=
"
图片管理
数据导入模板.xlsx"
;
String
fileName
=
"
台账信息
数据导入模板.xlsx"
;
List
<
TestPic
>
list
=
Lists
.
newArrayList
();
List
<
Ledger
>
list
=
Lists
.
newArrayList
();
new
ExportExcel
(
"
图片管理数据"
,
TestPic
.
class
,
1
).
setDataList
(
list
).
write
(
response
,
fileName
).
dispose
();
new
ExportExcel
(
"
台账信息数据"
,
Ledger
.
class
,
1
).
setDataList
(
list
).
write
(
response
,
fileName
).
dispose
();
return
null
;
return
null
;
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
j
.
setSuccess
(
false
);
j
.
setSuccess
(
false
);
...
@@ -219,5 +230,6 @@ public class TestPicController extends BaseController {
...
@@ -219,5 +230,6 @@ public class TestPicController extends BaseController {
}
}
return
j
;
return
j
;
}
}
}
}
\ No newline at end of file
src/main/java/com/jeeplus/modules/warehouse/qrcode/entity/QrCode.java
0 → 100644
View file @
55f87d07
/**
* Copyright © 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
*/
package
com
.
jeeplus
.
modules
.
warehouse
.
qrcode
.
entity
;
import
com.jeeplus.core.persistence.DataEntity
;
import
com.jeeplus.common.utils.excel.annotation.ExcelField
;
import
com.jeeplus.modules.warehouse.goods.entity.GoodsInfo
;
/**
* 二维码Entity
* @author 胡懿
* @version 2023-02-13
*/
public
class
QrCode
extends
DataEntity
<
QrCode
>
{
private
static
final
long
serialVersionUID
=
1L
;
private
GoodsInfo
goodsInfo
;
// 货品明细外键
private
String
code
;
// 物资编码
private
String
url
;
// 二维码存储路径
public
QrCode
()
{
super
();
}
public
QrCode
(
String
id
){
super
(
id
);
}
@ExcelField
(
title
=
"货品明细外键"
,
align
=
2
,
sort
=
1
)
public
GoodsInfo
getGoodsInfo
()
{
return
goodsInfo
;
}
public
void
setGoodsInfo
(
GoodsInfo
goodsInfo
)
{
this
.
goodsInfo
=
goodsInfo
;
}
@ExcelField
(
title
=
"物资编码"
,
align
=
2
,
sort
=
2
)
public
String
getCode
()
{
return
code
;
}
public
void
setCode
(
String
code
)
{
this
.
code
=
code
;
}
@ExcelField
(
title
=
"二维码存储路径"
,
align
=
2
,
sort
=
3
)
public
String
getUrl
()
{
return
url
;
}
public
void
setUrl
(
String
url
)
{
this
.
url
=
url
;
}
}
\ No newline at end of file
src/main/java/com/jeeplus/modules/warehouse/qrcode/mapper/QrCodeMapper.java
0 → 100644
View file @
55f87d07
/**
* Copyright © 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
*/
package
com
.
jeeplus
.
modules
.
warehouse
.
qrcode
.
mapper
;
import
com.jeeplus.core.persistence.BaseMapper
;
import
com.jeeplus.core.persistence.annotation.MyBatisMapper
;
import
com.jeeplus.modules.warehouse.qrcode.entity.QrCode
;
/**
* 二维码MAPPER接口
* @author 胡懿
* @version 2023-02-13
*/
@MyBatisMapper
public
interface
QrCodeMapper
extends
BaseMapper
<
QrCode
>
{
}
\ No newline at end of file
src/main/java/com/jeeplus/modules/
test/manytomany/mapper/xml/Cours
eMapper.xml
→
src/main/java/com/jeeplus/modules/
warehouse/qrcode/mapper/xml/QrCod
eMapper.xml
View file @
55f87d07
<?xml version="1.0" encoding="UTF-8" ?>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.jeeplus.modules.
test.manytomany.mapper.Cours
eMapper"
>
<mapper
namespace=
"com.jeeplus.modules.
warehouse.qrcode.mapper.QrCod
eMapper"
>
<sql
id=
"
cours
eColumns"
>
<sql
id=
"
qrCod
eColumns"
>
a.id AS "id",
a.id AS "id",
a.name AS "name",
a.goods_info_id AS "goodsInfo.id",
a.code AS "code",
a.url AS "url",
a.create_by AS "createBy.id",
a.create_by AS "createBy.id",
a.create_date AS "createDate",
a.create_date AS "createDate",
a.update_by AS "updateBy.id",
a.update_by AS "updateBy.id",
...
@@ -13,29 +15,29 @@
...
@@ -13,29 +15,29 @@
a.del_flag AS "delFlag"
a.del_flag AS "delFlag"
</sql>
</sql>
<sql
id=
"
cours
eJoins"
>
<sql
id=
"
qrCod
eJoins"
>
</sql>
</sql>
<select
id=
"get"
resultType=
"
Cours
e"
>
<select
id=
"get"
resultType=
"
QrCod
e"
>
SELECT
SELECT
<include
refid=
"
cours
eColumns"
/>
<include
refid=
"
qrCod
eColumns"
/>
FROM t
est_course
a
FROM t
_wh_qr
a
<include
refid=
"
cours
eJoins"
/>
<include
refid=
"
qrCod
eJoins"
/>
WHERE a.id = #{id}
WHERE a.id = #{id}
</select>
</select>
<select
id=
"findList"
resultType=
"
Cours
e"
>
<select
id=
"findList"
resultType=
"
QrCod
e"
>
SELECT
SELECT
<include
refid=
"
cours
eColumns"
/>
<include
refid=
"
qrCod
eColumns"
/>
FROM t
est_course
a
FROM t
_wh_qr
a
<include
refid=
"
cours
eJoins"
/>
<include
refid=
"
qrCod
eJoins"
/>
<where>
<where>
a.del_flag = #{DEL_FLAG_NORMAL}
a.del_flag = #{DEL_FLAG_NORMAL}
${dataScope}
${dataScope}
<if
test=
"
name != null and nam
e != ''"
>
<if
test=
"
code != null and cod
e != ''"
>
AND a.
name = #{nam
e}
AND a.
code = #{cod
e}
</if>
</if>
</where>
</where>
<choose>
<choose>
...
@@ -48,11 +50,11 @@
...
@@ -48,11 +50,11 @@
</choose>
</choose>
</select>
</select>
<select
id=
"findAllList"
resultType=
"
Cours
e"
>
<select
id=
"findAllList"
resultType=
"
QrCod
e"
>
SELECT
SELECT
<include
refid=
"
cours
eColumns"
/>
<include
refid=
"
qrCod
eColumns"
/>
FROM t
est_course
a
FROM t
_wh_qr
a
<include
refid=
"
cours
eJoins"
/>
<include
refid=
"
qrCod
eJoins"
/>
<where>
<where>
a.del_flag = #{DEL_FLAG_NORMAL}
a.del_flag = #{DEL_FLAG_NORMAL}
${dataScope}
${dataScope}
...
@@ -68,9 +70,11 @@
...
@@ -68,9 +70,11 @@
</select>
</select>
<insert
id=
"insert"
>
<insert
id=
"insert"
>
INSERT INTO t
est_course
(
INSERT INTO t
_wh_qr
(
id,
id,
name,
goods_info_id,
code,
url,
create_by,
create_by,
create_date,
create_date,
update_by,
update_by,
...
@@ -79,7 +83,9 @@
...
@@ -79,7 +83,9 @@
del_flag
del_flag
) VALUES (
) VALUES (
#{id},
#{id},
#{name},
#{goodsInfo.id},
#{code},
#{url},
#{createBy.id},
#{createBy.id},
#{createDate},
#{createDate},
#{updateBy.id},
#{updateBy.id},
...
@@ -90,8 +96,10 @@
...
@@ -90,8 +96,10 @@
</insert>
</insert>
<update
id=
"update"
>
<update
id=
"update"
>
UPDATE test_course SET
UPDATE t_wh_qr SET
name = #{name},
goods_info_id = #{goodsInfo.id},
code = #{code},
url = #{url},
update_by = #{updateBy.id},
update_by = #{updateBy.id},
update_date = #{updateDate},
update_date = #{updateDate},
remarks = #{remarks}
remarks = #{remarks}
...
@@ -101,21 +109,21 @@
...
@@ -101,21 +109,21 @@
<!--物理删除-->
<!--物理删除-->
<update
id=
"delete"
>
<update
id=
"delete"
>
DELETE FROM t
est_course
DELETE FROM t
_wh_qr
WHERE id = #{id}
WHERE id = #{id}
</update>
</update>
<!--逻辑删除-->
<!--逻辑删除-->
<update
id=
"deleteByLogic"
>
<update
id=
"deleteByLogic"
>
UPDATE t
est_course
SET
UPDATE t
_wh_qr
SET
del_flag = #{DEL_FLAG_DELETE}
del_flag = #{DEL_FLAG_DELETE}
WHERE id = #{id}
WHERE id = #{id}
</update>
</update>
<!-- 根据实体名称和字段名称和字段值获取唯一记录 -->
<!-- 根据实体名称和字段名称和字段值获取唯一记录 -->
<select
id=
"findUniqueByProperty"
resultType=
"
Cours
e"
statementType=
"STATEMENT"
>
<select
id=
"findUniqueByProperty"
resultType=
"
QrCod
e"
statementType=
"STATEMENT"
>
select * FROM t
est_course
where ${propertyName} = '${value}'
select * FROM t
_wh_qr
where ${propertyName} = '${value}'
</select>
</select>
</mapper>
</mapper>
\ No newline at end of file
src/main/java/com/jeeplus/modules/warehouse/qrcode/service/QrCodeService.java
0 → 100644
View file @
55f87d07
/**
* Copyright © 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
*/
package
com
.
jeeplus
.
modules
.
warehouse
.
qrcode
.
service
;
import
java.util.List
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
com.jeeplus.core.persistence.Page
;
import
com.jeeplus.core.service.CrudService
;
import
com.jeeplus.modules.warehouse.qrcode.entity.QrCode
;
import
com.jeeplus.modules.warehouse.qrcode.mapper.QrCodeMapper
;
/**
* 二维码Service
* @author 胡懿
* @version 2023-02-13
*/
@Service
@Transactional
(
readOnly
=
true
)
public
class
QrCodeService
extends
CrudService
<
QrCodeMapper
,
QrCode
>
{
public
QrCode
get
(
String
id
)
{
return
super
.
get
(
id
);
}
public
List
<
QrCode
>
findList
(
QrCode
qrCode
)
{
return
super
.
findList
(
qrCode
);
}
public
Page
<
QrCode
>
findPage
(
Page
<
QrCode
>
page
,
QrCode
qrCode
)
{
return
super
.
findPage
(
page
,
qrCode
);
}
@Transactional
(
readOnly
=
false
)
public
void
save
(
QrCode
qrCode
)
{
super
.
save
(
qrCode
);
}
@Transactional
(
readOnly
=
false
)
public
void
delete
(
QrCode
qrCode
)
{
super
.
delete
(
qrCode
);
}
}
\ No newline at end of file
src/main/java/com/jeeplus/modules/
test/one/form/web/Leave2
Controller.java
→
src/main/java/com/jeeplus/modules/
warehouse/qrcode/web/QrCode
Controller.java
View file @
55f87d07
/**
/**
* Copyright © 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
* Copyright © 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
*/
*/
package
com
.
jeeplus
.
modules
.
test
.
one
.
form
.
web
;
package
com
.
jeeplus
.
modules
.
warehouse
.
qrcode
.
web
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
...
@@ -32,115 +32,115 @@ import com.jeeplus.core.web.BaseController;
...
@@ -32,115 +32,115 @@ import com.jeeplus.core.web.BaseController;
import
com.jeeplus.common.utils.StringUtils
;
import
com.jeeplus.common.utils.StringUtils
;
import
com.jeeplus.common.utils.excel.ExportExcel
;
import
com.jeeplus.common.utils.excel.ExportExcel
;
import
com.jeeplus.common.utils.excel.ImportExcel
;
import
com.jeeplus.common.utils.excel.ImportExcel
;
import
com.jeeplus.modules.
test.one.form.entity.Leave2
;
import
com.jeeplus.modules.
warehouse.qrcode.entity.QrCode
;
import
com.jeeplus.modules.
test.one.form.service.Leave2
Service
;
import
com.jeeplus.modules.
warehouse.qrcode.service.QrCode
Service
;
/**
/**
*
请假表单
Controller
*
二维码
Controller
* @author
lgf
* @author
胡懿
* @version 20
18-06-12
* @version 20
23-02-13
*/
*/
@Controller
@Controller
@RequestMapping
(
value
=
"${adminPath}/
test/one/form/leave2
"
)
@RequestMapping
(
value
=
"${adminPath}/
warehouse/qrcode/qrCode
"
)
public
class
Leave2
Controller
extends
BaseController
{
public
class
QrCode
Controller
extends
BaseController
{
@Autowired
@Autowired
private
Leave2Service
leave2
Service
;
private
QrCodeService
qrCode
Service
;
@ModelAttribute
@ModelAttribute
public
Leave2
get
(
@RequestParam
(
required
=
false
)
String
id
)
{
public
QrCode
get
(
@RequestParam
(
required
=
false
)
String
id
)
{
Leave2
entity
=
null
;
QrCode
entity
=
null
;
if
(
StringUtils
.
isNotBlank
(
id
)){
if
(
StringUtils
.
isNotBlank
(
id
)){
entity
=
leave2
Service
.
get
(
id
);
entity
=
qrCode
Service
.
get
(
id
);
}
}
if
(
entity
==
null
){
if
(
entity
==
null
){
entity
=
new
Leave2
();
entity
=
new
QrCode
();
}
}
return
entity
;
return
entity
;
}
}
/**
/**
*
请假表单
列表页面
*
二维码
列表页面
*/
*/
@RequiresPermissions
(
"
test:one:form:leave2
:list"
)
@RequiresPermissions
(
"
warehouse:qrcode:qrCode
:list"
)
@RequestMapping
(
value
=
{
"list"
,
""
})
@RequestMapping
(
value
=
{
"list"
,
""
})
public
String
list
(
Leave2
leave2
,
Model
model
)
{
public
String
list
(
QrCode
qrCode
,
Model
model
)
{
model
.
addAttribute
(
"
leave2"
,
leave2
);
model
.
addAttribute
(
"
qrCode"
,
qrCode
);
return
"modules/
test/one/form/leave2
List"
;
return
"modules/
warehouse/qrcode/qrCode
List"
;
}
}
/**
/**
*
请假表单
列表数据
*
二维码
列表数据
*/
*/
@ResponseBody
@ResponseBody
@RequiresPermissions
(
"
test:one:form:leave2
:list"
)
@RequiresPermissions
(
"
warehouse:qrcode:qrCode
:list"
)
@RequestMapping
(
value
=
"data"
)
@RequestMapping
(
value
=
"data"
)
public
Map
<
String
,
Object
>
data
(
Leave2
leave2
,
HttpServletRequest
request
,
HttpServletResponse
response
,
Model
model
)
{
public
Map
<
String
,
Object
>
data
(
QrCode
qrCode
,
HttpServletRequest
request
,
HttpServletResponse
response
,
Model
model
)
{
Page
<
Leave2
>
page
=
leave2Service
.
findPage
(
new
Page
<
Leave2
>(
request
,
response
),
leave2
);
Page
<
QrCode
>
page
=
qrCodeService
.
findPage
(
new
Page
<
QrCode
>(
request
,
response
),
qrCode
);
return
getBootstrapData
(
page
);
return
getBootstrapData
(
page
);
}
}
/**
/**
* 查看,增加,编辑
请假表单
表单页面
* 查看,增加,编辑
二维码
表单页面
*/
*/
@RequiresPermissions
(
value
={
"
test:one:form:leave2:view"
,
"test:one:form:leave2:add"
,
"test:one:form:leave2
:edit"
},
logical
=
Logical
.
OR
)
@RequiresPermissions
(
value
={
"
warehouse:qrcode:qrCode:view"
,
"warehouse:qrcode:qrCode:add"
,
"warehouse:qrcode:qrCode
:edit"
},
logical
=
Logical
.
OR
)
@RequestMapping
(
value
=
"form/{mode}"
)
@RequestMapping
(
value
=
"form/{mode}"
)
public
String
form
(
@PathVariable
String
mode
,
Leave2
leave2
,
Model
model
)
{
public
String
form
(
@PathVariable
String
mode
,
QrCode
qrCode
,
Model
model
)
{
model
.
addAttribute
(
"
leave2"
,
leave2
);
model
.
addAttribute
(
"
qrCode"
,
qrCode
);
model
.
addAttribute
(
"mode"
,
mode
);
model
.
addAttribute
(
"mode"
,
mode
);
return
"modules/
test/one/form/leave2
Form"
;
return
"modules/
warehouse/qrcode/qrCode
Form"
;
}
}
/**
/**
* 保存
请假表单
* 保存
二维码
*/
*/
@ResponseBody
@ResponseBody
@RequiresPermissions
(
value
={
"
test:one:form:leave2:add"
,
"test:one:form:leave2
:edit"
},
logical
=
Logical
.
OR
)
@RequiresPermissions
(
value
={
"
warehouse:qrcode:qrCode:add"
,
"warehouse:qrcode:qrCode
:edit"
},
logical
=
Logical
.
OR
)
@RequestMapping
(
value
=
"save"
)
@RequestMapping
(
value
=
"save"
)
public
AjaxJson
save
(
Leave2
leave2
,
Model
model
)
throws
Exception
{
public
AjaxJson
save
(
QrCode
qrCode
,
Model
model
)
throws
Exception
{
AjaxJson
j
=
new
AjaxJson
();
AjaxJson
j
=
new
AjaxJson
();
/**
/**
* 后台hibernate-validation插件校验
* 后台hibernate-validation插件校验
*/
*/
String
errMsg
=
beanValidator
(
leave2
);
String
errMsg
=
beanValidator
(
qrCode
);
if
(
StringUtils
.
isNotBlank
(
errMsg
)){
if
(
StringUtils
.
isNotBlank
(
errMsg
)){
j
.
setSuccess
(
false
);
j
.
setSuccess
(
false
);
j
.
setMsg
(
errMsg
);
j
.
setMsg
(
errMsg
);
return
j
;
return
j
;
}
}
//新增或编辑表单保存
//新增或编辑表单保存
leave2Service
.
save
(
leave2
);
//保存
qrCodeService
.
save
(
qrCode
);
//保存
j
.
setSuccess
(
true
);
j
.
setSuccess
(
true
);
j
.
setMsg
(
"保存
请假表单
成功"
);
j
.
setMsg
(
"保存
二维码
成功"
);
return
j
;
return
j
;
}
}
/**
/**
* 删除
请假表单
* 删除
二维码
*/
*/
@ResponseBody
@ResponseBody
@RequiresPermissions
(
"
test:one:form:leave2
:del"
)
@RequiresPermissions
(
"
warehouse:qrcode:qrCode
:del"
)
@RequestMapping
(
value
=
"delete"
)
@RequestMapping
(
value
=
"delete"
)
public
AjaxJson
delete
(
Leave2
leave2
)
{
public
AjaxJson
delete
(
QrCode
qrCode
)
{
AjaxJson
j
=
new
AjaxJson
();
AjaxJson
j
=
new
AjaxJson
();
leave2Service
.
delete
(
leave2
);
qrCodeService
.
delete
(
qrCode
);
j
.
setMsg
(
"删除
请假表单
成功"
);
j
.
setMsg
(
"删除
二维码
成功"
);
return
j
;
return
j
;
}
}
/**
/**
* 批量删除
请假表单
* 批量删除
二维码
*/
*/
@ResponseBody
@ResponseBody
@RequiresPermissions
(
"
test:one:form:leave2
:del"
)
@RequiresPermissions
(
"
warehouse:qrcode:qrCode
:del"
)
@RequestMapping
(
value
=
"deleteAll"
)
@RequestMapping
(
value
=
"deleteAll"
)
public
AjaxJson
deleteAll
(
String
ids
)
{
public
AjaxJson
deleteAll
(
String
ids
)
{
AjaxJson
j
=
new
AjaxJson
();
AjaxJson
j
=
new
AjaxJson
();
String
idArray
[]
=
ids
.
split
(
","
);
String
idArray
[]
=
ids
.
split
(
","
);
for
(
String
id
:
idArray
){
for
(
String
id
:
idArray
){
leave2Service
.
delete
(
leave2
Service
.
get
(
id
));
qrCodeService
.
delete
(
qrCode
Service
.
get
(
id
));
}
}
j
.
setMsg
(
"删除
请假表单
成功"
);
j
.
setMsg
(
"删除
二维码
成功"
);
return
j
;
return
j
;
}
}
...
@@ -148,20 +148,20 @@ public class Leave2Controller extends BaseController {
...
@@ -148,20 +148,20 @@ public class Leave2Controller extends BaseController {
* 导出excel文件
* 导出excel文件
*/
*/
@ResponseBody
@ResponseBody
@RequiresPermissions
(
"
test:one:form:leave2
:export"
)
@RequiresPermissions
(
"
warehouse:qrcode:qrCode
:export"
)
@RequestMapping
(
value
=
"export"
)
@RequestMapping
(
value
=
"export"
)
public
AjaxJson
exportFile
(
Leave2
leave2
,
HttpServletRequest
request
,
HttpServletResponse
response
)
{
public
AjaxJson
exportFile
(
QrCode
qrCode
,
HttpServletRequest
request
,
HttpServletResponse
response
)
{
AjaxJson
j
=
new
AjaxJson
();
AjaxJson
j
=
new
AjaxJson
();
try
{
try
{
String
fileName
=
"
请假表单
"
+
DateUtils
.
getDate
(
"yyyyMMddHHmmss"
)+
".xlsx"
;
String
fileName
=
"
二维码
"
+
DateUtils
.
getDate
(
"yyyyMMddHHmmss"
)+
".xlsx"
;
Page
<
Leave2
>
page
=
leave2Service
.
findPage
(
new
Page
<
Leave2
>(
request
,
response
,
-
1
),
leave2
);
Page
<
QrCode
>
page
=
qrCodeService
.
findPage
(
new
Page
<
QrCode
>(
request
,
response
,
-
1
),
qrCode
);
new
ExportExcel
(
"
请假表单"
,
Leave2
.
class
).
setDataList
(
page
.
getList
()).
write
(
response
,
fileName
).
dispose
();
new
ExportExcel
(
"
二维码"
,
QrCode
.
class
).
setDataList
(
page
.
getList
()).
write
(
response
,
fileName
).
dispose
();
j
.
setSuccess
(
true
);
j
.
setSuccess
(
true
);
j
.
setMsg
(
"导出成功!"
);
j
.
setMsg
(
"导出成功!"
);
return
j
;
return
j
;
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
j
.
setSuccess
(
false
);
j
.
setSuccess
(
false
);
j
.
setMsg
(
"导出
请假表单
记录失败!失败信息:"
+
e
.
getMessage
());
j
.
setMsg
(
"导出
二维码
记录失败!失败信息:"
+
e
.
getMessage
());
}
}
return
j
;
return
j
;
}
}
...
@@ -171,7 +171,7 @@ public class Leave2Controller extends BaseController {
...
@@ -171,7 +171,7 @@ public class Leave2Controller extends BaseController {
*/
*/
@ResponseBody
@ResponseBody
@RequiresPermissions
(
"
test:one:form:leave2
:import"
)
@RequiresPermissions
(
"
warehouse:qrcode:qrCode
:import"
)
@RequestMapping
(
value
=
"import"
)
@RequestMapping
(
value
=
"import"
)
public
AjaxJson
importFile
(
@RequestParam
(
"file"
)
MultipartFile
file
,
HttpServletResponse
response
,
HttpServletRequest
request
)
{
public
AjaxJson
importFile
(
@RequestParam
(
"file"
)
MultipartFile
file
,
HttpServletResponse
response
,
HttpServletRequest
request
)
{
AjaxJson
j
=
new
AjaxJson
();
AjaxJson
j
=
new
AjaxJson
();
...
@@ -180,10 +180,10 @@ public class Leave2Controller extends BaseController {
...
@@ -180,10 +180,10 @@ public class Leave2Controller extends BaseController {
int
failureNum
=
0
;
int
failureNum
=
0
;
StringBuilder
failureMsg
=
new
StringBuilder
();
StringBuilder
failureMsg
=
new
StringBuilder
();
ImportExcel
ei
=
new
ImportExcel
(
file
,
1
,
0
);
ImportExcel
ei
=
new
ImportExcel
(
file
,
1
,
0
);
List
<
Leave2
>
list
=
ei
.
getDataList
(
Leave2
.
class
);
List
<
QrCode
>
list
=
ei
.
getDataList
(
QrCode
.
class
);
for
(
Leave2
leave2
:
list
){
for
(
QrCode
qrCode
:
list
){
try
{
try
{
leave2Service
.
save
(
leave2
);
qrCodeService
.
save
(
qrCode
);
successNum
++;
successNum
++;
}
catch
(
ConstraintViolationException
ex
){
}
catch
(
ConstraintViolationException
ex
){
failureNum
++;
failureNum
++;
...
@@ -192,28 +192,28 @@ public class Leave2Controller extends BaseController {
...
@@ -192,28 +192,28 @@ public class Leave2Controller extends BaseController {
}
}
}
}
if
(
failureNum
>
0
){
if
(
failureNum
>
0
){
failureMsg
.
insert
(
0
,
",失败 "
+
failureNum
+
" 条
请假表单
记录。"
);
failureMsg
.
insert
(
0
,
",失败 "
+
failureNum
+
" 条
二维码
记录。"
);
}
}
j
.
setMsg
(
"已成功导入 "
+
successNum
+
" 条
请假表单
记录"
+
failureMsg
);
j
.
setMsg
(
"已成功导入 "
+
successNum
+
" 条
二维码
记录"
+
failureMsg
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
j
.
setSuccess
(
false
);
j
.
setSuccess
(
false
);
j
.
setMsg
(
"导入
请假表单
失败!失败信息:"
+
e
.
getMessage
());
j
.
setMsg
(
"导入
二维码
失败!失败信息:"
+
e
.
getMessage
());
}
}
return
j
;
return
j
;
}
}
/**
/**
* 下载导入
请假表单
数据模板
* 下载导入
二维码
数据模板
*/
*/
@ResponseBody
@ResponseBody
@RequiresPermissions
(
"
test:one:form:leave2
:import"
)
@RequiresPermissions
(
"
warehouse:qrcode:qrCode
:import"
)
@RequestMapping
(
value
=
"import/template"
)
@RequestMapping
(
value
=
"import/template"
)
public
AjaxJson
importFileTemplate
(
HttpServletResponse
response
)
{
public
AjaxJson
importFileTemplate
(
HttpServletResponse
response
)
{
AjaxJson
j
=
new
AjaxJson
();
AjaxJson
j
=
new
AjaxJson
();
try
{
try
{
String
fileName
=
"
请假表单
数据导入模板.xlsx"
;
String
fileName
=
"
二维码
数据导入模板.xlsx"
;
List
<
Leave2
>
list
=
Lists
.
newArrayList
();
List
<
QrCode
>
list
=
Lists
.
newArrayList
();
new
ExportExcel
(
"
请假表单数据"
,
Leave2
.
class
,
1
).
setDataList
(
list
).
write
(
response
,
fileName
).
dispose
();
new
ExportExcel
(
"
二维码数据"
,
QrCode
.
class
,
1
).
setDataList
(
list
).
write
(
response
,
fileName
).
dispose
();
return
null
;
return
null
;
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
j
.
setSuccess
(
false
);
j
.
setSuccess
(
false
);
...
...
src/main/java/com/jeeplus/modules/warehouse/storage/entity/Storage.java
0 → 100644
View file @
55f87d07
/**
* Copyright © 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
*/
package
com
.
jeeplus
.
modules
.
warehouse
.
storage
.
entity
;
import
com.jeeplus.modules.sys.entity.User
;
import
java.util.Date
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
java.util.List
;
import
com.google.common.collect.Lists
;
import
com.jeeplus.core.persistence.DataEntity
;
import
com.jeeplus.common.utils.excel.annotation.ExcelField
;
/**
* 入库信息Entity
* @author huyi
* @version 2023-02-13
*/
public
class
Storage
extends
DataEntity
<
Storage
>
{
private
static
final
long
serialVersionUID
=
1L
;
private
String
code
;
// 入库单
private
User
operator
;
// 操作人
private
Date
time
;
// 时间
private
String
batchNum
;
// 批次号
private
Date
beginTime
;
// 开始 时间
private
Date
endTime
;
// 结束 时间
private
List
<
StorageInfo
>
storageInfoList
=
Lists
.
newArrayList
();
// 子表列表
public
Storage
()
{
super
();
}
public
Storage
(
String
id
){
super
(
id
);
}
@ExcelField
(
title
=
"入库单"
,
align
=
2
,
sort
=
1
)
public
String
getCode
()
{
return
code
;
}
public
void
setCode
(
String
code
)
{
this
.
code
=
code
;
}
@ExcelField
(
title
=
"操作人"
,
fieldType
=
User
.
class
,
value
=
"operator.name"
,
align
=
2
,
sort
=
2
)
public
User
getOperator
()
{
return
operator
;
}
public
void
setOperator
(
User
operator
)
{
this
.
operator
=
operator
;
}
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
@ExcelField
(
title
=
"时间"
,
align
=
2
,
sort
=
3
)
public
Date
getTime
()
{
return
time
;
}
public
void
setTime
(
Date
time
)
{
this
.
time
=
time
;
}
@ExcelField
(
title
=
"批次号"
,
align
=
2
,
sort
=
4
)
public
String
getBatchNum
()
{
return
batchNum
;
}
public
void
setBatchNum
(
String
batchNum
)
{
this
.
batchNum
=
batchNum
;
}
public
Date
getBeginTime
()
{
return
beginTime
;
}
public
void
setBeginTime
(
Date
beginTime
)
{
this
.
beginTime
=
beginTime
;
}
public
Date
getEndTime
()
{
return
endTime
;
}
public
void
setEndTime
(
Date
endTime
)
{
this
.
endTime
=
endTime
;
}
public
List
<
StorageInfo
>
getStorageInfoList
()
{
return
storageInfoList
;
}
public
void
setStorageInfoList
(
List
<
StorageInfo
>
storageInfoList
)
{
this
.
storageInfoList
=
storageInfoList
;
}
}
\ No newline at end of file
src/main/java/com/jeeplus/modules/warehouse/storage/entity/StorageInfo.java
0 → 100644
View file @
55f87d07
/**
* Copyright © 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
*/
package
com
.
jeeplus
.
modules
.
warehouse
.
storage
.
entity
;
import
com.jeeplus.modules.warehouse.goods.entity.GoodsInfo
;
import
com.jeeplus.modules.warehouse.materialtype.entity.MaterialType
;
import
com.jeeplus.modules.warehouse.shelves.entity.Shelves
;
import
com.jeeplus.core.persistence.DataEntity
;
import
com.jeeplus.common.utils.excel.annotation.ExcelField
;
/**
* 入库明细Entity
* @author huyi
* @version 2023-02-13
*/
public
class
StorageInfo
extends
DataEntity
<
StorageInfo
>
{
private
static
final
long
serialVersionUID
=
1L
;
private
Storage
storage
;
// 主表id 父类
private
String
name
;
// 名称
private
MaterialType
type
;
// 类型
private
String
model
;
// 型号
private
GoodsInfo
goodsInfo
;
// 货品明细id
private
Shelves
shelves
;
// 货架id
public
StorageInfo
()
{
super
();
}
public
StorageInfo
(
String
id
){
super
(
id
);
}
public
StorageInfo
(
Storage
storage
){
this
.
storage
=
storage
;
}
public
Storage
getStorage
()
{
return
storage
;
}
public
void
setStorage
(
Storage
storage
)
{
this
.
storage
=
storage
;
}
@ExcelField
(
title
=
"名称"
,
align
=
2
,
sort
=
2
)
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
@ExcelField
(
title
=
"类型"
,
fieldType
=
MaterialType
.
class
,
value
=
"type.name"
,
align
=
2
,
sort
=
3
)
public
MaterialType
getType
()
{
return
type
;
}
public
void
setType
(
MaterialType
type
)
{
this
.
type
=
type
;
}
@ExcelField
(
title
=
"型号"
,
align
=
2
,
sort
=
4
)
public
String
getModel
()
{
return
model
;
}
public
void
setModel
(
String
model
)
{
this
.
model
=
model
;
}
@ExcelField
(
title
=
"货品明细id"
,
align
=
2
,
sort
=
5
)
public
GoodsInfo
getGoodsInfo
()
{
return
goodsInfo
;
}
public
void
setGoodsInfo
(
GoodsInfo
goodsInfo
)
{
this
.
goodsInfo
=
goodsInfo
;
}
@ExcelField
(
title
=
"货架id"
,
fieldType
=
Shelves
.
class
,
value
=
"shelves.name"
,
align
=
2
,
sort
=
6
)
public
Shelves
getShelves
()
{
return
shelves
;
}
public
void
setShelves
(
Shelves
shelves
)
{
this
.
shelves
=
shelves
;
}
}
\ No newline at end of file
src/main/java/com/jeeplus/modules/warehouse/storage/mapper/StorageInfoMapper.java
0 → 100644
View file @
55f87d07
/**
* Copyright © 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
*/
package
com
.
jeeplus
.
modules
.
warehouse
.
storage
.
mapper
;
import
com.jeeplus.core.persistence.BaseMapper
;
import
com.jeeplus.core.persistence.annotation.MyBatisMapper
;
import
com.jeeplus.modules.warehouse.storage.entity.StorageInfo
;
/**
* 入库明细MAPPER接口
* @author huyi
* @version 2023-02-13
*/
@MyBatisMapper
public
interface
StorageInfoMapper
extends
BaseMapper
<
StorageInfo
>
{
}
\ No newline at end of file
src/main/java/com/jeeplus/modules/warehouse/storage/mapper/StorageMapper.java
0 → 100644
View file @
55f87d07
/**
* Copyright © 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
*/
package
com
.
jeeplus
.
modules
.
warehouse
.
storage
.
mapper
;
import
com.jeeplus.core.persistence.BaseMapper
;
import
com.jeeplus.core.persistence.annotation.MyBatisMapper
;
import
com.jeeplus.modules.warehouse.storage.entity.Storage
;
/**
* 入库信息MAPPER接口
* @author huyi
* @version 2023-02-13
*/
@MyBatisMapper
public
interface
StorageMapper
extends
BaseMapper
<
Storage
>
{
}
\ No newline at end of file
src/main/java/com/jeeplus/modules/warehouse/storage/mapper/xml/StorageInfoMapper.xml
0 → 100644
View file @
55f87d07
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.jeeplus.modules.warehouse.storage.mapper.StorageInfoMapper"
>
<sql
id=
"storageInfoColumns"
>
a.id AS "id",
a.storage_id AS "storage.id",
a.name AS "name",
a.type_id AS "type.id",
a.model AS "model",
a.goods_info_id AS "goodsInfo.id",
a.shelves_id AS "shelves.id",
a.remarks AS "remarks",
a.create_by AS "createBy.id",
a.create_date AS "createDate",
a.update_by AS "updateBy.id",
a.update_date AS "updateDate",
a.del_flag AS "delFlag",
b.name AS "storage.name",
type.name AS "type.name",
type.code AS "type.code",
shelves.name AS "shelves.name"
</sql>
<sql
id=
"storageInfoJoins"
>
LEFT JOIN t_wh_storage b ON b.id = a.storage_id
LEFT JOIN t_wh_material_type type ON type.id = a.type_id
LEFT JOIN t_wh_shelves shelves ON shelves.id = a.shelves_id
</sql>
<select
id=
"get"
resultType=
"StorageInfo"
>
SELECT
<include
refid=
"storageInfoColumns"
/>
FROM t_wh_storage_info a
<include
refid=
"storageInfoJoins"
/>
WHERE a.id = #{id}
</select>
<select
id=
"findList"
resultType=
"StorageInfo"
>
SELECT
<include
refid=
"storageInfoColumns"
/>
FROM t_wh_storage_info a
<include
refid=
"storageInfoJoins"
/>
<where>
a.del_flag = #{DEL_FLAG_NORMAL}
${dataScope}
<if
test=
"storage != null and storage.id != null and storage.id != ''"
>
AND a.storage_id = #{storage.id}
</if>
<if
test=
"name != null and name != ''"
>
AND a.name LIKE
<if
test=
"dbName == 'oracle'"
>
'%'||#{name}||'%'
</if>
<if
test=
"dbName == 'mssql'"
>
'%'+#{name}+'%'
</if>
<if
test=
"dbName == 'mysql'"
>
concat('%',#{name},'%')
</if>
</if>
<if
test=
"type != null and type.id != null and type.id != ''"
>
AND a.type_id = #{type.id}
</if>
<if
test=
"model != null and model != ''"
>
AND a.model LIKE
<if
test=
"dbName == 'oracle'"
>
'%'||#{model}||'%'
</if>
<if
test=
"dbName == 'mssql'"
>
'%'+#{model}+'%'
</if>
<if
test=
"dbName == 'mysql'"
>
concat('%',#{model},'%')
</if>
</if>
<if
test=
"shelves != null and shelves.id != null and shelves.id != ''"
>
AND a.shelves_id = #{shelves.id}
</if>
</where>
<choose>
<when
test=
"page !=null and page.orderBy != null and page.orderBy != ''"
>
ORDER BY ${page.orderBy}
</when>
<otherwise>
ORDER BY a.create_date ASC
</otherwise>
</choose>
</select>
<select
id=
"findAllList"
resultType=
"StorageInfo"
>
SELECT
<include
refid=
"storageInfoColumns"
/>
FROM t_wh_storage_info a
<include
refid=
"storageInfoJoins"
/>
<where>
a.del_flag = #{DEL_FLAG_NORMAL}
${dataScope}
</where>
<choose>
<when
test=
"page !=null and page.orderBy != null and page.orderBy != ''"
>
ORDER BY ${page.orderBy}
</when>
<otherwise>
ORDER BY a.create_date ASC
</otherwise>
</choose>
</select>
<insert
id=
"insert"
>
INSERT INTO t_wh_storage_info(
id,
storage_id,
name,
type_id,
model,
goods_info_id,
shelves_id,
remarks,
create_by,
create_date,
update_by,
update_date,
del_flag
) VALUES (
#{id},
#{storage.id},
#{name},
#{type.id},
#{model},
#{goodsInfo.id},
#{shelves.id},
#{remarks},
#{createBy.id},
#{createDate},
#{updateBy.id},
#{updateDate},
#{delFlag}
)
</insert>
<update
id=
"update"
>
UPDATE t_wh_storage_info SET
storage_id = #{storage.id},
name = #{name},
type_id = #{type.id},
model = #{model},
goods_info_id = #{goodsInfo.id},
shelves_id = #{shelves.id},
remarks = #{remarks},
update_by = #{updateBy.id},
update_date = #{updateDate}
WHERE id = #{id}
</update>
<!--物理删除-->
<update
id=
"delete"
>
DELETE FROM t_wh_storage_info
<choose>
<when
test=
"id !=null and id != ''"
>
WHERE id = #{id}
</when>
<otherwise>
WHERE storage_id = #{storage.id}
</otherwise>
</choose>
</update>
<!--逻辑删除-->
<update
id=
"deleteByLogic"
>
UPDATE t_wh_storage_info SET
del_flag = #{DEL_FLAG_DELETE}
<choose>
<when
test=
"id !=null and id != ''"
>
WHERE id = #{id}
</when>
<otherwise>
WHERE storage_id = #{storage.id}
</otherwise>
</choose>
</update>
<!-- 根据实体名称和字段名称和字段值获取唯一记录 -->
<select
id=
"findUniqueByProperty"
resultType=
"StorageInfo"
statementType=
"STATEMENT"
>
select * FROM t_wh_storage_info where ${propertyName} = '${value}'
</select>
</mapper>
\ No newline at end of file
src/main/java/com/jeeplus/modules/warehouse/storage/mapper/xml/StorageMapper.xml
0 → 100644
View file @
55f87d07
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.jeeplus.modules.warehouse.storage.mapper.StorageMapper"
>
<sql
id=
"storageColumns"
>
a.id AS "id",
a.code AS "code",
a.operator AS "operator.id",
a.time AS "time",
a.batch_num AS "batchNum",
a.remarks AS "remarks",
a.create_by AS "createBy.id",
a.create_date AS "createDate",
a.update_by AS "updateBy.id",
a.update_date AS "updateDate",
a.del_flag AS "delFlag",
operator.name AS "operator.name"
</sql>
<sql
id=
"storageJoins"
>
LEFT JOIN sys_user operator ON operator.id = a.operator
</sql>
<select
id=
"get"
resultType=
"Storage"
>
SELECT
<include
refid=
"storageColumns"
/>
FROM t_wh_storage a
<include
refid=
"storageJoins"
/>
WHERE a.id = #{id}
</select>
<select
id=
"findList"
resultType=
"Storage"
>
SELECT
<include
refid=
"storageColumns"
/>
FROM t_wh_storage a
<include
refid=
"storageJoins"
/>
<where>
a.del_flag = #{DEL_FLAG_NORMAL}
${dataScope}
<if
test=
"code != null and code != ''"
>
AND a.code LIKE
<if
test=
"dbName == 'oracle'"
>
'%'||#{code}||'%'
</if>
<if
test=
"dbName == 'mssql'"
>
'%'+#{code}+'%'
</if>
<if
test=
"dbName == 'mysql'"
>
concat('%',#{code},'%')
</if>
</if>
<if
test=
"operator != null and operator.id != null and operator.id != ''"
>
AND a.operator = #{operator.id}
</if>
<if
test=
"beginTime != null and endTime != null "
>
AND a.time BETWEEN #{beginTime} AND #{endTime}
</if>
<if
test=
"batchNum != null and batchNum != ''"
>
AND a.batch_num LIKE
<if
test=
"dbName == 'oracle'"
>
'%'||#{batchNum}||'%'
</if>
<if
test=
"dbName == 'mssql'"
>
'%'+#{batchNum}+'%'
</if>
<if
test=
"dbName == 'mysql'"
>
concat('%',#{batchNum},'%')
</if>
</if>
</where>
<choose>
<when
test=
"page !=null and page.orderBy != null and page.orderBy != ''"
>
ORDER BY ${page.orderBy}
</when>
<otherwise>
ORDER BY a.update_date DESC
</otherwise>
</choose>
</select>
<select
id=
"findAllList"
resultType=
"Storage"
>
SELECT
<include
refid=
"storageColumns"
/>
FROM t_wh_storage a
<include
refid=
"storageJoins"
/>
<where>
a.del_flag = #{DEL_FLAG_NORMAL}
${dataScope}
</where>
<choose>
<when
test=
"page !=null and page.orderBy != null and page.orderBy != ''"
>
ORDER BY ${page.orderBy}
</when>
<otherwise>
ORDER BY a.update_date DESC
</otherwise>
</choose>
</select>
<insert
id=
"insert"
>
INSERT INTO t_wh_storage(
id,
code,
operator,
time,
batch_num,
remarks,
create_by,
create_date,
update_by,
update_date,
del_flag
) VALUES (
#{id},
#{code},
#{operator.id},
#{time},
#{batchNum},
#{remarks},
#{createBy.id},
#{createDate},
#{updateBy.id},
#{updateDate},
#{delFlag}
)
</insert>
<update
id=
"update"
>
UPDATE t_wh_storage SET
code = #{code},
operator = #{operator.id},
time = #{time},
batch_num = #{batchNum},
remarks = #{remarks},
update_by = #{updateBy.id},
update_date = #{updateDate}
WHERE id = #{id}
</update>
<!--物理删除-->
<update
id=
"delete"
>
DELETE FROM t_wh_storage
WHERE id = #{id}
</update>
<!--逻辑删除-->
<update
id=
"deleteByLogic"
>
UPDATE t_wh_storage SET
del_flag = #{DEL_FLAG_DELETE}
WHERE id = #{id}
</update>
<!-- 根据实体名称和字段名称和字段值获取唯一记录 -->
<select
id=
"findUniqueByProperty"
resultType=
"Storage"
statementType=
"STATEMENT"
>
select * FROM t_wh_storage where ${propertyName} = '${value}'
</select>
</mapper>
\ No newline at end of file
src/main/java/com/jeeplus/modules/warehouse/storage/service/StorageService.java
0 → 100644
View file @
55f87d07
/**
* Copyright © 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
*/
package
com
.
jeeplus
.
modules
.
warehouse
.
storage
.
service
;
import
java.util.List
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
com.jeeplus.core.persistence.Page
;
import
com.jeeplus.core.service.CrudService
;
import
com.jeeplus.common.utils.StringUtils
;
import
com.jeeplus.modules.warehouse.storage.entity.Storage
;
import
com.jeeplus.modules.warehouse.storage.mapper.StorageMapper
;
import
com.jeeplus.modules.warehouse.storage.entity.StorageInfo
;
import
com.jeeplus.modules.warehouse.storage.mapper.StorageInfoMapper
;
/**
* 入库信息Service
* @author huyi
* @version 2023-02-13
*/
@Service
@Transactional
(
readOnly
=
true
)
public
class
StorageService
extends
CrudService
<
StorageMapper
,
Storage
>
{
@Autowired
private
StorageInfoMapper
storageInfoMapper
;
public
Storage
get
(
String
id
)
{
Storage
storage
=
super
.
get
(
id
);
storage
.
setStorageInfoList
(
storageInfoMapper
.
findList
(
new
StorageInfo
(
storage
)));
return
storage
;
}
public
List
<
Storage
>
findList
(
Storage
storage
)
{
return
super
.
findList
(
storage
);
}
public
Page
<
Storage
>
findPage
(
Page
<
Storage
>
page
,
Storage
storage
)
{
return
super
.
findPage
(
page
,
storage
);
}
@Transactional
(
readOnly
=
false
)
public
void
save
(
Storage
storage
)
{
super
.
save
(
storage
);
for
(
StorageInfo
storageInfo
:
storage
.
getStorageInfoList
()){
if
(
storageInfo
.
getId
()
==
null
){
continue
;
}
if
(
StorageInfo
.
DEL_FLAG_NORMAL
.
equals
(
storageInfo
.
getDelFlag
())){
if
(
StringUtils
.
isBlank
(
storageInfo
.
getId
())){
storageInfo
.
setStorage
(
storage
);
storageInfo
.
preInsert
();
storageInfoMapper
.
insert
(
storageInfo
);
}
else
{
storageInfo
.
preUpdate
();
storageInfoMapper
.
update
(
storageInfo
);
}
}
else
{
storageInfoMapper
.
delete
(
storageInfo
);
}
}
}
@Transactional
(
readOnly
=
false
)
public
void
delete
(
Storage
storage
)
{
super
.
delete
(
storage
);
storageInfoMapper
.
delete
(
new
StorageInfo
(
storage
));
}
}
\ No newline at end of file
src/main/java/com/jeeplus/modules/
test/manytomany/web/Cours
eController.java
→
src/main/java/com/jeeplus/modules/
warehouse/storage/web/Storag
eController.java
View file @
55f87d07
/**
/**
* Copyright © 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
* Copyright © 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
*/
*/
package
com
.
jeeplus
.
modules
.
test
.
manytomany
.
web
;
package
com
.
jeeplus
.
modules
.
warehouse
.
storage
.
web
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
...
@@ -32,115 +32,115 @@ import com.jeeplus.core.web.BaseController;
...
@@ -32,115 +32,115 @@ import com.jeeplus.core.web.BaseController;
import
com.jeeplus.common.utils.StringUtils
;
import
com.jeeplus.common.utils.StringUtils
;
import
com.jeeplus.common.utils.excel.ExportExcel
;
import
com.jeeplus.common.utils.excel.ExportExcel
;
import
com.jeeplus.common.utils.excel.ImportExcel
;
import
com.jeeplus.common.utils.excel.ImportExcel
;
import
com.jeeplus.modules.
test.manytomany.entity.Cours
e
;
import
com.jeeplus.modules.
warehouse.storage.entity.Storag
e
;
import
com.jeeplus.modules.
test.manytomany.service.Cours
eService
;
import
com.jeeplus.modules.
warehouse.storage.service.Storag
eService
;
/**
/**
*
课程
Controller
*
入库信息
Controller
* @author
lgf
* @author
huyi
* @version 20
18-06-12
* @version 20
23-02-13
*/
*/
@Controller
@Controller
@RequestMapping
(
value
=
"${adminPath}/
test/manytomany/cours
e"
)
@RequestMapping
(
value
=
"${adminPath}/
warehouse/storage/storag
e"
)
public
class
Cours
eController
extends
BaseController
{
public
class
Storag
eController
extends
BaseController
{
@Autowired
@Autowired
private
CourseService
cours
eService
;
private
StorageService
storag
eService
;
@ModelAttribute
@ModelAttribute
public
Cours
e
get
(
@RequestParam
(
required
=
false
)
String
id
)
{
public
Storag
e
get
(
@RequestParam
(
required
=
false
)
String
id
)
{
Cours
e
entity
=
null
;
Storag
e
entity
=
null
;
if
(
StringUtils
.
isNotBlank
(
id
)){
if
(
StringUtils
.
isNotBlank
(
id
)){
entity
=
cours
eService
.
get
(
id
);
entity
=
storag
eService
.
get
(
id
);
}
}
if
(
entity
==
null
){
if
(
entity
==
null
){
entity
=
new
Cours
e
();
entity
=
new
Storag
e
();
}
}
return
entity
;
return
entity
;
}
}
/**
/**
*
课程
列表页面
*
入库信息
列表页面
*/
*/
@RequiresPermissions
(
"
test:manytomany:cours
e:list"
)
@RequiresPermissions
(
"
warehouse:storage:storag
e:list"
)
@RequestMapping
(
value
=
{
"list"
,
""
})
@RequestMapping
(
value
=
{
"list"
,
""
})
public
String
list
(
Course
cours
e
,
Model
model
)
{
public
String
list
(
Storage
storag
e
,
Model
model
)
{
model
.
addAttribute
(
"
course"
,
cours
e
);
model
.
addAttribute
(
"
storage"
,
storag
e
);
return
"modules/
test/manytomany/cours
eList"
;
return
"modules/
warehouse/storage/storag
eList"
;
}
}
/**
/**
*
课程
列表数据
*
入库信息
列表数据
*/
*/
@ResponseBody
@ResponseBody
@RequiresPermissions
(
"
test:manytomany:cours
e:list"
)
@RequiresPermissions
(
"
warehouse:storage:storag
e:list"
)
@RequestMapping
(
value
=
"data"
)
@RequestMapping
(
value
=
"data"
)
public
Map
<
String
,
Object
>
data
(
Course
cours
e
,
HttpServletRequest
request
,
HttpServletResponse
response
,
Model
model
)
{
public
Map
<
String
,
Object
>
data
(
Storage
storag
e
,
HttpServletRequest
request
,
HttpServletResponse
response
,
Model
model
)
{
Page
<
Course
>
page
=
courseService
.
findPage
(
new
Page
<
Course
>(
request
,
response
),
cours
e
);
Page
<
Storage
>
page
=
storageService
.
findPage
(
new
Page
<
Storage
>(
request
,
response
),
storag
e
);
return
getBootstrapData
(
page
);
return
getBootstrapData
(
page
);
}
}
/**
/**
* 查看,增加,编辑
课程
表单页面
* 查看,增加,编辑
入库信息
表单页面
*/
*/
@RequiresPermissions
(
value
={
"
test:manytomany:course:view"
,
"test:manytomany:course:add"
,
"test:manytomany:cours
e:edit"
},
logical
=
Logical
.
OR
)
@RequiresPermissions
(
value
={
"
warehouse:storage:storage:view"
,
"warehouse:storage:storage:add"
,
"warehouse:storage:storag
e:edit"
},
logical
=
Logical
.
OR
)
@RequestMapping
(
value
=
"form/{mode}"
)
@RequestMapping
(
value
=
"form/{mode}"
)
public
String
form
(
@PathVariable
String
mode
,
Course
cours
e
,
Model
model
)
{
public
String
form
(
@PathVariable
String
mode
,
Storage
storag
e
,
Model
model
)
{
model
.
addAttribute
(
"
course"
,
cours
e
);
model
.
addAttribute
(
"
storage"
,
storag
e
);
model
.
addAttribute
(
"mode"
,
mode
);
model
.
addAttribute
(
"mode"
,
mode
);
return
"modules/
test/manytomany/cours
eForm"
;
return
"modules/
warehouse/storage/storag
eForm"
;
}
}
/**
/**
* 保存
课程
* 保存
入库信息
*/
*/
@ResponseBody
@ResponseBody
@RequiresPermissions
(
value
={
"
test:manytomany:course:add"
,
"test:manytomany:cours
e:edit"
},
logical
=
Logical
.
OR
)
@RequiresPermissions
(
value
={
"
warehouse:storage:storage:add"
,
"warehouse:storage:storag
e:edit"
},
logical
=
Logical
.
OR
)
@RequestMapping
(
value
=
"save"
)
@RequestMapping
(
value
=
"save"
)
public
AjaxJson
save
(
Course
cours
e
,
Model
model
)
throws
Exception
{
public
AjaxJson
save
(
Storage
storag
e
,
Model
model
)
throws
Exception
{
AjaxJson
j
=
new
AjaxJson
();
AjaxJson
j
=
new
AjaxJson
();
/**
/**
* 后台hibernate-validation插件校验
* 后台hibernate-validation插件校验
*/
*/
String
errMsg
=
beanValidator
(
cours
e
);
String
errMsg
=
beanValidator
(
storag
e
);
if
(
StringUtils
.
isNotBlank
(
errMsg
)){
if
(
StringUtils
.
isNotBlank
(
errMsg
)){
j
.
setSuccess
(
false
);
j
.
setSuccess
(
false
);
j
.
setMsg
(
errMsg
);
j
.
setMsg
(
errMsg
);
return
j
;
return
j
;
}
}
//新增或编辑表单保存
//新增或编辑表单保存
courseService
.
save
(
cours
e
);
//保存
storageService
.
save
(
storag
e
);
//保存
j
.
setSuccess
(
true
);
j
.
setSuccess
(
true
);
j
.
setMsg
(
"保存
课程
成功"
);
j
.
setMsg
(
"保存
入库信息
成功"
);
return
j
;
return
j
;
}
}
/**
/**
* 删除
课程
* 删除
入库信息
*/
*/
@ResponseBody
@ResponseBody
@RequiresPermissions
(
"
test:manytomany:cours
e:del"
)
@RequiresPermissions
(
"
warehouse:storage:storag
e:del"
)
@RequestMapping
(
value
=
"delete"
)
@RequestMapping
(
value
=
"delete"
)
public
AjaxJson
delete
(
Course
cours
e
)
{
public
AjaxJson
delete
(
Storage
storag
e
)
{
AjaxJson
j
=
new
AjaxJson
();
AjaxJson
j
=
new
AjaxJson
();
courseService
.
delete
(
cours
e
);
storageService
.
delete
(
storag
e
);
j
.
setMsg
(
"删除
课程
成功"
);
j
.
setMsg
(
"删除
入库信息
成功"
);
return
j
;
return
j
;
}
}
/**
/**
* 批量删除
课程
* 批量删除
入库信息
*/
*/
@ResponseBody
@ResponseBody
@RequiresPermissions
(
"
test:manytomany:cours
e:del"
)
@RequiresPermissions
(
"
warehouse:storage:storag
e:del"
)
@RequestMapping
(
value
=
"deleteAll"
)
@RequestMapping
(
value
=
"deleteAll"
)
public
AjaxJson
deleteAll
(
String
ids
)
{
public
AjaxJson
deleteAll
(
String
ids
)
{
AjaxJson
j
=
new
AjaxJson
();
AjaxJson
j
=
new
AjaxJson
();
String
idArray
[]
=
ids
.
split
(
","
);
String
idArray
[]
=
ids
.
split
(
","
);
for
(
String
id
:
idArray
){
for
(
String
id
:
idArray
){
courseService
.
delete
(
cours
eService
.
get
(
id
));
storageService
.
delete
(
storag
eService
.
get
(
id
));
}
}
j
.
setMsg
(
"删除
课程
成功"
);
j
.
setMsg
(
"删除
入库信息
成功"
);
return
j
;
return
j
;
}
}
...
@@ -148,30 +148,37 @@ public class CourseController extends BaseController {
...
@@ -148,30 +148,37 @@ public class CourseController extends BaseController {
* 导出excel文件
* 导出excel文件
*/
*/
@ResponseBody
@ResponseBody
@RequiresPermissions
(
"
test:manytomany:cours
e:export"
)
@RequiresPermissions
(
"
warehouse:storage:storag
e:export"
)
@RequestMapping
(
value
=
"export"
)
@RequestMapping
(
value
=
"export"
)
public
AjaxJson
exportFile
(
Course
cours
e
,
HttpServletRequest
request
,
HttpServletResponse
response
)
{
public
AjaxJson
exportFile
(
Storage
storag
e
,
HttpServletRequest
request
,
HttpServletResponse
response
)
{
AjaxJson
j
=
new
AjaxJson
();
AjaxJson
j
=
new
AjaxJson
();
try
{
try
{
String
fileName
=
"
课程
"
+
DateUtils
.
getDate
(
"yyyyMMddHHmmss"
)+
".xlsx"
;
String
fileName
=
"
入库信息
"
+
DateUtils
.
getDate
(
"yyyyMMddHHmmss"
)+
".xlsx"
;
Page
<
Course
>
page
=
courseService
.
findPage
(
new
Page
<
Course
>(
request
,
response
,
-
1
),
cours
e
);
Page
<
Storage
>
page
=
storageService
.
findPage
(
new
Page
<
Storage
>(
request
,
response
,
-
1
),
storag
e
);
new
ExportExcel
(
"
课程"
,
Cours
e
.
class
).
setDataList
(
page
.
getList
()).
write
(
response
,
fileName
).
dispose
();
new
ExportExcel
(
"
入库信息"
,
Storag
e
.
class
).
setDataList
(
page
.
getList
()).
write
(
response
,
fileName
).
dispose
();
j
.
setSuccess
(
true
);
j
.
setSuccess
(
true
);
j
.
setMsg
(
"导出成功!"
);
j
.
setMsg
(
"导出成功!"
);
return
j
;
return
j
;
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
j
.
setSuccess
(
false
);
j
.
setSuccess
(
false
);
j
.
setMsg
(
"导出
课程
记录失败!失败信息:"
+
e
.
getMessage
());
j
.
setMsg
(
"导出
入库信息
记录失败!失败信息:"
+
e
.
getMessage
());
}
}
return
j
;
return
j
;
}
}
@ResponseBody
@RequestMapping
(
value
=
"detail"
)
public
Storage
detail
(
String
id
)
{
return
storageService
.
get
(
id
);
}
/**
/**
* 导入Excel数据
* 导入Excel数据
*/
*/
@ResponseBody
@ResponseBody
@RequiresPermissions
(
"
test:manytomany:cours
e:import"
)
@RequiresPermissions
(
"
warehouse:storage:storag
e:import"
)
@RequestMapping
(
value
=
"import"
)
@RequestMapping
(
value
=
"import"
)
public
AjaxJson
importFile
(
@RequestParam
(
"file"
)
MultipartFile
file
,
HttpServletResponse
response
,
HttpServletRequest
request
)
{
public
AjaxJson
importFile
(
@RequestParam
(
"file"
)
MultipartFile
file
,
HttpServletResponse
response
,
HttpServletRequest
request
)
{
AjaxJson
j
=
new
AjaxJson
();
AjaxJson
j
=
new
AjaxJson
();
...
@@ -180,10 +187,10 @@ public class CourseController extends BaseController {
...
@@ -180,10 +187,10 @@ public class CourseController extends BaseController {
int
failureNum
=
0
;
int
failureNum
=
0
;
StringBuilder
failureMsg
=
new
StringBuilder
();
StringBuilder
failureMsg
=
new
StringBuilder
();
ImportExcel
ei
=
new
ImportExcel
(
file
,
1
,
0
);
ImportExcel
ei
=
new
ImportExcel
(
file
,
1
,
0
);
List
<
Course
>
list
=
ei
.
getDataList
(
Cours
e
.
class
);
List
<
Storage
>
list
=
ei
.
getDataList
(
Storag
e
.
class
);
for
(
Course
cours
e
:
list
){
for
(
Storage
storag
e
:
list
){
try
{
try
{
courseService
.
save
(
cours
e
);
storageService
.
save
(
storag
e
);
successNum
++;
successNum
++;
}
catch
(
ConstraintViolationException
ex
){
}
catch
(
ConstraintViolationException
ex
){
failureNum
++;
failureNum
++;
...
@@ -192,28 +199,28 @@ public class CourseController extends BaseController {
...
@@ -192,28 +199,28 @@ public class CourseController extends BaseController {
}
}
}
}
if
(
failureNum
>
0
){
if
(
failureNum
>
0
){
failureMsg
.
insert
(
0
,
",失败 "
+
failureNum
+
" 条
课程
记录。"
);
failureMsg
.
insert
(
0
,
",失败 "
+
failureNum
+
" 条
入库信息
记录。"
);
}
}
j
.
setMsg
(
"已成功导入 "
+
successNum
+
" 条
课程
记录"
+
failureMsg
);
j
.
setMsg
(
"已成功导入 "
+
successNum
+
" 条
入库信息
记录"
+
failureMsg
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
j
.
setSuccess
(
false
);
j
.
setSuccess
(
false
);
j
.
setMsg
(
"导入
课程
失败!失败信息:"
+
e
.
getMessage
());
j
.
setMsg
(
"导入
入库信息
失败!失败信息:"
+
e
.
getMessage
());
}
}
return
j
;
return
j
;
}
}
/**
/**
* 下载导入
课程
数据模板
* 下载导入
入库信息
数据模板
*/
*/
@ResponseBody
@ResponseBody
@RequiresPermissions
(
"
test:manytomany:cours
e:import"
)
@RequiresPermissions
(
"
warehouse:storage:storag
e:import"
)
@RequestMapping
(
value
=
"import/template"
)
@RequestMapping
(
value
=
"import/template"
)
public
AjaxJson
importFileTemplate
(
HttpServletResponse
response
)
{
public
AjaxJson
importFileTemplate
(
HttpServletResponse
response
)
{
AjaxJson
j
=
new
AjaxJson
();
AjaxJson
j
=
new
AjaxJson
();
try
{
try
{
String
fileName
=
"
课程
数据导入模板.xlsx"
;
String
fileName
=
"
入库信息
数据导入模板.xlsx"
;
List
<
Cours
e
>
list
=
Lists
.
newArrayList
();
List
<
Storag
e
>
list
=
Lists
.
newArrayList
();
new
ExportExcel
(
"
课程数据"
,
Cours
e
.
class
,
1
).
setDataList
(
list
).
write
(
response
,
fileName
).
dispose
();
new
ExportExcel
(
"
入库信息数据"
,
Storag
e
.
class
,
1
).
setDataList
(
list
).
write
(
response
,
fileName
).
dispose
();
return
null
;
return
null
;
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
j
.
setSuccess
(
false
);
j
.
setSuccess
(
false
);
...
@@ -221,5 +228,6 @@ public class CourseController extends BaseController {
...
@@ -221,5 +228,6 @@ public class CourseController extends BaseController {
}
}
return
j
;
return
j
;
}
}
}
}
\ No newline at end of file
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