master
wangh 11 months ago
parent d8db57ef15
commit 1afde55269

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 137 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

@ -7,7 +7,7 @@
<title>首页</title> <title>首页</title>
<!-- 避免IE使用兼容模式 --> <!-- 避免IE使用兼容模式 -->
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv="X-UA-Compatible" content="IE=edge">
<link th:href="@{favicon.ico}" rel="shortcut icon"/> <!-- <link th:href="@{favicon.ico}" rel="shortcut icon"/>-->
<link th:href="@{/css/bootstrap.min.css}" rel="stylesheet"/> <link th:href="@{/css/bootstrap.min.css}" rel="stylesheet"/>
<link th:href="@{/css/jquery.contextMenu.min.css}" rel="stylesheet"/> <link th:href="@{/css/jquery.contextMenu.min.css}" rel="stylesheet"/>
<link th:href="@{/css/font-awesome.min.css}" rel="stylesheet"/> <link th:href="@{/css/font-awesome.min.css}" rel="stylesheet"/>

@ -7,7 +7,7 @@
<title>RFID机场轮挡管理系统</title> <title>RFID机场轮挡管理系统</title>
<!-- 避免IE使用兼容模式 --> <!-- 避免IE使用兼容模式 -->
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv="X-UA-Compatible" content="IE=edge">
<link th:href="@{favicon.ico}" rel="shortcut icon"/> <!-- <link th:href="@{favicon.ico}" rel="shortcut icon"/>-->
<link th:href="@{/css/bootstrap.min.css}" rel="stylesheet"/> <link th:href="@{/css/bootstrap.min.css}" rel="stylesheet"/>
<link th:href="@{/css/jquery.contextMenu.min.css}" rel="stylesheet"/> <link th:href="@{/css/jquery.contextMenu.min.css}" rel="stylesheet"/>
<link th:href="@{/css/font-awesome.min.css}" rel="stylesheet"/> <link th:href="@{/css/font-awesome.min.css}" rel="stylesheet"/>

