从jsh远程仓库更新

(cherry picked from commit 36139e26a4)
This commit is contained in:
cjl 2019-01-15 11:48:38 +08:00
parent 1e1e5f6ed5
commit 693a7558ba
39 changed files with 12153 additions and 10992 deletions

View File

@ -16,22 +16,20 @@
* 日志管理Log4j 1.2.16
* JS框架Jquery 1.8.0
* UI框架: EasyUI 1.3.5
* 桌面框架: HoorayOS
* 项目管理框架: Maven3.2.3
* 桌面框架: HoorayOS 2.0.0
* 项目管理框架: Maven 3.2.3
# 开发环境
建议开发者使用以下环境,可以避免版本带来的问题
* IDE: MyEclipse8.5+/Eclipse4.4+
* DB: Mysql5.1
* JDK: JDK1.7+
* WEB: Tomcat6.0+
* IDE: IntelliJ IDEA 2017+
* DB: Mysql5.7.4
* JDK: JDK1.8
* Maven: Maven3.2.3+
* 为方便大家搭建开发环境,分享了下载地址 **http://pan.baidu.com/s/1nuKnlNV**
# 运行环境
* WEB服务器Tomcat6.0+
* 数据库服务器Mysql5.1
* JAVA平台: JRE1.7+
* 数据库服务器Mysql5.7.4
* JAVA平台: JRE1.8
* 操作系统Windows、Linux等
# 开源说明

View File

@ -343,7 +343,12 @@
//导出数据
function setOutputFun(){
window.location.href = "/supplier/exportExcel.action?browserType=" + getOs() + "&type=" + listTypeEn;
var supplier = $.trim($("#searchSupplier").val());
var phonenum = $.trim($("#searchPhonenum").val());
var telephone = $.trim($("#searchTelephone").val());
var description = $.trim($("#searchDesc").val());
window.location.href = "/supplier/exportExcel?browserType=" + getOs()
+ "&supplier=" + supplier + "&type=" + listType + "&phonenum=" + phonenum + "&telephone=" + telephone + "&description=" + description;
}
//增加单位

View File

@ -571,6 +571,8 @@
+ 'AaBb' + rec.discount + 'AaBb' + rec.discountmoney + 'AaBb' + rec.discountlastmoney
+ 'AaBb' + rec.accountidlist + 'AaBb' + rec.accountmoneylist
+ 'AaBb' + rec.othermoney + 'AaBb' + rec.othermoneylist + 'AaBb' + rec.othermoneyitem + 'AaBb' + rec.accountday;
rowInfo = rowInfo.replace(/\"/g, "");
rowInfo = rowInfo.replace(/\[|]/g,"");
var orgId = rec.organid? rec.organid:0;
str += '<img title="查看" src="/js/easyui-1.3.5/themes/icons/list.png" style="cursor: pointer;" onclick="showDepotHead(\'' + rowInfo + '\');"/>&nbsp;&nbsp;&nbsp;';
str += '<img title="编辑" src="/js/easyui-1.3.5/themes/icons/pencil.png" style="cursor: pointer;" onclick="editDepotHead(\'' + rowInfo + '\''+',' + rec.status + ');"/>&nbsp;&nbsp;&nbsp;';
@ -1556,7 +1558,7 @@
initTableData_material("add"); //商品列表
reject(); //撤销下、刷新商品列表
$("#addOrgan").off("click").on("click",function(){
$('#supplierDlg').dialog('open').dialog('setTitle','<img src="/js/easyui-1.3.5/themes/icons/edit_add.png"/>&nbsp;增加供应商');
$('#supplierDlg').dialog('open').dialog('setTitle','<img src="/js/easyui-1.3.5/themes/icons/edit_add.png"/>&nbsp;增加供应商信息');
});
url = '/depotHead/add';
@ -1725,10 +1727,9 @@
$("#OperTimeShow").text(depotHeadInfo[4]);
$('#OrganIdShow').text(depotHeadInfo[11]);
$("#HandsPersonIdShow").text(depotHeadInfo[12]);
if(depotHeadInfo[13]){
if(depotHeadInfo[13] && depotHeadInfo[13]!="undefined"){
$("#AccountIdShow").text(depotHeadInfo[13]); //结算账户
}
else if(depotHeadInfo[22] && depotHeadInfo[23]){
} else {
var accountArr = depotHeadInfo[22].split(","); //账户id列表
var accountMoneyArr = depotHeadInfo[23].split(","); //账户金额列表
var accountIdShow = "";
@ -2553,28 +2554,15 @@
return;
}
var url = '/supplier/add';
var supObj = $("#supplierFM").serializeObject();
supObj.type = "供应商";
supObj.enabled = 1;
$.ajax({
url: url,
type:"post",
dataType: "json",
data:{
supplier:$("#supplier").val(),
type: "供应商",
contacts:$("#contacts").val(),
phonenum:$("#phonenum").val(),
telephone:$("#telephone").val(),
email:$("#email").val(),
address:$("#address").val(),
fax:$("#fax").val(),
BeginNeedGet:$("#BeginNeedGet").val(),
BeginNeedPay:$("#BeginNeedPay").val(),
taxNum:$("#taxNum").val(),
taxRate:$("#taxRate").val(),
bankName:$("#bankName").val(),
accountNumber:$("#accountNumber").val(),
description:$("#description").val(),
enabled:1,
clientIp: clientIp
info: JSON.stringify(supObj)
},
success: function(res) {
if (res) {

View File

@ -1,6 +1,6 @@
// strPrintName 打印任务名
// printDatagrid 要打印的datagrid
function CreateFormPage(strPrintName, printDatagrid, path) {
function CreateFormPage(strPrintName, printDatagrid) {
var beginDate= $("#searchBeginTime").val();
var endDate= $("#searchEndTime").val();
var getMonth= $("#searchMonth").val();
@ -10,19 +10,25 @@ function CreateFormPage(strPrintName, printDatagrid, path) {
//加载公司信息
$.ajax({
type:"get",
url: path + "/systemConfig/findBy.action",
url: "/systemConfig/list",
dataType: "json",
data: ({
currentPage: 1,
pageSize: 100
}),
async: false,
success: function (res) {
if(res && res.rows) {
var array = res.rows;
for(var i=0; i<array.length; i++){
if (res && res.code === 200) {
if(res.data && res.data.page) {
var array = res.data.page.rows;
for (var i = 0; i < array.length; i++) {
var name = array[i].name;
if(name === "company_name") {
if (name === "company_name") {
companyName = array[i].value;
}
}
}
}
},
//此处添加错误处理
error:function() {

View File

@ -351,7 +351,7 @@
url = '/app/add';
$("#Icon").empty();//清除上传控件数据
$(".fileUploadContent").initUpload({
"uploadUrl": "/app/uploadImg.action",//上传文件信息地址
"uploadUrl": "/app/uploadImg",//上传文件信息地址
"progressUrl": "#",//获取进度信息地址可选注意需要返回的data格式如下{bytesRead: 102516060, contentLength: 102516060, items: 1, percent: 100, startTime: 1489223136317, useTime: 2767}
//"showSummerProgress":false,//总进度条,默认限制
//"size":350,//文件大小限制单位kb,默认不限制
@ -369,13 +369,20 @@
if (checkAppName()) {
return;
}
var infoObj = $("#appFM").serializeObject();
if($("#Icon .fileItem .fileName").length){
infoObj.Icon = $.trim($("#Icon .fileItem .fileName").text());
}
infoObj.ReSize = $("#ReSize").is(':checked');
infoObj.OpenMax = $("#OpenMax").is(':checked');
infoObj.Flash = $("#Flash").is(':checked');
infoObj.Enabled = $("#Enabled").is(':checked');
$.ajax({
url: url,
type: "post",
dataType: "json",
fileElementId: 'Icon',
data: ({
info: JSON.stringify($("#appFM").serializeObject())
info: JSON.stringify(infoObj)
}),
success: function(res) {
if(res && res.code === 200) {
@ -420,7 +427,7 @@
appID = appInfo[0];
//焦点在名称输入框==定焦在输入文字后面
$("#name").val("").focus().val(appInfo[1]);
url = '/depot/update?id=' + appInfo[0];
url = '/app/update?id=' + appInfo[0];
}
//检查名称是否存在 ++ 重名无法提示问题需要跟进

View File

@ -160,7 +160,7 @@
<!-- 导入excel表格 -->
<div id="importExcelDlg" style="padding:10px 20px">
<form id="importExcelFM" method="post" enctype="multipart/form-data"
action="/supplier/importExcelCustomer.action">
action="/supplier/importExcelCustomer">
<div class="fitem" style="padding:5px">
<label>文件名称&nbsp;&nbsp;</label>
<input name="supplierFile" id="supplierFile" type="file" style="width: 230px;height: 20px"/>
@ -175,7 +175,6 @@
<option value="1" selected="selected"></option>
</select>
</div>
<input type="hidden" name="clientIp" id="clientIp" value="<%=clientIp %>"/>
<div id="dlg-buttons5">
<a href="javascript:void(0)" id="saveimport" class="easyui-linkbutton" iconCls="icon-ok">导入</a>
<a href="javascript:void(0)" id="cancelimport" class="easyui-linkbutton" iconCls="icon-cancel"

View File

@ -252,12 +252,14 @@
//绑定事件
function bindEvent() {
var url = '/js/pages/manage/pushBtn.json';
$('#PushBtn').combobox({
url: '/js/pages/manage/pushBtn.json',
url: url,
valueField: 'id',
textField: 'text',
panelHeight: 120,
multiple: true
multiple: true,
method: 'get'
});
}
@ -353,12 +355,17 @@
if (checkFunctionsName()) {
return;
}
var infoObj = $("#functionsFM").serializeObject();
infoObj.State = $("#State").is(':checked');
infoObj.Enabled = $("#Enabled").is(':checked');
var PushBtn = JSON.stringify($("#PushBtn").combobox('getValues'));
infoObj.PushBtn = PushBtn.replace(/\"/g, "").replace(/\[|]/g,"");
$.ajax({
url: url,
type: "post",
dataType: "json",
data: ({
info: JSON.stringify($("#functionsFM").serializeObject())
info: JSON.stringify(infoObj)
}),
success: function(res) {
if(res && res.code === 200) {

View File

@ -160,7 +160,7 @@
<!-- 导入excel表格 -->
<div id="importExcelDlg" style="padding:10px 20px">
<form id="importExcelFM" method="post" enctype="multipart/form-data"
action="/supplier/importExcelMember.action">
action="/supplier/importExcelMember">
<div class="fitem" style="padding:5px">
<label>文件名称&nbsp;&nbsp;</label>
<input name="supplierFile" id="supplierFile" type="file" style="width: 230px;height: 20px"/>
@ -175,7 +175,6 @@
<option value="1" selected="selected"></option>
</select>
</div>
<input type="hidden" name="clientIp" id="clientIp" value="<%=clientIp %>"/>
<div id="dlg-buttons5">
<a href="javascript:void(0)" id="saveimport" class="easyui-linkbutton" iconCls="icon-ok">导入</a>
<a href="javascript:void(0)" id="cancelimport" class="easyui-linkbutton" iconCls="icon-cancel"

View File

@ -160,7 +160,7 @@
<!-- 导入excel表格 -->
<div id="importExcelDlg" style="padding:10px 20px">
<form id="importExcelFM" method="post" enctype="multipart/form-data"
action="/supplier/importExcelVendor.action">
action="/supplier/importExcelVendor">
<div class="fitem" style="padding:5px">
<label>文件名称&nbsp;&nbsp;</label>
<input name="supplierFile" id="supplierFile" type="file" style="width: 230px;height: 20px"/>
@ -175,7 +175,6 @@
<option value="1" selected="selected"></option>
</select>
</div>
<input type="hidden" name="clientIp" id="clientIp" value="<%=clientIp %>"/>
<div id="dlg-buttons5">
<a href="javascript:void(0)" id="saveimport" class="easyui-linkbutton" iconCls="icon-ok">导入</a>
<a href="javascript:void(0)" id="cancelimport" class="easyui-linkbutton" iconCls="icon-cancel"

View File

@ -244,7 +244,7 @@
<!-- 导入excel表格 -->
<div id="importExcelDlg" class="easyui-dialog" style="width:400px; padding:10px 20px;"
closed="true" buttons="#dlg-buttons5" modal="true" collapsible="false" closable="true">
<form id="importExcelFM" method="post" enctype="multipart/form-data" action="/material/importExcel.action">
<form id="importExcelFM" method="post" enctype="multipart/form-data" action="/material/importExcel">
<div class="fitem" style="padding:5px">
<label>文件名称&nbsp;&nbsp;</label>
<input name="materialFile" id="materialFile" type="file" style="width: 230px;height: 20px"/>
@ -259,7 +259,6 @@
<option value="1" selected="selected"></option>
</select>
</div>
<input type="hidden" name="clientIp" id="clientIp" value="<%=clientIp %>"/>
<div id="dlg-buttons5">
<a href="javascript:void(0)" id="saveimport" class="easyui-linkbutton" iconCls="icon-ok">导入</a>
<a href="javascript:void(0)" id="cancelimport" class="easyui-linkbutton" iconCls="icon-cancel"
@ -1041,7 +1040,15 @@
//导出数据
function setOutputFun() {
window.location.href = "/material/exportExcel.action?browserType=" + getOs();
var name = $.trim($("#searchName").val());
var model = $.trim($("#searchModel").val());
if (setCategoryId != "1") {
cid = 2;
} else {
cid = 1;
}
window.location.href = "/material/exportExcel?browserType=" + getOs()
+ "&name=" + name + "&model=" + model + "&categoryId=" + cid + "&categoryIds=" + setCategoryId;
}
//增加

View File

@ -292,22 +292,22 @@
</td>
</tr>
<tr>
<td>联系电话</td>
<td style="padding:1px;">
<input name="phonenum" id="phonenum" class="easyui-validatebox" style="width: 160px;height: 20px"/>
</td>
<td>手机</td>
<td>手机号码</td>
<td style="padding:1px;">
<input name="telephone" id="telephone" class="easyui-validatebox"
style="width: 160px;height: 20px"/>
</td>
</tr>
<tr>
<td>电子邮箱</td>
<td style="padding:1px">
<input name="email" id="email" class="easyui-validatebox" validType="email"
style="width: 160px;height: 20px"/>
</td>
</tr>
<tr>
<td>联系电话</td>
<td style="padding:1px;">
<input name="phonenum" id="phonenum" class="easyui-validatebox" style="width: 160px;height: 20px"/>
</td>
<td>传真</td>
<td style="padding:1px">
<input name="fax" id="fax" class="easyui-validatebox" style="width: 160px;height: 20px"/>

View File

@ -311,8 +311,7 @@
//报表打印
function print() {
$("#printBtn").off("click").on("click", function () {
var path = "<%=path %>";
CreateFormPage('打印报表', $('#tableData'), path);
CreateFormPage('打印报表', $('#tableData'));
});
}
</script>

View File

@ -252,8 +252,7 @@
//报表打印
function print() {
$("#printBtn").off("click").on("click", function () {
var path = "<%=path %>";
CreateFormPage('打印报表', $('#tableData'), path);
CreateFormPage('打印报表', $('#tableData'));
});
}
</script>

View File

@ -344,8 +344,7 @@
//报表打印
function print() {
$("#printBtn").off("click").on("click", function () {
var path = "<%=path %>";
CreateFormPage('打印报表', $('#tableData'), path);
CreateFormPage('打印报表', $('#tableData'));
});
}
</script>

View File

@ -306,8 +306,7 @@
//报表打印
function print() {
$("#printBtn").off("click").on("click", function () {
var path = "<%=path %>";
CreateFormPage('打印报表', $('#tableData'), path);
CreateFormPage('打印报表', $('#tableData'));
});
}
</script>

View File

@ -295,8 +295,7 @@
//报表打印
function print() {
$("#printBtn").off("click").on("click", function () {
var path = "<%=path %>";
CreateFormPage('打印报表', $('#tableData'), path);
CreateFormPage('打印报表', $('#tableData'));
});
}
</script>

View File

@ -325,7 +325,7 @@
var mIds = res.data.mIds;
if (mIds) {
if (pageSize === 3000) {
window.location.href = "/depotItem/exportExcel.action?browserType=" + getOs() + "&pageNo=" + pageNo + "&pageSize=" + pageSize + "&ProjectId=" + $.trim($("#searchProjectId").val()) + "&MonthTime=" + $("#searchMonth").val() + "&HeadIds=" + HeadIds + "&MaterialIds=" + MIds;
window.location.href = "/depotItem/exportExcel?browserType=" + getOs() + "&currentPage=" + pageNo + "&pageSize=" + pageSize + "&projectId=" + $.trim($("#searchProjectId").val()) + "&monthTime=" + $("#searchMonth").val() + "&headIds=" + HeadIds + "&materialIds=" + mIds;
}
else {
$.ajax({
@ -411,8 +411,7 @@
//报表打印
function print() {
$("#printBtn").off("click").on("click", function () {
var path = "<%=path %>";
CreateFormPage('打印报表', $('#tableData'), path);
CreateFormPage('打印报表', $('#tableData'));
});
}
</script>

View File

@ -306,8 +306,7 @@
//报表打印
function print() {
$("#printBtn").off("click").on("click", function () {
var path = "<%=path %>";
CreateFormPage('打印报表', $('#tableData'), path);
CreateFormPage('打印报表', $('#tableData'));
});
}
</script>

View File

@ -295,8 +295,7 @@
//报表打印
function print() {
$("#printBtn").off("click").on("click", function () {
var path = "<%=path %>";
CreateFormPage('打印报表', $('#tableData'), path);
CreateFormPage('打印报表', $('#tableData'));
});
}
</script>

View File

@ -255,8 +255,7 @@
//报表打印
function print() {
$("#printBtn").off("click").on("click", function () {
var path = "<%=path %>";
CreateFormPage('打印报表', $('#tableData'), path);
CreateFormPage('打印报表', $('#tableData'));
});
}
</script>

View File

@ -343,8 +343,7 @@
//报表打印
function print() {
$("#printBtn").off("click").on("click", function () {
var path = "<%=path %>";
CreateFormPage('打印报表', $('#tableData'), path);
CreateFormPage('打印报表', $('#tableData'));
});
}
</script>

12
pom.xml
View File

@ -42,7 +42,7 @@
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.7</java.version>
<java.version>1.8</java.version>
</properties>
<dependencies>
@ -96,6 +96,11 @@
<artifactId>commons-httpclient</artifactId>
<version>3.1</version>
</dependency>
<dependency>
<groupId>net.sourceforge.jexcelapi</groupId>
<artifactId>jxl</artifactId>
<version>2.6.3</version>
</dependency>
</dependencies>
<repositories>
@ -174,9 +179,10 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>

1
src/main/conf/start.sh Normal file
View File

@ -0,0 +1 @@
nohup ./jshERPStart.sh &

View File

@ -5,13 +5,18 @@ import com.alibaba.fastjson.JSONObject;
import com.jsh.erp.datasource.entities.App;
import com.jsh.erp.service.app.AppService;
import com.jsh.erp.service.userBusiness.UserBusinessService;
import com.jsh.erp.utils.BaseResponseInfo;
import com.jsh.erp.utils.FileUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.io.*;
import java.util.List;
import java.util.Properties;
/**
* @author ji_sheng_hua 752*718*920
@ -26,14 +31,7 @@ public class AppController {
@Resource
private UserBusinessService userBusinessService;
/**
* create by: cjl
* description:
* 桌面菜单按钮初始化
* create time: 2019/1/11 17:01
* @Param: request
* @return com.alibaba.fastjson.JSONObject
*/
@GetMapping(value = "/findDesk")
public JSONObject findDesk(HttpServletRequest request) {
JSONObject obj = new JSONObject();
@ -123,4 +121,38 @@ public class AppController {
}
return arr;
}
/**
* 上传图片
* @param fileInfo
* @param request
*/
@PostMapping(value = "/uploadImg")
public BaseResponseInfo uploadImg(MultipartFile fileInfo, @RequestParam("fileInfoName") String fileName,
HttpServletRequest request) {
BaseResponseInfo res = new BaseResponseInfo();
try {
if (fileInfo != null) {
String basePath = request.getSession().getServletContext().getRealPath("/"); //默认windows文件路径linux环境下生成的目录与项目同级而不是下级
String path = basePath + "upload/images/deskIcon/"; //windows环境下的路径
Properties pro = System.getProperties();
String osName = pro.getProperty("os.name");//获得当前操作系统的名称
if("Linux".equals(osName) || "linux".equals(osName) || "LINUX".equals(osName)){
path = basePath + "/upload/images/deskIcon/"; //linux环境下的路径
}
FileUtils.SaveFileFromInputStream(fileInfo.getInputStream(), path, fileName);
res.code = 200;
res.data = "上传图片成功";
}
} catch (FileNotFoundException e) {
e.printStackTrace();
res.code = 500;
res.data = "获取图片失败";
} catch (IOException e) {
e.printStackTrace();
res.code = 500;
res.data = "上传图片失败";
}
return res;
}
}

View File

@ -9,11 +9,12 @@ import com.jsh.erp.utils.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.dao.DataAccessException;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@ -32,7 +33,8 @@ public class DepotItemController {
@Resource
private DepotItemService depotItemService;
@Resource
private MaterialService materialService;
/**
* 根据材料信息获取
@ -267,7 +269,26 @@ public class DepotItemController {
}
}
/**
* 查询计量单位信息
*
* @return
*/
public String findUnitName(Long mId) {
String unitName = "";
try {
unitName = materialService.findUnitName(mId);
if (unitName != null) {
unitName = unitName.substring(1, unitName.length() - 1);
if (unitName.equals("null")) {
unitName = "";
}
}
} catch (Exception e) {
e.printStackTrace();
}
return unitName;
}
@GetMapping(value = "/getDetailList")
public BaseResponseInfo getDetailList(@RequestParam("headerId") Long headerId,
@ -403,14 +424,12 @@ public class DepotItemController {
if (null != dataList) {
for (DepotItemVo4WithInfoEx diEx : dataList) {
JSONObject item = new JSONObject();
Double prevSum = sumNumber("入库", pid, diEx.getMaterialid(), monthTime, true) - sumNumber("出库", pid, diEx.getMaterialid(), monthTime, true);
Double InSum = sumNumber("入库", pid, diEx.getMaterialid(), monthTime, false);
Double OutSum = sumNumber("出库", pid, diEx.getMaterialid(), monthTime, false);
Double prevPrice = sumPrice("入库", pid, diEx.getMaterialid(), monthTime, true) - sumPrice("出库", pid, diEx.getMaterialid(), monthTime, true);
Double InPrice = sumPrice("入库", pid, diEx.getMaterialid(), monthTime, false);
Double OutPrice = sumPrice("出库", pid, diEx.getMaterialid(), monthTime, false);
item.put("Id", diEx.getId());
item.put("MaterialId", diEx.getMaterialid());
Double prevSum = sumNumber("入库", pid, diEx.getMId(), monthTime, true) - sumNumber("出库", pid, diEx.getMId(), monthTime, true);
Double InSum = sumNumber("入库", pid, diEx.getMId(), monthTime, false);
Double OutSum = sumNumber("出库", pid, diEx.getMId(), monthTime, false);
Double prevPrice = sumPrice("入库", pid, diEx.getMId(), monthTime, true) - sumPrice("出库", pid, diEx.getMId(), monthTime, true);
Double InPrice = sumPrice("入库", pid, diEx.getMId(), monthTime, false);
Double OutPrice = sumPrice("出库", pid, diEx.getMId(), monthTime, false);
item.put("MaterialName", diEx.getMName());
item.put("MaterialModel", diEx.getMColor());
//扩展信息
@ -464,9 +483,9 @@ public class DepotItemController {
Double thisAllPrice = 0.0;
if (null != dataList) {
for (DepotItemVo4WithInfoEx diEx : dataList) {
Double prevPrice = sumPrice("入库", pid, diEx.getMaterialid(), monthTime, true) - sumPrice("出库", pid, diEx.getMaterialid(), monthTime, true);
Double InPrice = sumPrice("入库", pid, diEx.getMaterialid(), monthTime, false);
Double OutPrice = sumPrice("出库", pid, diEx.getMaterialid(), monthTime, false);
Double prevPrice = sumPrice("入库", pid, diEx.getMId(), monthTime, true) - sumPrice("出库", pid, diEx.getMId(), monthTime, true);
Double InPrice = sumPrice("入库", pid, diEx.getMId(), monthTime, false);
Double OutPrice = sumPrice("出库", pid, diEx.getMId(), monthTime, false);
thisAllPrice = thisAllPrice + (prevPrice + InPrice - OutPrice);
}
}
@ -512,12 +531,10 @@ public class DepotItemController {
if (null != dataList) {
for (DepotItemVo4WithInfoEx diEx : dataList) {
JSONObject item = new JSONObject();
Double InSum = sumNumberBuyOrSale("入库", "采购", diEx.getMaterialid(), monthTime);
Double OutSum = sumNumberBuyOrSale("出库", "采购退货", diEx.getMaterialid(), monthTime);
Double InSumPrice = sumPriceBuyOrSale("入库", "采购", diEx.getMaterialid(), monthTime);
Double OutSumPrice = sumPriceBuyOrSale("出库", "采购退货", diEx.getMaterialid(), monthTime);
item.put("Id", diEx.getId());
item.put("MaterialId", diEx.getMaterialid());
Double InSum = sumNumberBuyOrSale("入库", "采购", diEx.getMId(), monthTime);
Double OutSum = sumNumberBuyOrSale("出库", "采购退货", diEx.getMId(), monthTime);
Double InSumPrice = sumPriceBuyOrSale("入库", "采购", diEx.getMId(), monthTime);
Double OutSumPrice = sumPriceBuyOrSale("出库", "采购退货", diEx.getMId(), monthTime);
item.put("MaterialName", diEx.getMName());
item.put("MaterialModel", diEx.getMModel());
//扩展信息
@ -574,16 +591,14 @@ public class DepotItemController {
if (null != dataList) {
for (DepotItemVo4WithInfoEx diEx : dataList) {
JSONObject item = new JSONObject();
Double OutSumRetail = sumNumberBuyOrSale("出库", "零售", diEx.getMaterialid(), monthTime);
Double OutSum = sumNumberBuyOrSale("出库", "销售", diEx.getMaterialid(), monthTime);
Double InSumRetail = sumNumberBuyOrSale("入库", "零售退货", diEx.getMaterialid(), monthTime);
Double InSum = sumNumberBuyOrSale("入库", "销售退货", diEx.getMaterialid(), monthTime);
Double OutSumRetailPrice = sumPriceBuyOrSale("出库", "零售", diEx.getMaterialid(), monthTime);
Double OutSumPrice = sumPriceBuyOrSale("出库", "销售", diEx.getMaterialid(), monthTime);
Double InSumRetailPrice = sumPriceBuyOrSale("入库", "零售退货", diEx.getMaterialid(), monthTime);
Double InSumPrice = sumPriceBuyOrSale("入库", "销售退货", diEx.getMaterialid(), monthTime);
item.put("Id", diEx.getId());
item.put("MaterialId", diEx.getMaterialid());
Double OutSumRetail = sumNumberBuyOrSale("出库", "零售", diEx.getMId(), monthTime);
Double OutSum = sumNumberBuyOrSale("出库", "销售", diEx.getMId(), monthTime);
Double InSumRetail = sumNumberBuyOrSale("入库", "零售退货", diEx.getMId(), monthTime);
Double InSum = sumNumberBuyOrSale("入库", "销售退货", diEx.getMId(), monthTime);
Double OutSumRetailPrice = sumPriceBuyOrSale("出库", "零售", diEx.getMId(), monthTime);
Double OutSumPrice = sumPriceBuyOrSale("出库", "销售", diEx.getMId(), monthTime);
Double InSumRetailPrice = sumPriceBuyOrSale("入库", "零售退货", diEx.getMId(), monthTime);
Double InSumPrice = sumPriceBuyOrSale("入库", "销售退货", diEx.getMId(), monthTime);
item.put("MaterialName", diEx.getMName());
item.put("MaterialModel", diEx.getMModel());
//扩展信息
@ -640,10 +655,8 @@ public class DepotItemController {
if (null != dataList) {
for (DepotItemVo4WithInfoEx diEx : dataList) {
JSONObject item = new JSONObject();
Double InSum = sumNumberGift("礼品充值", pid, diEx.getMaterialid(), "in");
Double OutSum = sumNumberGift("礼品销售", pid, diEx.getMaterialid(), "out");
item.put("Id", diEx.getId());
item.put("MaterialId", diEx.getMaterialid());
Double InSum = sumNumberGift("礼品充值", pid, diEx.getMId(), "in");
Double OutSum = sumNumberGift("礼品销售", pid, diEx.getMId(), "out");
item.put("MaterialName", diEx.getMName());
item.put("MaterialModel", diEx.getMModel());
//扩展信息
@ -666,6 +679,77 @@ public class DepotItemController {
return res;
}
/**
* 导出excel表格
* @param currentPage
* @param pageSize
* @param projectId
* @param monthTime
* @param headIds
* @param materialIds
* @param request
* @param response
* @return
*/
@GetMapping(value = "/exportExcel")
public BaseResponseInfo exportExcel(@RequestParam("currentPage") Integer currentPage,
@RequestParam("pageSize") Integer pageSize,
@RequestParam("projectId") Integer projectId,
@RequestParam("monthTime") String monthTime,
@RequestParam("headIds") String headIds,
@RequestParam("materialIds") String materialIds,
HttpServletRequest request, HttpServletResponse response) {
BaseResponseInfo res = new BaseResponseInfo();
Map<String, Object> map = new HashMap<String, Object>();
String message = "成功";
try {
List<DepotItemVo4WithInfoEx> dataList = depotItemService.findByAll(headIds, materialIds, currentPage, pageSize);
//存放数据json数组
Integer pid = projectId;
String[] names = {"名称", "型号", "单位", "单价", "上月结存数量", "入库数量", "出库数量", "本月结存数量", "结存金额"};
String title = "库存报表";
List<String[]> objects = new ArrayList<String[]>();
if (null != dataList) {
for (DepotItemVo4WithInfoEx diEx : dataList) {
String[] objs = new String[9];
Double prevSum = sumNumber("入库", pid, diEx.getMId(), monthTime, true) - sumNumber("出库", pid, diEx.getMId(), monthTime, true);
Double InSum = sumNumber("入库", pid, diEx.getMId(), monthTime, false);
Double OutSum = sumNumber("出库", pid, diEx.getMId(), monthTime, false);
Double prevPrice = sumPrice("入库", pid, diEx.getMId(), monthTime, true) - sumPrice("出库", pid, diEx.getMId(), monthTime, true);
Double InPrice = sumPrice("入库", pid, diEx.getMId(), monthTime, false);
Double OutPrice = sumPrice("出库", pid, diEx.getMId(), monthTime, false);
Double unitPrice = 0.0;
if (prevSum + InSum - OutSum != 0.0) {
unitPrice = (prevPrice + InPrice - OutPrice) / (prevSum + InSum - OutSum);
}
Double thisSum = prevSum + InSum - OutSum;
Double thisAllPrice = prevPrice + InPrice - OutPrice;
objs[0] = diEx.getMName().toString();
objs[1] = diEx.getMModel().toString();
objs[2] = diEx.getMaterialUnit().toString();
objs[3] = unitPrice.toString();
objs[4] = prevSum.toString();
objs[5] = InSum.toString();
objs[6] = OutSum.toString();
objs[7] = thisSum.toString();
objs[8] = thisAllPrice.toString();
objects.add(objs);
}
}
File file = ExcelUtils.exportObjectsWithoutTitle(title, names, title, objects);
ExportExecUtil.showExec(file, file.getName() + "-" + monthTime, response);
res.code = 200;
} catch (Exception e) {
e.printStackTrace();
message = "导出失败";
res.code = 500;
} finally {
map.put("message", message);
res.data = map;
}
return res;
}
/**
* 数量合计
*

View File

@ -1,18 +1,24 @@
package com.jsh.erp.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.jsh.erp.datasource.entities.Material;
import com.jsh.erp.datasource.entities.MaterialVo4Unit;
import com.jsh.erp.service.material.MaterialService;
import com.jsh.erp.utils.BaseResponseInfo;
import com.jsh.erp.utils.ErpInfo;
import com.jsh.erp.utils.*;
import jxl.Sheet;
import jxl.Workbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -177,4 +183,127 @@ public class MaterialController {
}
return res;
}
/**
* 生成excel表格
* @param name
* @param model
* @param categoryId
* @param categoryIds
* @param request
* @param response
* @return
*/
@GetMapping(value = "/exportExcel")
public BaseResponseInfo exportExcel(@RequestParam("name") String name,
@RequestParam("model") String model,
@RequestParam("categoryId") Long categoryId,
@RequestParam("categoryIds") String categoryIds,
HttpServletRequest request, HttpServletResponse response) {
BaseResponseInfo res = new BaseResponseInfo();
Map<String, Object> map = new HashMap<String, Object>();
String message = "成功";
try {
List<MaterialVo4Unit> dataList = materialService.findByAll(name, model, categoryId, categoryIds);
String[] names = {"品名", "类型", "型号", "安全存量", "单位", "零售价", "最低售价", "预计采购价", "批发价", "备注", "状态"};
String title = "商品信息";
List<String[]> objects = new ArrayList<String[]>();
if (null != dataList) {
for (MaterialVo4Unit m : dataList) {
String[] objs = new String[11];
objs[0] = m.getName();
objs[1] = m.getCategoryName();
objs[2] = m.getModel();
objs[3] = m.getSafetystock() == null? "" : m.getSafetystock().toString();
objs[4] = m.getUnit();
objs[5] = m.getRetailprice() == null ? "" : m.getRetailprice().toString();
objs[6] = m.getLowprice() == null ? "" : m.getLowprice().toString();
objs[7] = m.getPresetpriceone() == null ? "" : m.getPresetpriceone().toString();
objs[8] = m.getPresetpricetwo() == null ? "" : m.getPresetpricetwo().toString();
objs[9] = m.getRemark();
objs[10] = m.getEnabled() ? "启用" : "禁用";
objects.add(objs);
}
}
File file = ExcelUtils.exportObjectsWithoutTitle(title, names, title, objects);
ExportExecUtil.showExec(file, file.getName(), response);
res.code = 200;
} catch (Exception e) {
e.printStackTrace();
message = "导出失败";
res.code = 500;
} finally {
map.put("message", message);
res.data = map;
}
return res;
}
/**
* excel表格导入
* @param materialFile
* @param request
* @param response
* @return
*/
@PostMapping(value = "/importExcel")
public void importExcel(MultipartFile materialFile,
HttpServletRequest request, HttpServletResponse response) throws Exception{
BaseResponseInfo info = new BaseResponseInfo();
Map<String, Object> data = new HashMap<String, Object>();
String message = "成功";
try {
Sheet src = null;
//文件合法性校验
try {
Workbook workbook = Workbook.getWorkbook(materialFile.getInputStream());
src = workbook.getSheet(0);
} catch (Exception e) {
message = "导入文件不合法,请检查";
data.put("message", message);
info.code = 400;
info.data = data;
}
//读取所有的摄像机编码
//每行中数据顺序 "品名","类型","型号","安全存量","单位","零售价","最低售价","预计采购价","批发价","备注","状态"
List<Material> mList = new ArrayList<Material>();
for (int i = 1; i < src.getRows(); i++) {
Material m = new Material();
m.setName(ExcelUtils.getContent(src, i, 0));
m.setCategoryid(1l); //根目录
m.setModel(ExcelUtils.getContent(src, i, 2));
String safetyStock = ExcelUtils.getContent(src, i, 3);
m.setSafetystock(parseDoubleEx(safetyStock));
m.setUnit(ExcelUtils.getContent(src, i, 4));
String retailprice = ExcelUtils.getContent(src, i, 5);
m.setRetailprice(parseDoubleEx(retailprice));
String lowPrice = ExcelUtils.getContent(src, i, 6);
m.setLowprice(parseDoubleEx(lowPrice));
String presetpriceone = ExcelUtils.getContent(src, i, 7);
m.setPresetpriceone(parseDoubleEx(presetpriceone));
String presetpricetwo = ExcelUtils.getContent(src, i, 8);
m.setPresetpricetwo(parseDoubleEx(presetpricetwo));
m.setRemark(ExcelUtils.getContent(src, i, 9));
String enabled = ExcelUtils.getContent(src, i, 10);
m.setEnabled(enabled.equals("启用")? true: false);
mList.add(m);
}
info = materialService.importExcel(mList);
} catch (Exception e) {
e.printStackTrace();
message = "导入失败";
info.code = 500;
data.put("message", message);
info.data = data;
}
response.sendRedirect("../pages/materials/material.html");
}
public Double parseDoubleEx(String str){
if(!StringUtil.isEmpty(str)) {
return Double.parseDouble(str);
} else {
return null;
}
}
}

View File

@ -5,15 +5,20 @@ import com.alibaba.fastjson.JSONObject;
import com.jsh.erp.datasource.entities.Supplier;
import com.jsh.erp.service.supplier.SupplierService;
import com.jsh.erp.service.userBusiness.UserBusinessService;
import com.jsh.erp.utils.BaseResponseInfo;
import com.jsh.erp.utils.ErpInfo;
import com.jsh.erp.utils.*;
import jxl.Sheet;
import jxl.Workbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.dao.DataAccessException;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -259,4 +264,171 @@ public class SupplierController {
}
return arr;
}
/**
* 生成excel表格
* @param supplier
* @param type
* @param phonenum
* @param telephone
* @param description
* @param request
* @param response
* @return
*/
@GetMapping(value = "/exportExcel")
public BaseResponseInfo exportExcel(@RequestParam("supplier") String supplier,
@RequestParam("type") String type,
@RequestParam("phonenum") String phonenum,
@RequestParam("telephone") String telephone,
@RequestParam("description") String description,
HttpServletRequest request, HttpServletResponse response) {
BaseResponseInfo res = new BaseResponseInfo();
Map<String, Object> map = new HashMap<String, Object>();
String message = "成功";
try {
List<Supplier> dataList = supplierService.findByAll(supplier, type, phonenum, telephone, description);
String[] names = {"名称", "类型", "联系人", "电话", "电子邮箱", "预收款", "期初应收", "期初应付", "备注", "传真", "手机", "地址", "纳税人识别号", "开户行", "账号", "税率", "状态"};
String title = "信息报表";
List<String[]> objects = new ArrayList<String[]>();
if (null != dataList) {
for (Supplier s : dataList) {
String[] objs = new String[17];
objs[0] = s.getSupplier();
objs[1] = s.getType();
objs[2] = s.getContacts();
objs[3] = s.getPhonenum();
objs[4] = s.getEmail();
objs[5] = s.getAdvancein() == null? "" : s.getAdvancein().toString();
objs[6] = s.getBeginneedget() == null? "" : s.getBeginneedget().toString();
objs[7] = s.getBeginneedpay() == null? "" : s.getBeginneedpay().toString();
objs[8] = s.getDescription();
objs[9] = s.getFax();
objs[10] = s.getTelephone();
objs[11] = s.getAddress();
objs[12] = s.getTaxnum();
objs[13] = s.getBankname();
objs[14] = s.getAccountnumber();
objs[15] = s.getTaxrate() == null? "" : s.getTaxrate().toString();
objs[16] = s.getEnabled() ? "启用" : "禁用";
objects.add(objs);
}
}
File file = ExcelUtils.exportObjectsWithoutTitle(title, names, title, objects);
ExportExecUtil.showExec(file, file.getName(), response);
res.code = 200;
} catch (Exception e) {
e.printStackTrace();
message = "导出失败";
res.code = 500;
} finally {
map.put("message", message);
res.data = map;
}
return res;
}
/**
* 导入excel表格-供应商
* @param supplierFile
* @param request
* @param response
* @return
*/
@PostMapping(value = "/importExcelVendor")
public void importExcelVendor(MultipartFile supplierFile,
HttpServletRequest request, HttpServletResponse response) throws Exception{
importFun(supplierFile);
response.sendRedirect("../pages/manage/vendor.html");
}
/**
* 导入excel表格-客户
* @param supplierFile
* @param request
* @param response
* @return
*/
@PostMapping(value = "/importExcelCustomer")
public void importExcelCustomer(MultipartFile supplierFile,
HttpServletRequest request, HttpServletResponse response) throws Exception{
importFun(supplierFile);
response.sendRedirect("../pages/manage/customer.html");
}
/**
* 导入excel表格-会员
* @param supplierFile
* @param request
* @param response
* @return
*/
@PostMapping(value = "/importExcelMember")
public void importExcelMember(MultipartFile supplierFile,
HttpServletRequest request, HttpServletResponse response) throws Exception{
importFun(supplierFile);
response.sendRedirect("../pages/manage/member.html");
}
public String importFun(MultipartFile supplierFile){
BaseResponseInfo info = new BaseResponseInfo();
Map<String, Object> data = new HashMap<String, Object>();
String message = "成功";
try {
Sheet src = null;
//文件合法性校验
try {
Workbook workbook = Workbook.getWorkbook(supplierFile.getInputStream());
src = workbook.getSheet(0);
} catch (Exception e) {
message = "导入文件不合法,请检查";
data.put("message", message);
info.code = 400;
info.data = data;
}
//读取所有的摄像机编码
//每行中数据顺序 "名称","类型","联系人","电话","电子邮箱","预收款","期初应收","期初应付","备注","传真","手机","地址","纳税人识别号","开户行","账号","税率","状态"
List<Supplier> sList = new ArrayList<Supplier>();
for (int i = 1; i < src.getRows(); i++) {
Supplier s = new Supplier();
s.setSupplier(ExcelUtils.getContent(src, i, 0));
s.setType(ExcelUtils.getContent(src, i, 1));
s.setContacts(ExcelUtils.getContent(src, i, 2));
s.setPhonenum(ExcelUtils.getContent(src, i, 3));
s.setEmail(ExcelUtils.getContent(src, i, 4));
s.setAdvancein(parseDoubleEx(ExcelUtils.getContent(src, i, 5)));
s.setBeginneedget(parseDoubleEx(ExcelUtils.getContent(src, i, 6)));
s.setBeginneedpay(parseDoubleEx(ExcelUtils.getContent(src, i, 7)));
s.setDescription(ExcelUtils.getContent(src, i, 8));
s.setFax(ExcelUtils.getContent(src, i, 9));
s.setTelephone(ExcelUtils.getContent(src, i, 10));
s.setAddress(ExcelUtils.getContent(src, i, 11));
s.setTaxnum(ExcelUtils.getContent(src, i, 12));
s.setBankname(ExcelUtils.getContent(src, i, 13));
s.setAccountnumber(ExcelUtils.getContent(src, i, 14));
s.setTaxrate(parseDoubleEx(ExcelUtils.getContent(src, i, 15)));
String enabled = ExcelUtils.getContent(src, i, 16);
s.setEnabled(enabled.equals("启用")? true: false);
s.setIsystem(Byte.parseByte("1"));
sList.add(s);
}
info = supplierService.importExcel(sList);
} catch (Exception e) {
e.printStackTrace();
message = "导入失败";
info.code = 500;
data.put("message", message);
info.data = data;
}
return null;
}
public Double parseDoubleEx(String str){
if(!StringUtil.isEmpty(str)) {
return Double.parseDouble(str);
} else {
return null;
}
}
}

View File

@ -48,6 +48,8 @@ public class DepotItemVo4WithInfoEx {
private String mtype;
private Long MId;
private String MName;
private String MModel;
@ -258,6 +260,14 @@ public class DepotItemVo4WithInfoEx {
this.mtype = mtype;
}
public Long getMId() {
return MId;
}
public void setMId(Long MId) {
this.MId = MId;
}
public String getMName() {
return MName;
}

View File

@ -121,4 +121,10 @@ public interface MaterialMapper {
int updatePriceNullByPrimaryKey(Long id);
int updateUnitIdNullByPrimaryKey(Long id);
List<MaterialVo4Unit> findByAll(
@Param("name") String name,
@Param("model") String model,
@Param("categoryId") Long categoryId,
@Param("categoryIds") String categoryIds);
}

View File

@ -109,4 +109,11 @@ public interface SupplierMapper {
@Param("phonenum") String phonenum,
@Param("telephone") String telephone,
@Param("description") String description);
List<Supplier> findByAll(
@Param("supplier") String supplier,
@Param("type") String type,
@Param("phonenum") String phonenum,
@Param("telephone") String telephone,
@Param("description") String description);
}

View File

@ -84,14 +84,18 @@ public class DepotHeadService {
}
depotHead.setCreatetime(new Timestamp(System.currentTimeMillis()));
depotHead.setStatus(false);
return depotHeadMapper.insertSelective(depotHead);
return depotHeadMapper.insert(depotHead);
}
@Transactional(value = "transactionManager", rollbackFor = Exception.class)
public int updateDepotHead(String beanJson, Long id) {
DepotHead dh = depotHeadMapper.selectByPrimaryKey(id);
DepotHead depotHead = JSONObject.parseObject(beanJson, DepotHead.class);
depotHead.setId(id);
return depotHeadMapper.updateByPrimaryKeySelective(depotHead);
depotHead.setStatus(dh.getStatus());
depotHead.setCreatetime(dh.getCreatetime());
depotHead.setOperpersonname(dh.getOperpersonname());
return depotHeadMapper.updateByPrimaryKey(depotHead);
}
@Transactional(value = "transactionManager", rollbackFor = Exception.class)

View File

@ -5,6 +5,7 @@ import com.jsh.erp.datasource.entities.Material;
import com.jsh.erp.datasource.entities.MaterialExample;
import com.jsh.erp.datasource.entities.MaterialVo4Unit;
import com.jsh.erp.datasource.mappers.MaterialMapper;
import com.jsh.erp.utils.BaseResponseInfo;
import com.jsh.erp.utils.StringUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -14,7 +15,9 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
public class MaterialService {
@ -160,4 +163,32 @@ public class MaterialService {
return materialMapper.selectByExample(example);
}
public List<MaterialVo4Unit> findByAll(String name, String model, Long categoryId, String categoryIds) {
List<MaterialVo4Unit> resList = new ArrayList<MaterialVo4Unit>();
List<MaterialVo4Unit> list = materialMapper.findByAll(name, model, categoryId, categoryIds);
if (null != list) {
for (MaterialVo4Unit m : list) {
resList.add(m);
}
}
return resList;
}
public BaseResponseInfo importExcel(List<Material> mList) throws Exception {
BaseResponseInfo info = new BaseResponseInfo();
Map<String, Object> data = new HashMap<String, Object>();
try {
for(Material m: mList) {
materialMapper.insertSelective(m);
}
info.code = 200;
data.put("message", "成功");
} catch (Exception e) {
e.printStackTrace();
info.code = 500;
data.put("message", e.getMessage());
}
info.data = data;
return info;
}
}

View File

@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
import com.jsh.erp.datasource.entities.Supplier;
import com.jsh.erp.datasource.entities.SupplierExample;
import com.jsh.erp.datasource.mappers.SupplierMapper;
import com.jsh.erp.utils.BaseResponseInfo;
import com.jsh.erp.utils.StringUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -12,7 +13,9 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
public class SupplierService {
@ -123,4 +126,26 @@ public class SupplierService {
List<Supplier> list = supplierMapper.selectByExample(example);
return list;
}
public List<Supplier> findByAll(String supplier, String type, String phonenum, String telephone, String description) {
return supplierMapper.findByAll(supplier, type, phonenum, telephone, description);
}
public BaseResponseInfo importExcel(List<Supplier> mList) throws Exception {
BaseResponseInfo info = new BaseResponseInfo();
Map<String, Object> data = new HashMap<String, Object>();
try {
for(Supplier s: mList) {
supplierMapper.insertSelective(s);
}
info.code = 200;
data.put("message", "成功");
} catch (Exception e) {
e.printStackTrace();
info.code = 500;
data.put("message", e.getMessage());
}
info.data = data;
return info;
}
}

View File

@ -0,0 +1,240 @@
package com.jsh.erp.utils;
import java.io.File;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import com.alibaba.druid.util.StringUtils;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.format.*;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
public class ExcelUtils {
public static WritableFont arial14font = null;
public static File exportObjects(String fileName, String[] names,
String title, List<String[]> objects) throws Exception {
File excelFile = new File("fileName.xls");
WritableWorkbook wtwb = Workbook.createWorkbook(excelFile);
WritableSheet sheet = wtwb.createSheet(title, 0);
sheet.getSettings().setDefaultColumnWidth(20);
WritableFont wfont = new WritableFont(WritableFont.createFont("楷书"), 15);
WritableCellFormat format = new WritableCellFormat(wfont);
WritableFont wfc = new WritableFont(WritableFont.ARIAL, 20,
WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE,
jxl.format.Colour.BLACK);
WritableCellFormat wcfFC = new WritableCellFormat(wfc);
wcfFC.setAlignment(Alignment.CENTRE);
wcfFC.setVerticalAlignment(VerticalAlignment.CENTRE);
// CellView cellView = new CellView();
// cellView.setAutosize(true); //设置自动大小
format.setAlignment(Alignment.LEFT);
format.setVerticalAlignment(VerticalAlignment.TOP);
sheet.mergeCells(0, 0, names.length - 1, 0);
sheet.addCell(new Label(0, 0, title, wcfFC));
int rowNum = 2;
for (int i = 0; i < names.length; i++) {
sheet.addCell(new Label(i, 1, names[i], format));
}
for (int j = 0; j < objects.size(); j++) {
String[] obj = objects.get(j);
for (int h = 0; h < obj.length; h++) {
sheet.addCell(new Label(h, rowNum, obj[h], format));
}
rowNum = rowNum + 1;
}
wtwb.write();
wtwb.close();
return excelFile;
}
/**
* 导出excel不需要第一行的title
*
* @param fileName
* @param names
* @param title
* @param objects
* @return
* @throws Exception
*/
public static File exportObjectsWithoutTitle(String fileName,
String[] names, String title, List<String[]> objects)
throws Exception {
File excelFile = new File(fileName);
WritableWorkbook wtwb = Workbook.createWorkbook(excelFile);
WritableSheet sheet = wtwb.createSheet(title, 0);
sheet.getSettings().setDefaultColumnWidth(20);
// 第一行的格式
WritableFont wfc = new WritableFont(WritableFont.ARIAL, 15,
WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE,
jxl.format.Colour.BLACK);
WritableCellFormat wcfFC = new WritableCellFormat(wfc);
wcfFC.setVerticalAlignment(VerticalAlignment.CENTRE);
// 设置字体以及单元格格式
WritableFont wfont = new WritableFont(WritableFont.createFont("楷书"), 15);
WritableCellFormat format = new WritableCellFormat(wfont);
format.setAlignment(Alignment.LEFT);
format.setVerticalAlignment(VerticalAlignment.TOP);
// 第一行写入标题
for (int i = 0; i < names.length; i++) {
sheet.addCell(new Label(i, 0, names[i], wcfFC));
}
// 其余行依次写入数据
int rowNum = 1;
for (int j = 0; j < objects.size(); j++) {
String[] obj = objects.get(j);
for (int h = 0; h < obj.length; h++) {
sheet.addCell(new Label(h, rowNum, obj[h], format));
}
rowNum = rowNum + 1;
}
wtwb.write();
wtwb.close();
return excelFile;
}
public static String createTempFile(String[] names, String title, List<String[]> objects) throws Exception {
File excelFile = File.createTempFile(System.currentTimeMillis() + "", ".xls");
WritableWorkbook wtwb = Workbook.createWorkbook(excelFile);
WritableSheet sheet = wtwb.createSheet(title, 0);
sheet.getSettings().setDefaultColumnWidth(20);
WritableFont wfont = new WritableFont(WritableFont.createFont("楷书"), 15);
WritableCellFormat format = new WritableCellFormat(wfont);
WritableFont wfc = new WritableFont(WritableFont.ARIAL, 20,
WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE,
jxl.format.Colour.BLACK);
WritableCellFormat wcfFC = new WritableCellFormat(wfc);
wcfFC.setAlignment(Alignment.CENTRE);
wcfFC.setVerticalAlignment(VerticalAlignment.CENTRE);
// CellView cellView = new CellView();
// cellView.setAutosize(true); //设置自动大小
format.setAlignment(Alignment.LEFT);
format.setVerticalAlignment(VerticalAlignment.TOP);
sheet.mergeCells(0, 0, names.length - 1, 0);
sheet.addCell(new Label(0, 0, title, wcfFC));
int rowNum = 2;
for (int i = 0; i < names.length; i++) {
sheet.addCell(new Label(i, 1, names[i], format));
}
for (int j = 0; j < objects.size(); j++) {
String[] obj = objects.get(j);
for (int h = 0; h < obj.length; h++) {
sheet.addCell(new Label(h, rowNum, obj[h], format));
}
rowNum = rowNum + 1;
}
wtwb.write();
wtwb.close();
return excelFile.getName();
}
public static String createCheckRandomTempFile(String[] names, String title, List<String[]> objects,Map<String,String> infoMap) throws Exception {
File excelFile = File.createTempFile(System.currentTimeMillis() + "", ".xls");
WritableWorkbook wtwb = Workbook.createWorkbook(excelFile);
WritableSheet sheet = wtwb.createSheet(title, 0);
sheet.getSettings().setDefaultColumnWidth(20);
WritableFont wfont = new WritableFont(WritableFont.createFont("楷书"), 14);
WritableCellFormat format = new WritableCellFormat(wfont);
format.setBorder(Border.ALL, BorderLineStyle.THIN);
format.setAlignment(Alignment.CENTRE);
format.setVerticalAlignment(VerticalAlignment.CENTRE);
WritableFont wfc = new WritableFont(WritableFont.ARIAL, 20,
WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE,
jxl.format.Colour.BLACK);
WritableCellFormat wcfFC = new WritableCellFormat(wfc);
wcfFC.setAlignment(Alignment.LEFT);
wcfFC.setVerticalAlignment(VerticalAlignment.CENTRE);
WritableFont nameWfc = new WritableFont(WritableFont.ARIAL, 14,
WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE,
jxl.format.Colour.BLACK);
WritableCellFormat nameFormat = new WritableCellFormat(nameWfc);
nameFormat.setBorder(Border.ALL, BorderLineStyle.THIN);
nameFormat.setAlignment(Alignment.CENTRE);
nameFormat.setVerticalAlignment(VerticalAlignment.CENTRE);
WritableCellFormat infoFormat = new WritableCellFormat(wfont);
infoFormat.setAlignment(Alignment.LEFT);
infoFormat.setVerticalAlignment(VerticalAlignment.CENTRE);
sheet.mergeCells(0, 0, names.length - 1, 0);
sheet.addCell(new Label(0, 0, infoMap.get("title"), wcfFC));
sheet.addCell(new Label(0, 2, infoMap.get("info"), infoFormat));
sheet.addCell(new Label(2, 2, infoMap.get("dvrnvr"), infoFormat));
sheet.addCell(new Label(4, 2, infoMap.get("char"), infoFormat));
sheet.addCell(new Label(0, 3, infoMap.get("infoPercent"), infoFormat));
sheet.addCell(new Label(2, 3, infoMap.get("dvrnvrPercent"), infoFormat));
sheet.addCell(new Label(4, 3, infoMap.get("charPercent"), infoFormat));
int rowNum = 5;
for (int i = 0; i < names.length; i++) {
sheet.addCell(new Label(i, 4, names[i], nameFormat));
}
for (int j = 0; j < objects.size(); j++) {
String[] obj = objects.get(j);
for (int h = 0; h < obj.length; h++) {
sheet.addCell(new Label(h, rowNum, obj[h], format));
}
rowNum = rowNum + 1;
}
wtwb.write();
wtwb.close();
return excelFile.getName();
}
public static String getContent(Sheet src, int rowNum, int colNum) {
return src.getRow(rowNum)[colNum].getContents().trim();
}
/**
* 从第i行开始到最后检测指定列的唯一性
*
* @param src
* @param colNum
* @param fromRow
* 起始行
* @return
*/
public static Boolean checkUnique(Sheet src, int colNum, int fromRow) {
Cell[] colCells = src.getColumn(colNum);
Set<String> set = new HashSet<String>();
for (int i = fromRow; i < colCells.length; i++) {
if (!StringUtils.isEmpty(colCells[i].getContents())
&& !set.add(colCells[i].getContents())) {
return false;
}
}
return true;
}
public static File getTempFile(String fileName) {
String dir = System.getProperty("java.io.tmpdir"); // 获取系统临时目录
return new File(dir + File.separator + fileName);
}
public static void main(String[] args) throws Exception {
String msg = "12345";
System.out.println(msg.indexOf("@"));
}
}

View File

@ -0,0 +1,28 @@
package com.jsh.erp.utils;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileInputStream;
import java.io.OutputStream;
public class ExportExecUtil {
public static void showExec(File excelFile,String fileName,HttpServletResponse response) throws Exception{
response.setContentType("application/octet-stream");
fileName = new String(fileName.getBytes("gbk"),"ISO8859_1");
response.setHeader("Content-Disposition", "attachment;filename=\"" + fileName + ".xls" + "\"");
FileInputStream fis = new FileInputStream(excelFile);
OutputStream out = response.getOutputStream();
int SIZE = 1024 * 1024;
byte[] bytes = new byte[SIZE];
int LENGTH = -1;
while((LENGTH = fis.read(bytes)) != -1){
out.write(bytes,0,LENGTH);
}
out.flush();
fis.close();
}
}

View File

@ -0,0 +1,334 @@
package com.jsh.erp.utils;
import com.alibaba.druid.util.StringUtils;
import java.io.*;
import java.util.*;
/**
*
* 文件处理工具类
*
*/
public class FileUtils {
/**
*  : 创建文件夹
*
* @param path
*  :要创建的文件夹名称
* @return 返回值: 如果成功true;否则false FileUtils.mkdir("/usr/apps/upload/");
*/
public static boolean makedir(String path) {
File file = new File(path);
if (!file.exists())
return file.mkdirs();
else
return true;
}
/**
* 保存文件
*
* @param stream
* @param path
* 存放路径
* @param filename
* 文件名
* @throws IOException
*/
public static void SaveFileFromInputStream(InputStream stream, String path, String filename)
throws IOException {
File file = new File(path);
boolean flag=true;
if(!file.exists()){
flag=file.mkdirs();
}
if(flag){
FileOutputStream fs = new FileOutputStream(new File(path+filename));
byte[] buffer = new byte[1024 * 1024];
int byteread = 0;
while ((byteread = stream.read(buffer)) != -1) {
fs.write(buffer, 0, byteread);
fs.flush();
}
fs.close();
stream.close();
}
}
/**
* 列出某个目录下的所有文件,子目录不列出
* @param folderPath:文件夹路径
* @return
*/
public static List<String> listFile(String folderPath){
List<String> fileList = new ArrayList<String>(); //FileViewer.getListFiles(destPath, null, false);
File f = new File(folderPath);
File[] t = f.listFiles();
for(int i = 0; i < t.length; i++){
fileList.add(t[i].getAbsolutePath());
}
return fileList;
}
/**
* 判断文件是否存在
*
* @param fileName
* @return
*/
public static boolean exists(String fileName) {
File file = new File(fileName);
if (file.exists()) {
return true;
} else {
return false;
}
}
/**
* 取当前路径
*
* @return
*/
public static String getCurrentPath() {
File directory = new File(".");
String nowPath = "";
try {
nowPath = directory.getCanonicalFile().toString();
} catch (IOException e) {
e.printStackTrace();
}
return nowPath;
}
/**
* 获取文件扩展名
*
* @param fileName
* @return
* */
public static String getFileExtendName(String fileName) {
if (fileName == null) {
return "";
} else {
return fileName.substring(fileName.lastIndexOf(".") + 1, fileName
.length());
}
}
/**
* 创建一个新文件如果存在则报错
*
* @param filePath
* @param fileName
* @return
*/
public static void createFile(String filePath, String fileName)
throws RuntimeException {
String file = null;
if (filePath == null) {
file = fileName;
} else {
file = filePath + File.separator + fileName;
}
createFile(file);
}
/**
* 创建一个新文件(含路径)如果存在则报错
*
* @param fileName
* 含有路径的文件名
* @return
*/
public static void createFile(String fileName) throws RuntimeException {
File f = new File(fileName);
if (f.exists()) {
throw new RuntimeException("FILE_EXIST_ERROR");
} else {
try {
File fileFolder = f.getParentFile();
if (!fileFolder.exists())
fileFolder.mkdirs();
f.createNewFile();
} catch (IOException ie) {
System.out.println("文件" + fileName + "创建失败:" + ie.getMessage());
throw new RuntimeException("FILE_CREATE_ERROR");
}
}
}
/**
* 创建目录如果存在则不创建
*
* @param path
* @return 返回结果null则创建成功否则返回的是错误信息
* @return
*/
public static String createDir(String path, boolean isCreateSubPah) {
String msg = null;
File dir = new File(path);
if (dir == null) {
msg = "不能创建空目录";
return msg;
}
if (dir.isFile()) {
msg = "已有同名文件存在";
return msg;
}
if (!dir.exists()) {
if (isCreateSubPah && !dir.mkdirs()) {
msg = "目录创建失败,原因不明";
} else if (!dir.mkdir()) {
msg = "目录创建失败,原因不明";
}
}
return msg;
}
/**
* 删除指定目录或文件 如果要删除是目录同时删除子目录下所有的文件
*
* @file:File 目录
* */
public static void delFileOrFolder(String fileName) {
if (!exists(fileName))
return;
File file = new File(fileName);
delFileOrFolder(file);
}
/**
* 删除指定目录或文件 如果要删除是目录同时删除子目录下所有的文件
*
* @file:File 目录
* */
public static void delFileOrFolder(File file) {
if (!file.exists())
return;
if (file.isFile()) {
file.delete();
} else {
File[] sub = file.listFiles();
if (sub == null || sub.length <= 0) {
file.delete();
} else {
for (int i = 0; i < sub.length; i++) {
delFileOrFolder(sub[i]);
}
file.delete();
}
}
}
/**
* 从Properties格式配置文件中获取所有参数并保存到HashMap中
* 配置中的key值即map表中的key值如果配置文件保存时用的中文则返回结果也会转成中文
*
* @param file
* @return
* @throws IOException
*/
@SuppressWarnings("unchecked")
public static HashMap readPropertyFile(String file, String charsetName) throws IOException {
if (charsetName==null || charsetName.trim().length()==0){
charsetName="gbk";
}
HashMap map = new HashMap();
InputStream is =null;
if(file.startsWith("file:"))
is=new FileInputStream(new File(file.substring(5)));
else
is=FileUtils.class.getClassLoader().getResourceAsStream(file);
Properties properties = new Properties();
properties.load(is);
Enumeration en = properties.propertyNames();
while (en.hasMoreElements()) {
String key = (String) en.nextElement();
String code = new String(properties.getProperty(key).getBytes(
"ISO-8859-1"), charsetName);
map.put(key, code);
}
return map;
}
/**
*
* @param path
* 文件路径
* @param suffix
* 后缀名
* @param isdepth
* 是否遍历子目录
* @return
*/
@SuppressWarnings("unchecked")
public static List getListFiles(String path, String suffix, boolean isdepth) {
File file = new File(path);
return FileUtils.listFile(file, suffix, isdepth);
}
/**
* @param f
* @param suffix后缀名
* @param isdepth是否遍历子目录
* @return
*/
@SuppressWarnings("unchecked")
public static List listFile(File f, String suffix, boolean isdepth) {
// 是目录同时需要遍历子目录
List<String> fileList = new ArrayList<String>();
if (f.isDirectory() && isdepth == true) {
File[] t = f.listFiles();
for (int i = 0; i < t.length; i++) {
listFile(t[i], suffix, isdepth);
}
} else {
String filePath = f.getAbsolutePath();
if (suffix != null) {
int begIndex = filePath.lastIndexOf(".");// 最后一个.(即后缀名前面的.)的索引
String tempsuffix = "";
if (begIndex != -1)// 防止是文件但却没有后缀名结束的文件
{
tempsuffix = filePath.substring(begIndex + 1, filePath
.length());
}
if (tempsuffix.equals(suffix)) {
fileList.add(filePath);
}
} else {
// 后缀名为null则为所有文件
fileList.add(filePath);
}
}
return fileList;
}
/**
* 方法追加文件使用FileWriter
*
* @param fileName
* @param content
*/
public static void appendMethod(String fileName, String content) {
try {
// 打开一个写文件器构造函数中的第二个参数true表示以追加形式写文件
FileWriter writer = new FileWriter(fileName, true);
writer.write(content + "\r\n");
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

View File

@ -33,6 +33,14 @@
<result column="UName" jdbcType="VARCHAR" property="UName" />
</resultMap>
<resultMap extends="BaseResultMap" id="ResultByMaterial" type="com.jsh.erp.datasource.entities.DepotItemVo4WithInfoEx">
<result column="MId" jdbcType="VARCHAR" property="MId" />
<result column="MName" jdbcType="VARCHAR" property="MName" />
<result column="MModel" jdbcType="VARCHAR" property="MModel" />
<result column="MaterialUnit" jdbcType="VARCHAR" property="MaterialUnit" />
<result column="MColor" jdbcType="VARCHAR" property="MColor" />
</resultMap>
<select id="selectByConditionDepotItem" parameterType="com.jsh.erp.datasource.entities.DepotItemExample" resultMap="BaseResultMap">
select *
FROM jsh_depotitem
@ -125,40 +133,40 @@
from jsh_depotitem di left join jsh_material m on di.MaterialId=m.id
left join jsh_unit u on m.UnitId = u.id
left join jsh_depot dp1 on di.DepotId=dp1.id
left join jsh_depot dp2 on di.AnotherDepotId=dp1.id
left join jsh_depot dp2 on di.AnotherDepotId=dp2.id
where di.HeaderId = ${headerId}
order by di.id asc
</select>
<select id="findByAll" parameterType="com.jsh.erp.datasource.entities.DepotItemExample" resultMap="ResultWithInfoExMap">
select di.*, m.Name MName, m.Model MModel, m.Unit MaterialUnit, m.Color MColor
<select id="findByAll" parameterType="com.jsh.erp.datasource.entities.DepotItemExample" resultMap="ResultByMaterial">
select m.id MId, m.Name MName, m.Model MModel, m.Unit MaterialUnit, m.Color MColor
from jsh_depotitem di
inner join jsh_material m on di.MaterialId=m.id
where 1=1
<if test="headIds != null">
and HeaderId in (${headIds})
and di.HeaderId in (${headIds})
</if>
<if test="materialIds != null">
and MaterialId in (${materialIds})
and di.MaterialId in (${materialIds})
</if>
group by MaterialId
group by m.id,m.Name, m.Model, m.Unit, m.Color
<if test="offset != null and rows != null">
limit #{offset},#{rows}
</if>
</select>
<select id="findByAllCount" resultType="java.lang.Integer">
select count(1) from (select di.Id
select count(1) from (select m.id
from jsh_depotitem di
inner join jsh_material m on di.MaterialId=m.id
where 1=1
<if test="headIds != null">
and HeaderId in (${headIds})
and di.HeaderId in (${headIds})
</if>
<if test="materialIds != null">
and MaterialId in (${materialIds})
and di.MaterialId in (${materialIds})
</if>
group by MaterialId) cc
group by m.id) cc
</select>
<select id="findByTypeInIsPrev" resultType="java.lang.Double">

View File

@ -77,4 +77,22 @@
UnitId = null
where Id = #{id,jdbcType=BIGINT}
</update>
<select id="findByAll" parameterType="com.jsh.erp.datasource.entities.MaterialExample" resultMap="ResultMapList">
select m.*,u.uname unitName, mc.name categoryName
FROM jsh_material m
left JOIN jsh_unit u on m.UnitId = u.id
left JOIN jsh_materialcategory mc on m.CategoryId = mc.id
where 1=1
<if test="name != null">
and m.name like '%${name}%'
</if>
<if test="model != null">
and m.model like '%${model}%'
</if>
<if test="categoryId != 1">
and m.CategoryId in (${categoryIds})
</if>
order by m.id asc
</select>
</mapper>

View File

@ -45,4 +45,25 @@
and description like '%${description}%'
</if>
</select>
<select id="findByAll" parameterType="com.jsh.erp.datasource.entities.SupplierExample" resultMap="BaseResultMap">
select *
FROM jsh_supplier
where 1=1
<if test="supplier != null">
and supplier like '%${supplier}%'
</if>
<if test="type != null">
and type='${type}'
</if>
<if test="phonenum != null">
and phonenum like '%${phonenum}%'
</if>
<if test="telephone != null">
and telephone like '%${telephone}%'
</if>
<if test="description != null">
and description like '%${description}%'
</if>
</select>
</mapper>