@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<!--360浏览器优先以webkit内核解析--> <!--360浏览器优先以webkit内核解析-->
<title>锁定屏幕</title> <title>锁定屏幕</title>
<link th:href="@{favicon.ico}" rel="shortcut icon"/> <!-- <link th:href="@{favicon.ico}" rel="shortcut icon"/>-->
<link href="../static/css/bootstrap.min.css" th:href="@{/css/bootstrap.min.css}" rel="stylesheet"/> <link href="../static/css/bootstrap.min.css" th:href="@{/css/bootstrap.min.css}" rel="stylesheet"/>
<link href="../static/css/font-awesome.min.css" th:href="@{/css/font-awesome.min.css}" rel="stylesheet"/> <link href="../static/css/font-awesome.min.css" th:href="@{/css/font-awesome.min.css}" rel="stylesheet"/>
<style>.lockscreen{background:#d2d6de;height:auto;}.lockscreen .lockscreen-name{text-align:center;font-weight:600;margin-top:50px;margin-bottom:30px;}.lockscreen-wrapper{max-width:400px;margin:10% auto;z-index:800;position:relative;}.lockscreen .lockscreen-name{text-align:center;font-weight:600;margin-top:50px;margin-bottom:30px;}.lockscreen-item{border-radius:4px;padding:0;background:#fff;position:relative;margin:10px auto 30px auto;width:290px}.lockscreen-image{border-radius:50%;position:absolute;left:-10px;top:-25px;background:#fff;padding:5px;z-index:10}.lockscreen-image>img{border-radius:50%;width:70px;height:70px}.lockscreen-credentials{margin-left:70px}.lockscreen-credentials .form-control{border:0}.lockscreen-credentials .btn{background-color:#fff;border:0;padding:0 10px}.lockscreen-footer{margin-top:150px}.lockscreen-time{width:100%;color:#fff;font-size:60px;display:inline-block;text-align:center;font-family:'Open Sans',sans-serif;font-weight:300;}</style> <style>.lockscreen{background:#d2d6de;height:auto;}.lockscreen .lockscreen-name{text-align:center;font-weight:600;margin-top:50px;margin-bottom:30px;}.lockscreen-wrapper{max-width:400px;margin:10% auto;z-index:800;position:relative;}.lockscreen .lockscreen-name{text-align:center;font-weight:600;margin-top:50px;margin-bottom:30px;}.lockscreen-item{border-radius:4px;padding:0;background:#fff;position:relative;margin:10px auto 30px auto;width:290px}.lockscreen-image{border-radius:50%;position:absolute;left:-10px;top:-25px;background:#fff;padding:5px;z-index:10}.lockscreen-image>img{border-radius:50%;width:70px;height:70px}.lockscreen-credentials{margin-left:70px}.lockscreen-credentials .form-control{border:0}.lockscreen-credentials .btn{background-color:#fff;border:0;padding:0 10px}.lockscreen-footer{margin-top:150px}.lockscreen-time{width:100%;color:#fff;font-size:60px;display:inline-block;text-align:center;font-family:'Open Sans',sans-serif;font-weight:300;}</style>

@ -14,7 +14,7 @@
<meta name="renderer" content="webkit"> <meta name="renderer" content="webkit">
<!-- 避免IE使用兼容模式 --> <!-- 避免IE使用兼容模式 -->
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="shortcut icon" href="../static/favicon.ico" th:href="@{favicon.ico}"/> <!-- <link rel="shortcut icon" href="../static/favicon.ico" th:href="@{favicon.ico}"/>-->
<style type="text/css">label.error { position:inherit; }</style> <style type="text/css">label.error { position:inherit; }</style>
<script> <script>
if(window.top!==window.self){alert('未登录或登录超时。请重新登录');window.top.location=window.location}; if(window.top!==window.self){alert('未登录或登录超时。请重新登录');window.top.location=window.location};

@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<!--360浏览器优先以webkit内核解析--> <!--360浏览器优先以webkit内核解析-->
<title></title> <title></title>
<link rel="shortcut icon" href="favicon.ico"> <!-- <link rel="shortcut icon" href="favicon.ico">-->
<link href="../static/css/bootstrap.min.css" th:href="@{/css/bootstrap.min.css}" rel="stylesheet"/> <link href="../static/css/bootstrap.min.css" th:href="@{/css/bootstrap.min.css}" rel="stylesheet"/>
<link href="../static/css/font-awesome.min.css" th:href="@{/css/font-awesome.min.css}" rel="stylesheet"/> <link href="../static/css/font-awesome.min.css" th:href="@{/css/font-awesome.min.css}" rel="stylesheet"/>
<link href="../static/css/style.min.css" th:href="@{/css/style.min.css}" rel="stylesheet"/> <link href="../static/css/style.min.css" th:href="@{/css/style.min.css}" rel="stylesheet"/>
@ -58,7 +58,7 @@
success: function(response) { success: function(response) {
console.log(response) console.log(response)
data = response.data; data = response.data;
if (data==1){ if (data>1){
// document.getElementById("tt1").innerText=data // document.getElementById("tt1").innerText=data
$("#tt1").text(data) $("#tt1").text(data)
$("#myModal").show(); $("#myModal").show();

@ -4,7 +4,7 @@
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>统计</title> <title>统计</title>
<link rel="shortcut icon" href="favicon.ico"> <!-- <link rel="shortcut icon" href="favicon.ico">-->
<link href="../static/css/bootstrap.min.css" th:href="@{/css/bootstrap.min.css}" rel="stylesheet"/> <link href="../static/css/bootstrap.min.css" th:href="@{/css/bootstrap.min.css}" rel="stylesheet"/>
<link href="../static/css/font-awesome.min.css" th:href="@{/css/font-awesome.min.css}" rel="stylesheet"/> <link href="../static/css/font-awesome.min.css" th:href="@{/css/font-awesome.min.css}" rel="stylesheet"/>
<link href="../static/css/animate.min.css" th:href="@{/css/animate.min.css}" rel="stylesheet"/> <link href="../static/css/animate.min.css" th:href="@{/css/animate.min.css}" rel="stylesheet"/>

@ -14,7 +14,7 @@
<meta name="renderer" content="webkit"> <meta name="renderer" content="webkit">
<!-- 避免IE使用兼容模式 --> <!-- 避免IE使用兼容模式 -->
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="shortcut icon" href="../static/favicon.ico" th:href="@{favicon.ico}"/> <!-- <link rel="shortcut icon" href="../static/favicon.ico" th:href="@{favicon.ico}"/>-->
<style type="text/css">label.error { position:inherit; }</style> <style type="text/css">label.error { position:inherit; }</style>
</head> </head>
<body class="signin"> <body class="signin">

@ -8,7 +8,7 @@
<!--[if lt IE 9]> <!--[if lt IE 9]>
<meta http-equiv="refresh" content="0;ie.html"/> <meta http-equiv="refresh" content="0;ie.html"/>
<![endif]--> <![endif]-->
<link rel="shortcut icon" href="../static/favicon.ico" th:href="@{favicon.ico}"/> <!-- <link rel="shortcut icon" href="../static/favicon.ico" th:href="@{favicon.ico}"/>-->
<link th:href="@{/css/bootstrap.min.css}" rel="stylesheet"/> <link th:href="@{/css/bootstrap.min.css}" rel="stylesheet"/>
<link th:href="@{/css/style.min.css}" rel="stylesheet"/> <link th:href="@{/css/style.min.css}" rel="stylesheet"/>
<style type="text/css"> <style type="text/css">

@ -17,10 +17,7 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.unit.DataUnit; import org.springframework.util.unit.DataUnit;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.HashMap; import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.Optional;
/** /**
@ -56,9 +53,28 @@ public class ApiController {
@PostMapping("/instore/submit") @PostMapping("/instore/submit")
public AjaxResult instoreSubmit(@RequestBody InStoreDto inStore) { public AjaxResult instoreSubmit(@RequestBody InStoreDto inStore) {
apiService.submintInsertRecordIn(inStore); List<String> epcList = inStore.getEpcList();
apiService.submintInsertLedger(inStore);
return success(); int size = epcList.size();
System.out.println("数据条数:"+size);
Iterator<String> iterator = epcList.iterator();
while (iterator.hasNext()) {
String epc = iterator.next();
String tag = apiService.selectLedgerbyEpcForInStore(epc);
if (tag != null) {
iterator.remove();
}
}
int size1 = epcList.size();
int i = size - size1;
if (size1>0){
apiService.submintInsertRecordIn(inStore);
apiService.submintInsertLedger(inStore);
}
return success("本次入库成功:" + size1 +"条,屏蔽重复入库:"+ i +"条");
} }
@ -73,9 +89,29 @@ public class ApiController {
@PostMapping("/outStore/submit") @PostMapping("/outStore/submit")
public AjaxResult outStoreSubmit(@RequestBody OutStoreDto outStoreDto) { public AjaxResult outStoreSubmit(@RequestBody OutStoreDto outStoreDto) {
apiService.submitInsertRecordOut(outStoreDto); try {
apiService.updataLedger(outStoreDto); List<String> epcList = outStoreDto.getEpcList();
return success(); int size = epcList.size();
Iterator<String> iterator = epcList.iterator();
while (iterator.hasNext()) {
String epc = iterator.next();
String tag = apiService.selectLedgerbyEpcForOutStore(epc);
if (tag != null) {
iterator.remove();
}
}
int size1 = epcList.size();
int i = size - size1;
if (i>0){
apiService.submitInsertRecordOut(outStoreDto);
apiService.updataLedger(outStoreDto);
}
return success("本次入库成功:" + size1 +"条,屏蔽重复入库:"+ i +"条");
}catch (Exception e){
return error();
}
} }
@PostMapping("/storecheck/select") @PostMapping("/storecheck/select")
@ -179,4 +215,25 @@ public class ApiController {
apiService.updataLedgerIn(epc, subCode); apiService.updataLedgerIn(epc, subCode);
return success(); return success();
} }
@PostMapping("/fpout/select")
public AjaxResult fpOutSelect() {
List<StockDto> list = apiService.fpOutSelect();
if (list == null || list.isEmpty()) {
return error("暂无废品库存");
}
return success(list);
}
@PostMapping("/fpout/submit")
public AjaxResult fpoutSubmit(String json, String user) {
try {
List<StockDto> list = JSONObject.parseArray(json, StockDto.class);
apiService.insertWasreOutRecord(list,user);
apiService.updataLedgerForWasreOut(list,user);
return success();
}catch (Exception e){
return error();
}
}
} }

@ -41,4 +41,14 @@ public interface ApiMapper {
void updataLedgerIn(@Param("epc") String epc,@Param("code") String locationCode); void updataLedgerIn(@Param("epc") String epc,@Param("code") String locationCode);
void insertInspectionInfo(@Param("list") List<StockDto> list,@Param("id") Long inspectionId); void insertInspectionInfo(@Param("list") List<StockDto> list,@Param("id") Long inspectionId);
List<StockDto> fpOutSelect();
void insertWasreOutRecord(@Param("list") List<StockDto> list,@Param("user") String user);
void updataLedgerForWasreOut(@Param("list")List<StockDto> list);
String selectLedgerbyEpcForInStore(String epc);
String selectLedgerbyEpcForOutStore(String epc);
} }

@ -7,6 +7,7 @@ import com.ruoyi.api.mapper.ApiMapper;
import com.ruoyi.manage.domain.LedgerRfid; import com.ruoyi.manage.domain.LedgerRfid;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List; import java.util.List;
@ -18,11 +19,11 @@ import java.util.List;
public class ApiService { public class ApiService {
@Autowired @Autowired
private ApiMapper mapper; private ApiMapper mapper;
@Transactional
public int submintInsertRecordIn(InStoreDto inStore) { public int submintInsertRecordIn(InStoreDto inStore) {
return mapper.submintInsertRecordIn(inStore); return mapper.submintInsertRecordIn(inStore);
} }
@Transactional
public int submintInsertLedger(InStoreDto inStore) { public int submintInsertLedger(InStoreDto inStore) {
return mapper.submintInsertLedger(inStore); return mapper.submintInsertLedger(inStore);
} }
@ -70,4 +71,24 @@ public class ApiService {
public void insertInspectionInfo(List<StockDto> list, Long inspectionId) { public void insertInspectionInfo(List<StockDto> list, Long inspectionId) {
mapper.insertInspectionInfo(list,inspectionId); mapper.insertInspectionInfo(list,inspectionId);
} }
public List<StockDto> fpOutSelect() {
return mapper.fpOutSelect();
}
@Transactional
public void insertWasreOutRecord(List<StockDto> list, String user) {
mapper.insertWasreOutRecord(list,user);
}
@Transactional
public void updataLedgerForWasreOut(List<StockDto> list, String user) {
mapper.updataLedgerForWasreOut(list);
}
public String selectLedgerbyEpcForInStore(String epc) {
return mapper.selectLedgerbyEpcForInStore(epc);
}
public String selectLedgerbyEpcForOutStore(String epc) {
return mapper.selectLedgerbyEpcForOutStore(epc);
}
} }

@ -2,6 +2,17 @@
<!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.ruoyi.api.mapper.ApiMapper"> <mapper namespace="com.ruoyi.api.mapper.ApiMapper">
<select id="selectLedgerbyEpcForOutStore" resultType="string">
select rifd_code from ledger_rfid where rifd_code = #{epc}
and is_scrap = 1
and location_type = '1'
limit 1
</select>
<select id="selectLedgerbyEpcForInStore" resultType="string">
select rifd_code from ledger_rfid where rifd_code = #{epc} limit 1
</select>
<insert id="submintInsertRecordIn"> <insert id="submintInsertRecordIn">
INSERT ignore into bg_wheel_chocks.record_in (epc_code, batch_code, location_code,manufacturer_id, INSERT ignore into bg_wheel_chocks.record_in (epc_code, batch_code, location_code,manufacturer_id,
manufacturer_Name, manufacturer_Name,
@ -11,6 +22,9 @@
(#{item},#{inStore.binchCode},#{inStore.selectLocationText},#{inStore.manufacturerId},#{inStore.selectManuText},#{inStore.submitUser},now()) (#{item},#{inStore.binchCode},#{inStore.selectLocationText},#{inStore.manufacturerId},#{inStore.selectManuText},#{inStore.submitUser},now())
</foreach> </foreach>
</insert> </insert>
<insert id="submintInsertLedger"> <insert id="submintInsertLedger">
INSERT ignore into bg_wheel_chocks.ledger_rfid (manufacturer_id, rifd_code, batch_code, location_code) INSERT ignore into bg_wheel_chocks.ledger_rfid (manufacturer_id, rifd_code, batch_code, location_code)
VALUES VALUES
@ -60,14 +74,14 @@
<select id="xjSelect" resultType="com.ruoyi.api.domain.StockDto"> <select id="xjSelect" resultType="com.ruoyi.api.domain.StockDto">
select row_number() over (order by lf.location_code) as 'index', select row_number() over (order by lf.location_code) as 'index',
rifd_code as epcCode, rifd_code as epcCode,
lf.location_code as locationCode, lf.location_code as locationCode,
lf.create_time as createTime, lf.create_time as createTime,
'未检' as state '未检' as state
from ledger_rfid lf from ledger_rfid lf
left join base_location bl on lf.location_code = bl.location_code left join base_location bl on lf.location_code = bl.location_code
left join base_area_user bau on bl.store_id = bau.area_id left join base_area_user bau on bl.store_id = bau.area_id
where user_id=#{user} where user_id = #{user}
and is_scrap = 1 and is_scrap = 1
</select> </select>
@ -81,13 +95,13 @@
dict_label dict_label
from ledger_rfid lf from ledger_rfid lf
left join sys_dict_data sdd on sdd.dict_value = is_scrap and sdd.dict_type = 'bf_y_n' left join sys_dict_data sdd on sdd.dict_value = is_scrap and sdd.dict_type = 'bf_y_n'
where rifd_code =#{epc} where rifd_code = #{epc}
</select> </select>
<update id="updataLedgerForBf" > <update id="updataLedgerForBf">
UPDATE bg_wheel_chocks.ledger_rfid UPDATE bg_wheel_chocks.ledger_rfid
SET is_scrap = #{state}, SET is_scrap = #{state},
update_time=now() update_time=now()
WHERE rifd_code =#{epc} WHERE rifd_code = #{epc}
</update> </update>
<select id="fpInSelect" resultMap="com.ruoyi.manage.mapper.LedgerRfidMapper.LedgerRfidResult"> <select id="fpInSelect" resultMap="com.ruoyi.manage.mapper.LedgerRfidMapper.LedgerRfidResult">
@ -95,35 +109,68 @@
batch_code, batch_code,
sdd1.dict_label as location_type, sdd1.dict_label as location_type,
location_code, location_code,
sdd. dict_label, sdd.dict_label,
ri.create_time ri.create_time
from ledger_rfid lf from ledger_rfid lf
left join sys_dict_data sdd on sdd.dict_value = is_scrap and sdd.dict_type = 'bf_y_n' left join sys_dict_data sdd on sdd.dict_value = is_scrap and sdd.dict_type = 'bf_y_n'
left join sys_dict_data sdd1 on sdd1.dict_value = location_type and sdd1.dict_type = 'store_tag' left join sys_dict_data sdd1 on sdd1.dict_value = location_type and sdd1.dict_type = 'store_tag'
left join bg_wheel_chocks.record_invalidated ri on lf.rifd_code = ri.epc left join bg_wheel_chocks.record_invalidated ri on lf.rifd_code = ri.epc
where rifd_code = #{epc} limit 1 where rifd_code = #{epc}
limit 1
</select> </select>
<insert id="fpInSubmit" > <insert id="fpInSubmit">
INSERT INTO record_waste_in (epc, location_code, bf_time, in_code, create_by) INSERT INTO record_waste_in (epc, location_code, bf_time, in_code, create_by)
VALUES (#{epc}, #{localtionCode},#{bf},#{subCode},#{user}); VALUES (#{epc}, #{localtionCode}, #{bf}, #{subCode}, #{user});
</insert> </insert>
<update id="updataLedgerIn"> <update id="updataLedgerIn">
UPDATE ledger_rfid UPDATE ledger_rfid
SET location_type = '1', SET location_type = '1',
location_code = #{code}, location_code = #{code},
update_time = now() update_time = now()
WHERE rifd_code =#{epc} WHERE rifd_code = #{epc}
</update> </update>
<insert id="insertInspectionInfo" > <insert id="insertInspectionInfo">
INSERT INTO record_inspection_info (inspection_id, epc_code, location_code, inspection_state, INSERT INTO record_inspection_info (inspection_id, epc_code, location_code, inspection_state,
inspection_remark) inspection_remark)
VALUES VALUES
<foreach collection="list" item="item" separator=","> <foreach collection="list" item="item" separator=",">
(#{id}, #{item.epcCode},#{item.locationCode},#{item.state}, #{item.remark}) (#{id}, #{item.epcCode},#{item.locationCode},#{item.state}, #{item.remark})
</foreach> </foreach>
</insert>
<select id="fpOutSelect" resultType="com.ruoyi.api.domain.StockDto">
select row_number() over (order by location_code) as 'index',
rifd_code as epcCode,
location_code as locationCode,
'N' as state
from ledger_rfid
where location_type = 1
and is_scrap = 2
</select>
<insert id="insertWasreOutRecord">
INSERT INTO bg_wheel_chocks.record_waste_out (epc_code, location_code, create_by) VALUES
<foreach collection="list" item="item" separator=",">
( #{item.epcCode},#{item.locationCode},#{user})
</foreach>
</insert> </insert>
<update id="updataLedgerForWasreOut" >
UPDATE bg_wheel_chocks.ledger_rfid
SET location_type = null,
location_code = null,
is_scrap = '3',
update_time = now()
<where>
rifd_code in
<foreach item="item" collection="list" open="(" separator="," close=")">
#{item.epcCode}
</foreach>
</where>
</update>
</mapper> </mapper>

@ -0,0 +1,127 @@
package com.ruoyi.manage.controller;
import java.util.List;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.manage.domain.RecordWasteOut;
import com.ruoyi.manage.service.IRecordWasteOutService;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
/**
* Controller
*
* @author wangh
* @date 2024-02-21
*/
@Controller
@RequestMapping("/manage/record_waste_out")
public class RecordWasteOutController extends BaseController
{
private String prefix = "manage/record_waste_out";
@Autowired
private IRecordWasteOutService recordWasteOutService;
@RequiresPermissions("manage:record_waste_out:view")
@GetMapping()
public String record_waste_out()
{
return prefix + "/record_waste_out";
}
/**
*
*/
@RequiresPermissions("manage:record_waste_out:list")
@PostMapping("/list")
@ResponseBody
public TableDataInfo list(RecordWasteOut recordWasteOut)
{
startPage();
List<RecordWasteOut> list = recordWasteOutService.selectRecordWasteOutList(recordWasteOut);
return getDataTable(list);
}
/**
*
*/
@RequiresPermissions("manage:record_waste_out:export")
@Log(title = "废品处理出库", businessType = BusinessType.EXPORT)
@PostMapping("/export")
@ResponseBody
public AjaxResult export(RecordWasteOut recordWasteOut)
{
List<RecordWasteOut> list = recordWasteOutService.selectRecordWasteOutList(recordWasteOut);
ExcelUtil<RecordWasteOut> util = new ExcelUtil<RecordWasteOut>(RecordWasteOut.class);
return util.exportExcel(list, "废品处理出库数据");
}
/**
*
*/
@GetMapping("/add")
public String add()
{
return prefix + "/add";
}
/**
*
*/
@RequiresPermissions("manage:record_waste_out:add")
@Log(title = "废品处理出库", businessType = BusinessType.INSERT)
@PostMapping("/add")
@ResponseBody
public AjaxResult addSave(RecordWasteOut recordWasteOut)
{
return toAjax(recordWasteOutService.insertRecordWasteOut(recordWasteOut));
}
/**
*
*/
@RequiresPermissions("manage:record_waste_out:edit")
@GetMapping("/edit/{objid}")
public String edit(@PathVariable("objid") Long objid, ModelMap mmap)
{
RecordWasteOut recordWasteOut = recordWasteOutService.selectRecordWasteOutByObjid(objid);
mmap.put("recordWasteOut", recordWasteOut);
return prefix + "/edit";
}
/**
*
*/
@RequiresPermissions("manage:record_waste_out:edit")
@Log(title = "废品处理出库", businessType = BusinessType.UPDATE)
@PostMapping("/edit")
@ResponseBody
public AjaxResult editSave(RecordWasteOut recordWasteOut)
{
return toAjax(recordWasteOutService.updateRecordWasteOut(recordWasteOut));
}
/**
*
*/
@RequiresPermissions("manage:record_waste_out:remove")
@Log(title = "废品处理出库", businessType = BusinessType.DELETE)
@PostMapping( "/remove")
@ResponseBody
public AjaxResult remove(String ids)
{
return toAjax(recordWasteOutService.deleteRecordWasteOutByObjids(ids));
}
}

@ -0,0 +1,67 @@
package com.ruoyi.manage.domain;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* record_waste_out
*
* @author wangh
* @date 2024-02-21
*/
public class RecordWasteOut extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 主键 */
private Long objid;
/** RFID */
@Excel(name = "RFID")
private String epcCode;
/** 原存储库位 */
@Excel(name = "原存储库位")
private String locationCode;
public void setObjid(Long objid)
{
this.objid = objid;
}
public Long getObjid()
{
return objid;
}
public void setEpcCode(String epcCode)
{
this.epcCode = epcCode;
}
public String getEpcCode()
{
return epcCode;
}
public void setLocationCode(String locationCode)
{
this.locationCode = locationCode;
}
public String getLocationCode()
{
return locationCode;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("objid", getObjid())
.append("epcCode", getEpcCode())
.append("locationCode", getLocationCode())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.toString();
}
}

@ -0,0 +1,62 @@
package com.ruoyi.manage.mapper;
import java.util.List;
import com.ruoyi.manage.domain.RecordWasteOut;
import org.springframework.stereotype.Repository;
/**
* Mapper
*
* @author wangh
* @date 2024-02-21
*/
@Repository
public interface RecordWasteOutMapper
{
/**
*
*
* @param objid
* @return
*/
public RecordWasteOut selectRecordWasteOutByObjid(Long objid);
/**
*
*
* @param recordWasteOut
* @return
*/
public List<RecordWasteOut> selectRecordWasteOutList(RecordWasteOut recordWasteOut);
/**
*
*
* @param recordWasteOut
* @return
*/
public int insertRecordWasteOut(RecordWasteOut recordWasteOut);
/**
*
*
* @param recordWasteOut
* @return
*/
public int updateRecordWasteOut(RecordWasteOut recordWasteOut);
/**
*
*
* @param objid
* @return
*/
public int deleteRecordWasteOutByObjid(Long objid);
/**
*
*
* @param objids
* @return
*/
public int deleteRecordWasteOutByObjids(String[] objids);
}

@ -0,0 +1,61 @@
package com.ruoyi.manage.service;
import java.util.List;
import com.ruoyi.manage.domain.RecordWasteOut;
/**
* Service
*
* @author wangh
* @date 2024-02-21
*/
public interface IRecordWasteOutService
{
/**
*
*
* @param objid
* @return
*/
public RecordWasteOut selectRecordWasteOutByObjid(Long objid);
/**
*
*
* @param recordWasteOut
* @return
*/
public List<RecordWasteOut> selectRecordWasteOutList(RecordWasteOut recordWasteOut);
/**
*
*
* @param recordWasteOut
* @return
*/
public int insertRecordWasteOut(RecordWasteOut recordWasteOut);
/**
*
*
* @param recordWasteOut
* @return
*/
public int updateRecordWasteOut(RecordWasteOut recordWasteOut);
/**
*
*
* @param objids
* @return
*/
public int deleteRecordWasteOutByObjids(String objids);
/**
*
*
* @param objid
* @return
*/
public int deleteRecordWasteOutByObjid(Long objid);
}

@ -0,0 +1,93 @@
package com.ruoyi.manage.service.impl;
import java.util.List;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.ShiroUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.manage.mapper.RecordWasteOutMapper;
import com.ruoyi.manage.domain.RecordWasteOut;
import com.ruoyi.manage.service.IRecordWasteOutService;
import com.ruoyi.common.core.text.Convert;
/**
* Service
*
* @author wangh
* @date 2024-02-21
*/
@Service
public class RecordWasteOutServiceImpl implements IRecordWasteOutService {
@Autowired
private RecordWasteOutMapper recordWasteOutMapper;
/**
*
*
* @param objid
* @return
*/
@Override
public RecordWasteOut selectRecordWasteOutByObjid(Long objid) {
return recordWasteOutMapper.selectRecordWasteOutByObjid(objid);
}
/**
*
*
* @param recordWasteOut
* @return
*/
@Override
public List<RecordWasteOut> selectRecordWasteOutList(RecordWasteOut recordWasteOut) {
return recordWasteOutMapper.selectRecordWasteOutList(recordWasteOut);
}
/**
*
*
* @param recordWasteOut
* @return
*/
@Override
public int insertRecordWasteOut(RecordWasteOut recordWasteOut) {
recordWasteOut.setCreateBy(ShiroUtils.getLoginName());
recordWasteOut.setCreateTime(DateUtils.getNowDate());
return recordWasteOutMapper.insertRecordWasteOut(recordWasteOut);
}
/**
*
*
* @param recordWasteOut
* @return
*/
@Override
public int updateRecordWasteOut(RecordWasteOut recordWasteOut) {
return recordWasteOutMapper.updateRecordWasteOut(recordWasteOut);
}
/**
*
*
* @param objids
* @return
*/
@Override
public int deleteRecordWasteOutByObjids(String objids) {
return recordWasteOutMapper.deleteRecordWasteOutByObjids(Convert.toStrArray(objids));
}
/**
*
*
* @param objid
* @return
*/
@Override
public int deleteRecordWasteOutByObjid(Long objid) {
return recordWasteOutMapper.deleteRecordWasteOutByObjid(objid);
}
}

@ -1,6 +1,6 @@
-- 菜单 SQL -- 菜单 SQL
insert into sys_menu (menu_name, parent_id, order_num, url, menu_type, visible, perms, icon, create_by, create_time, update_by, update_time, remark) insert into sys_menu (menu_name, parent_id, order_num, url, menu_type, visible, perms, icon, create_by, create_time, update_by, update_time, remark)
values('废品入库记录', '2026', '6', '/manage/record_waste_in', 'C', '0', 'manage:record_waste_in:view', '#', 'admin', sysdate(), '', null, '废品入库记录菜单'); values('废品入库记录', '2026', '8', '/manage/record_waste_in', 'C', '0', 'manage:record_waste_in:view', '#', 'admin', sysdate(), '', null, '废品入库记录菜单');
-- 按钮父菜单ID -- 按钮父菜单ID
SELECT @parentId := LAST_INSERT_ID(); SELECT @parentId := LAST_INSERT_ID();

@ -0,0 +1,22 @@
-- 菜单 SQL
insert into sys_menu (menu_name, parent_id, order_num, url, menu_type, visible, perms, icon, create_by, create_time, update_by, update_time, remark)
values('废品处理出库', '2026', '8', '/manage/record_waste_out', 'C', '0', 'manage:record_waste_out:view', '#', 'admin', sysdate(), '', null, '废品处理出库菜单');
-- 按钮父菜单ID
SELECT @parentId := LAST_INSERT_ID();
-- 按钮 SQL
insert into sys_menu (menu_name, parent_id, order_num, url, menu_type, visible, perms, icon, create_by, create_time, update_by, update_time, remark)
values('废品处理出库查询', @parentId, '1', '#', 'F', '0', 'manage:record_waste_out:list', '#', 'admin', sysdate(), '', null, '');
insert into sys_menu (menu_name, parent_id, order_num, url, menu_type, visible, perms, icon, create_by, create_time, update_by, update_time, remark)
values('废品处理出库新增', @parentId, '2', '#', 'F', '0', 'manage:record_waste_out:add', '#', 'admin', sysdate(), '', null, '');
insert into sys_menu (menu_name, parent_id, order_num, url, menu_type, visible, perms, icon, create_by, create_time, update_by, update_time, remark)
values('废品处理出库修改', @parentId, '3', '#', 'F', '0', 'manage:record_waste_out:edit', '#', 'admin', sysdate(), '', null, '');
insert into sys_menu (menu_name, parent_id, order_num, url, menu_type, visible, perms, icon, create_by, create_time, update_by, update_time, remark)
values('废品处理出库删除', @parentId, '4', '#', 'F', '0', 'manage:record_waste_out:remove', '#', 'admin', sysdate(), '', null, '');
insert into sys_menu (menu_name, parent_id, order_num, url, menu_type, visible, perms, icon, create_by, create_time, update_by, update_time, remark)
values('废品处理出库导出', @parentId, '5', '#', 'F', '0', 'manage:record_waste_out:export', '#', 'admin', sysdate(), '', null, '');

@ -33,7 +33,7 @@
<if test="params.beginInspectionTime != null and params.beginInspectionTime != '' and params.endInspectionTime != null and params.endInspectionTime != ''"> <if test="params.beginInspectionTime != null and params.beginInspectionTime != '' and params.endInspectionTime != null and params.endInspectionTime != ''">
and inspection_time between #{params.beginInspectionTime} and #{params.endInspectionTime} and inspection_time between #{params.beginInspectionTime} and #{params.endInspectionTime}
</if> </if>
<if test="inspectionUser != null ">and inspection_user = #{inspectionUser}</if> <if test="inspectionUser != null and inspectionUser != '' ">and inspection_user = #{inspectionUser}</if>
</where> </where>
group by ri.inspection_id group by ri.inspection_id
</select> </select>

@ -0,0 +1,71 @@
<?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.ruoyi.manage.mapper.RecordWasteOutMapper">
<resultMap type="RecordWasteOut" id="RecordWasteOutResult">
<result property="objid" column="objid" />
<result property="epcCode" column="epc_code" />
<result property="locationCode" column="location_code" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
</resultMap>
<sql id="selectRecordWasteOutVo">
select objid, epc_code, location_code, create_by, create_time from record_waste_out
</sql>
<select id="selectRecordWasteOutList" parameterType="RecordWasteOut" resultMap="RecordWasteOutResult">
<include refid="selectRecordWasteOutVo"/>
<where>
<if test="epcCode != null and epcCode != ''"> and epc_code = #{epcCode}</if>
<if test="createBy != null and createBy != ''"> and create_by = #{createBy}</if>
<if test="params.beginCreateTime != null and params.beginCreateTime != '' and params.endCreateTime != null and params.endCreateTime != ''"> and create_time between #{params.beginCreateTime} and #{params.endCreateTime}</if>
</where>
</select>
<select id="selectRecordWasteOutByObjid" parameterType="Long" resultMap="RecordWasteOutResult">
<include refid="selectRecordWasteOutVo"/>
where objid = #{objid}
</select>
<insert id="insertRecordWasteOut" parameterType="RecordWasteOut" useGeneratedKeys="true" keyProperty="objid">
insert into record_waste_out
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="epcCode != null">epc_code,</if>
<if test="locationCode != null">location_code,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="epcCode != null">#{epcCode},</if>
<if test="locationCode != null">#{locationCode},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
</trim>
</insert>
<update id="updateRecordWasteOut" parameterType="RecordWasteOut">
update record_waste_out
<trim prefix="SET" suffixOverrides=",">
<if test="epcCode != null">epc_code = #{epcCode},</if>
<if test="locationCode != null">location_code = #{locationCode},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
</trim>
where objid = #{objid}
</update>
<delete id="deleteRecordWasteOutByObjid" parameterType="Long">
delete from record_waste_out where objid = #{objid}
</delete>
<delete id="deleteRecordWasteOutByObjids" parameterType="String">
delete from record_waste_out where objid in
<foreach item="objid" collection="array" open="(" separator="," close=")">
#{objid}
</foreach>
</delete>
</mapper>

@ -60,6 +60,8 @@
removeUrl: prefix + "/remove", removeUrl: prefix + "/remove",
exportUrl: prefix + "/export", exportUrl: prefix + "/export",
modalName: "轮挡入库记录", modalName: "轮挡入库记录",
sortName: "createTime",
sortOrder: "desc",
columns: [{ columns: [{
checkbox: true checkbox: true
}, },

@ -62,6 +62,8 @@
removeUrl: prefix + "/remove", removeUrl: prefix + "/remove",
exportUrl: prefix + "/export", exportUrl: prefix + "/export",
modalName: "巡检记录", modalName: "巡检记录",
sortOrder: "desc",
sortName : "inspectionTime",
detailView: true, detailView: true,
onExpandRow: function (index, row, $detail) { onExpandRow: function (index, row, $detail) {
initinspectionTable(index, row, $detail); initinspectionTable(index, row, $detail);
@ -100,7 +102,7 @@
}, },
/* { /* {
title: '操作', title: '操作',
align: 'center', align: 'center',
formatter: function(value, row, index) { formatter: function(value, row, index) {

@ -66,6 +66,8 @@
removeUrl: prefix + "/remove", removeUrl: prefix + "/remove",
exportUrl: prefix + "/export", exportUrl: prefix + "/export",
modalName: "轮挡报废记录", modalName: "轮挡报废记录",
sortOrder: "desc",
sortName : "createTime",
columns: [{ columns: [{
checkbox: true checkbox: true
}, },

@ -60,6 +60,8 @@
removeUrl: prefix + "/remove", removeUrl: prefix + "/remove",
exportUrl: prefix + "/export", exportUrl: prefix + "/export",
modalName: "轮挡出库记录", modalName: "轮挡出库记录",
sortName:"createTime" ,
sortOrder: "desc",
columns: [{ columns: [{
checkbox: true checkbox: true
}, },

@ -0,0 +1,37 @@
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
<head>
<th:block th:include="include :: header('新增废品处理出库')" />
</head>
<body class="white-bg">
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
<form class="form-horizontal m" id="form-record_waste_out-add">
<div class="form-group">
<label class="col-sm-3 control-label">RFID</label>
<div class="col-sm-8">
<input name="epcCode" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">原存储库位:</label>
<div class="col-sm-8">
<input name="locationCode" class="form-control" type="text">
</div>
</div>
</form>
</div>
<th:block th:include="include :: footer" />
<script th:inline="javascript">
var prefix = ctx + "manage/record_waste_out"
$("#form-record_waste_out-add").validate({
focusCleanup: true
});
function submitHandler() {
if ($.validate.form()) {
$.operate.save(prefix + "/add", $('#form-record_waste_out-add').serialize());
}
}
</script>
</body>
</html>

@ -0,0 +1,38 @@
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
<head>
<th:block th:include="include :: header('修改废品处理出库')" />
</head>
<body class="white-bg">
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
<form class="form-horizontal m" id="form-record_waste_out-edit" th:object="${recordWasteOut}">
<input name="objid" th:field="*{objid}" type="hidden">
<div class="form-group">
<label class="col-sm-3 control-label">RFID</label>
<div class="col-sm-8">
<input name="epcCode" th:field="*{epcCode}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">原存储库位:</label>
<div class="col-sm-8">
<input name="locationCode" th:field="*{locationCode}" class="form-control" type="text">
</div>
</div>
</form>
</div>
<th:block th:include="include :: footer" />
<script th:inline="javascript">
var prefix = ctx + "manage/record_waste_out";
$("#form-record_waste_out-edit").validate({
focusCleanup: true
});
function submitHandler() {
if ($.validate.form()) {
$.operate.save(prefix + "/edit", $('#form-record_waste_out-edit').serialize());
}
}
</script>
</body>
</html>

@ -0,0 +1,108 @@
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
<head>
<th:block th:include="include :: header('废品处理出库列表')" />
</head>
<body class="gray-bg">
<div class="container-div">
<div class="row">
<div class="col-sm-12 search-collapse">
<form id="formId">
<div class="select-list">
<ul>
<li>
<label>RFID</label>
<input type="text" name="epcCode"/>
</li>
<li>
<label>出库人:</label>
<input type="text" name="createBy"/>
</li>
<li class="select-time">
<label>出库时间:</label>
<input type="text" class="time-input" id="startTime" placeholder="开始时间" name="params[beginCreateTime]"/>
<span>-</span>
<input type="text" class="time-input" id="endTime" placeholder="结束时间" name="params[endCreateTime]"/>
</li>
<li>
<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i>&nbsp;搜索</a>
<a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i class="fa fa-refresh"></i>&nbsp;重置</a>
</li>
</ul>
</div>
</form>
</div>
<div class="btn-group-sm" id="toolbar" role="group">
<a class="btn btn-success" onclick="$.operate.add()" shiro:hasPermission="manage:record_waste_out:add">
<i class="fa fa-plus"></i> 添加
</a>
<a class="btn btn-primary single disabled" onclick="$.operate.edit()" shiro:hasPermission="manage:record_waste_out:edit">
<i class="fa fa-edit"></i> 修改
</a>
<a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()" shiro:hasPermission="manage:record_waste_out:remove">
<i class="fa fa-remove"></i> 删除
</a>
<a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="manage:record_waste_out:export">
<i class="fa fa-download"></i> 导出
</a>
</div>
<div class="col-sm-12 select-table table-striped">
<table id="bootstrap-table"></table>
</div>
</div>
</div>
<th:block th:include="include :: footer" />
<script th:inline="javascript">
var editFlag = [[${@permission.hasPermi('manage:record_waste_out:edit')}]];
var removeFlag = [[${@permission.hasPermi('manage:record_waste_out:remove')}]];
var prefix = ctx + "manage/record_waste_out";
$(function() {
var options = {
url: prefix + "/list",
createUrl: prefix + "/add",
updateUrl: prefix + "/edit/{id}",
removeUrl: prefix + "/remove",
exportUrl: prefix + "/export",
modalName: "废品处理出库",
columns: [{
checkbox: true
},
{
field: 'objid',
title: '主键',
visible: false
},
{
field: 'epcCode',
title: 'RFID'
},
{
field: 'locationCode',
title: '原存储库位'
},
{
field: 'createBy',
title: '出库人'
},
{
field: 'createTime',
title: '出库时间'
},
{
title: '操作',
align: 'center',
formatter: function(value, row, index) {
var actions = [];
actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.objid + '\')"><i class="fa fa-edit"></i>编辑</a> ');
actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.objid + '\')"><i class="fa fa-remove"></i>删除</a>');
return actions.join('');
}
}]
};
$.table.init(options);
});
</script>
</body>
</html>

@ -9,7 +9,7 @@
<script src="https://cdnjs.cloudflare.com/ajax/libs/tether/1.4.0/js/tether.min.js" integrity="sha384-DztdAPBWPRXSA/3eYEEUWrWCy7G5KFbe8fFjk5JAIxUYHKkDx6Qin1DkWx51bBrb" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/tether/1.4.0/js/tether.min.js" integrity="sha384-DztdAPBWPRXSA/3eYEEUWrWCy7G5KFbe8fFjk5JAIxUYHKkDx6Qin1DkWx51bBrb" crossorigin="anonymous"></script>
<!--<script src="https://code.jquery.com/jquery-3.1.1.slim.min.js" integrity="sha384-A7FZj7v+d/sdmMqp/nOQwliLvUsJfDHW+k9Omg/a/EheAdgtzNs3hpfag6Ed950n" crossorigin="anonymous"></script>--> <!--<script src="https://code.jquery.com/jquery-3.1.1.slim.min.js" integrity="sha384-A7FZj7v+d/sdmMqp/nOQwliLvUsJfDHW+k9Omg/a/EheAdgtzNs3hpfag6Ed950n" crossorigin="anonymous"></script>-->
<!--<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/js/bootstrap.min.js" integrity="sha384-vBWWzlZJ8ea9aCX4pEW3rVHjgjt7zpkNpZk+02D9phzyeVkE+jo0ieGizqPLForn" crossorigin="anonymous"></script>--> <!--<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/js/bootstrap.min.js" integrity="sha384-vBWWzlZJ8ea9aCX4pEW3rVHjgjt7zpkNpZk+02D9phzyeVkE+jo0ieGizqPLForn" crossorigin="anonymous"></script>-->
<link rel="shortcut icon" href="https://www.dbschema.com/images/favicon.ico"> <!--<link rel="shortcut icon" href="https://www.dbschema.com/images/favicon.ico">-->
<style type='text/css'> <style type='text/css'>
body { body {
font-family: 'Segoe UI', 'Lucida sans', Dialog; font-family: 'Segoe UI', 'Lucida sans', Dialog;

Loading…
Cancel
Save