Jelajahi Sumber

流程添加项目信息和领料次数,项目管理中心添加模块,显示配网物资专职所有的物料总量和可用库存数量

yue 5 tahun lalu
induk
melakukan
4f8bc14170

+ 5 - 0
src/main/java/com/jeeplus/modules/sg/picking/activiti/mapper/ShowListMapper.java

@@ -46,6 +46,11 @@ public interface ShowListMapper extends BaseMapper<ShowList> {
     List<ShowList> findNewList(ShowList showList);
 
     /**
+     * 根据流程定义号获得领料清单
+     * */
+    List<ShowList> inventoryComparisonData(List<String> searchList);
+
+    /**
      * 根据id查询领料清单中的需要修改的那条信息
      * */
     ShowList findOneList(ShowList showList);

+ 21 - 0
src/main/java/com/jeeplus/modules/sg/picking/activiti/mapper/xml/ShowListMapper.xml

@@ -164,6 +164,27 @@
 	from md_process_list where procInsId = #{procInsId}
 	</select>
 
+	<select id="inventoryComparisonData" resultType="com.jeeplus.modules.sg.picking.activiti.entity.ShowList">
+	SELECT
+		id,
+		procInsId,
+		materialCode,
+		extensionDescription,
+		materialDescription,
+		mdUnits,
+		mdTotalAmount,
+		mdSingleWeight,
+		mdTotalWeight,
+		mdTheParty,
+		mdText
+	from md_process_list where procInsId in
+	(
+	<foreach collection="list" item="item" separator=",">
+		#{item}
+	</foreach>
+	)
+	</select>
+
 	<select id="findOneList" resultType="com.jeeplus.modules.sg.picking.activiti.entity.ShowList">
 	SELECT
 		id,

+ 7 - 0
src/main/java/com/jeeplus/modules/sg/picking/activiti/service/ShowListService.java

@@ -41,6 +41,13 @@ public class ShowListService extends CrudService<ShowListMapper, ShowList> {
 		return page;
 	}
 
+	public Page<ShowList> inventoryComparisonData(Page<ShowList> page, ShowList showList,List<String> searchList) {
+		dataRuleFilter(showList);
+		showList.setPage(page);
+		page.setList(mapper.inventoryComparisonData(searchList));
+		return page;
+	}
+
 	/**
 	 * 根据id查询领料清单中的需要修改的那条信息
 	 * */

+ 61 - 0
src/main/java/com/jeeplus/modules/sg/picking/activiti/web/PickIngController.java

@@ -75,6 +75,8 @@ public class PickIngController extends BaseController {
     @RequestMapping(value = "constructionLeader")
     public String constructionLeader(ShowList showList, Model model) {
         model.addAttribute("showList", showList);
+        ProjectNumber projectNumber = pickIngService.projectNumber(showList.getProcInsId());
+        model.addAttribute("projectNumber",projectNumber);
         return "modules/sg/picking/activiti/constructionLeader";
     }
 
@@ -84,6 +86,8 @@ public class PickIngController extends BaseController {
     @RequestMapping(value = "managerAudit")
     public String managerAudit(ShowList showList, Model model) {
         model.addAttribute("showList", showList);
+        ProjectNumber projectNumber = pickIngService.projectNumber(showList.getProcInsId());
+        model.addAttribute("projectNumber",projectNumber);
         return "modules/sg/picking/activiti/managerAudit";
     }
 
@@ -93,6 +97,8 @@ public class PickIngController extends BaseController {
     @RequestMapping(value = "netExamine")
     public String netExamine(ShowList showList, Model model) {
         model.addAttribute("showList", showList);
+        ProjectNumber projectNumber = pickIngService.projectNumber(showList.getProcInsId());
+        model.addAttribute("projectNumber",projectNumber);
         return "modules/sg/picking/activiti/netExamine";
     }
 
@@ -102,6 +108,8 @@ public class PickIngController extends BaseController {
     @RequestMapping(value = "fullExamine")
     public String fullExamine(ShowList showList, Model model) {
         model.addAttribute("showList", showList);
+        ProjectNumber projectNumber = pickIngService.projectNumber(showList.getProcInsId());
+        model.addAttribute("projectNumber",projectNumber);
         return "modules/sg/picking/activiti/fullExamine";
     }
 
@@ -111,6 +119,8 @@ public class PickIngController extends BaseController {
     @RequestMapping(value = "leaderExamine")
     public String leaderExamine(ShowList showList, Model model) {
         model.addAttribute("showList", showList);
+        ProjectNumber projectNumber = pickIngService.projectNumber(showList.getProcInsId());
+        model.addAttribute("projectNumber",projectNumber);
         return "modules/sg/picking/activiti/leaderExamine";
     }
 
@@ -172,6 +182,16 @@ public class PickIngController extends BaseController {
         return "modules/sg/picking/activiti/applicationAudit";
     }
 
+    /**
+     * 库存对比
+     */
+    @RequestMapping(value = "inventoryComparison")
+    @RequiresPermissions("picking:activiti:inventoryComparison")
+    public String inventoryComparison(ShowList showList, Model model) {
+        model.addAttribute("showList", showList);
+        return "modules/sg/picking/activiti/inventoryComparison";
+    }
+
 
     //    manager
     @ResponseBody
@@ -224,6 +244,47 @@ public class PickIngController extends BaseController {
         return getBootstrapData(page);
     }
 
+    @ResponseBody
+    @RequestMapping(value = "inventoryComparisonData")
+    public Map<String, Object> inventoryComparisonData(ShowList showList, HttpServletRequest request, HttpServletResponse response, Model model) {
+
+        //先查出所有在物资专职的节点的信息
+        List<String> activity = MyActiviUtils.findMdActivity("领料:配网物资专职审核领料单");
+        Page<ShowList> page = showListService.inventoryComparisonData(new Page<ShowList>(request, response),showList, activity);
+        List<ShowList> list = page.getList();
+        //相同的物料信息相加
+        HashMap<String, ShowList> tempMap = new HashMap<String, ShowList>();
+        for (ShowList show : list) {
+            String materialCode = show.getMaterialCode() + "|" + show.getExtensionDescription() + "|" + show.getExtensionDescription();
+            if (tempMap.containsKey(materialCode)) {
+                ShowList needShow = new ShowList();
+                tempMap.get(materialCode).setMdTotalAmount(tempMap.get(materialCode).getMdTotalAmount() + show.getMdTotalAmount());
+            } else {
+                tempMap.put(materialCode, show);
+            }
+        }
+        //合并后的list
+        List<ShowList> newShowList = new ArrayList<>();
+        Iterator<Map.Entry<String, ShowList>> iterator = tempMap.entrySet().iterator();
+        while (iterator.hasNext()) {
+            Map.Entry<String, ShowList> next = iterator.next();
+            ShowList newShow = next.getValue();
+            newShowList.add(newShow);
+        }
+        List<MaterialInventory> materialInventoryList = showListService.inventoryQuery(newShowList);
+
+        for (ShowList show : newShowList) {
+            //可用库存/
+            for (MaterialInventory ava : materialInventoryList) {
+                if (show.getMaterialCode().equals(ava.getMaterialCode()) && show.getMaterialDescription().equals(ava.getMaterialDetail())) {
+                    show.setAvailableStockQuantity(ava.getAvailableStockQuantity());
+                }
+            }
+        }
+        page.setList(newShowList);
+        return getBootstrapData(page);
+    }
+
     /**
      * 领料流程发起
      */

+ 1 - 0
src/main/webapp/webpage/modules/sg/picking/activiti/constructionLeader.jsp

@@ -14,6 +14,7 @@
 	<div class="panel-heading">
 		<h3 class="panel-title">施工单位领导审核</h3>
 	</div>
+		<h3>项目:${projectNumber.requireName}&nbsp;发起第${projectNumber.theNumber}次开具领料清单</h3>
 		<form:form id="inputForm" modelAttribute="showList" class="form-horizontal">
 			<input type="hidden" id="procInsId" name="procInsId" value="${showList.act.procInsId}"/>
 		</form:form>

+ 1 - 0
src/main/webapp/webpage/modules/sg/picking/activiti/fullExamine.jsp

@@ -14,6 +14,7 @@
         <div class="panel-heading">
             <h3 class="panel-title">施工单位物资专职审核</h3>
         </div>
+        <h3>项目:${projectNumber.requireName}&nbsp;发起第${projectNumber.theNumber}次开具领料清单</h3>
         <form:form id="inputForm" modelAttribute="showList" class="form-horizontal">
             <input type="hidden" id="procInsId" name="procInsId" value="${showList.act.procInsId}"/>
         </form:form>

+ 133 - 0
src/main/webapp/webpage/modules/sg/picking/activiti/inventoryComparison.js

@@ -0,0 +1,133 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<script>
+$(document).ready(function() {
+	var item = "";
+	var procInsId = $("#procInsId").val();
+		console.log(procInsId);
+		//bootstrapTable加载数据
+		$('#informationTable').bootstrapTable({
+			//请求方法
+			method: 'post',
+			//类型json
+			dataType: "json",
+			contentType: "application/x-www-form-urlencoded",
+			//显示检索按钮
+			showSearch: false,
+			//显示刷新按钮
+			showRefresh: false,
+			//显示切换手机试图按钮
+			showToggle: false,
+			//显示 内容列下拉框
+			showColumns: false,
+			//显示到处按钮
+			showExport: false,
+			//显示切换分页按钮
+			showPaginationSwitch: false,
+			//最低显示2行
+			minimumCountColumns: 2,
+			//是否显示行间隔色
+			striped: true,
+			//是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
+			cache: false,
+			//是否显示分页(*)
+			pagination: false,
+			//排序方式
+			sortOrder: "asc",
+			//初始化加载第一页,默认第一页
+			pageNumber: 1,
+			//每页的记录行数(*)
+			pageSize: 10,
+			//可供选择的每页的行数(*)
+			pageList: [10, 25, 50, 100],
+			//这个接口需要处理bootstrap table传递的固定参数,并返回特定格式的json数据
+			url: "${ctx}/picking/activiti/inventoryComparisonData",
+			//默认值为 'limit',传给服务端的参数为:limit, offset, search, sort, order Else
+			////查询参数,每次调用是会带上这个参数,可自定义
+			queryParams: function (params) {
+				var searchParam = $("#searchForm").serializeJSON();
+				searchParam.pageNo = params.limit === undefined ? "1" : params.offset / params.limit + 1;
+				searchParam.pageSize = params.limit === undefined ? -1 : params.limit;
+				searchParam.orderBy = params.sort === undefined ? "" : params.sort + " " + params.order;
+				return searchParam;
+			},
+			//分页方式:client客户端分页,server服务端分页(*)
+			sidePagination: "server",
+			contextMenuTrigger: "right",//pc端 按右键弹出菜单
+			contextMenuTriggerMobile: "press",//手机端 弹出菜单,click:单击, press:长按。
+			contextMenu: '#context-menu',
+			onClickRow: function (row, $el) {
+			},
+			onShowSearch: function () {
+				$("#search-collapse").slideToggle();
+			},
+			formatNoMatches: function () {
+				return "你的自定义文字说明";
+			},
+			columns: [
+				{
+					checkbox: true
+				},
+				{
+					field: 'materialCode',
+					title: '物料编码',
+				}, {
+					field: 'materialDescription',
+					title: '物料名称',
+				}, {
+					field: 'extensionDescription',
+					title: '扩展描述',
+					width:'200px'
+				}, {
+					field: 'mdUnits',
+					title: '单位',
+				}, {
+					field: 'mdTotalAmount',
+					title: '总量',
+				}, {
+					field: 'availableStockQuantity',
+					title: '可用库存数量',
+				}, {
+					field: 'mdTheParty',
+					title: '甲乙供',
+				}, {
+					field: 'mdText',
+					title: '备注',
+				}
+			]
+		});
+
+	  if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端
+		  $('#informationTable').bootstrapTable("toggleView");
+		}
+
+	$('#informationTable').on('check.bs.table uncheck.bs.table load-success.bs.table ' +
+		'check-all.bs.table uncheck-all.bs.table', function () {
+		$('#remove').prop('disabled', ! $('#informationTable').bootstrapTable('getSelections').length);
+		$('#view,#edit').prop('disabled', $('#informationTable').bootstrapTable('getSelections').length!=1);
+	});
+
+	// 绑定查询按扭
+	$("#search").click("click", function() {
+		$('#informationTable').bootstrapTable('refresh');
+	});
+
+	// 绑定查询重置按扭
+	$("#reset").click("click", function() {
+		$("#searchForm  input").val("");
+		$("#searchForm  select").val("");
+		$('#informationTable').bootstrapTable('refresh');
+	});
+
+});
+
+	function getIdSelections() {
+		return $.map($("#informationTable").bootstrapTable('getSelections'), function (row) {
+			return row.id
+		});
+	}
+	//刷新列表
+	function refresh() {
+		$('#informationTable').bootstrapTable('refresh');
+	}
+
+</script>

+ 25 - 0
src/main/webapp/webpage/modules/sg/picking/activiti/inventoryComparison.jsp

@@ -0,0 +1,25 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>库存对比</title>
+	<meta http-equiv="Content-type" content="text/html; charset=utf-8">
+	<meta name="decorator" content="ani"/>
+	<%@ include file="/webpage/include/bootstraptable.jsp"%>
+	<%@include file="inventoryComparison.js" %>
+</head>
+<body>
+	<div class="wrapper wrapper-content">
+	<div class="panel panel-primary">
+	<div class="panel-heading">
+		<h3 class="panel-title">库存对比</h3>
+	</div>
+		<form:form id="inputForm" modelAttribute="showList" class="form-horizontal">
+			<input type="hidden" id="procInsId" name="procInsId" value="${showList.act.procInsId}"/>
+		</form:form>
+			<table id="informationTable"   data-toolbar="#toolbar" class="table"></table>
+		</div>
+	</div>
+	</div>
+</body>
+</html>

+ 1 - 0
src/main/webapp/webpage/modules/sg/picking/activiti/leaderExamine.jsp

@@ -14,6 +14,7 @@
 	<div class="panel-heading">
 		<h3 class="panel-title">项目中心领导审核领料单</h3>
 	</div>
+		<h3>项目:${projectNumber.requireName}&nbsp;发起第${projectNumber.theNumber}次开具领料清单</h3>
 		<form:form id="inputForm" modelAttribute="showList" class="form-horizontal">
 			<input type="hidden" id="procInsId" name="procInsId" value="${showList.act.procInsId}"/>
 		</form:form>

+ 1 - 0
src/main/webapp/webpage/modules/sg/picking/activiti/managerAudit.jsp

@@ -14,6 +14,7 @@
 	<div class="panel-heading">
 		<h3 class="panel-title">配网项目经理审核领料单</h3>
 	</div>
+		<h3>项目:${projectNumber.requireName}&nbsp;发起第${projectNumber.theNumber}次开具领料清单</h3>
 		<form:form id="inputForm" modelAttribute="showList" class="form-horizontal">
 			<input type="hidden" id="procInsId" name="procInsId" value="${showList.act.procInsId}"/>
 		</form:form>

+ 1 - 0
src/main/webapp/webpage/modules/sg/picking/activiti/netExamine.jsp

@@ -30,6 +30,7 @@
 			<input type="hidden" id="procInsId" name="procInsId" value="${showList.act.procInsId}"/>
 		</form:form>
 		<div class="panel-body">
+			<h3>项目:${projectNumber.requireName}&nbsp;发起第${projectNumber.theNumber}次开具领料清单</h3>
 			<div>
 				<ul class="nav nav-tabs">
 					<li role="presentation" id="click2" style="border-bottom: 0px;border-left: 1px solid rgb(221,221,221);border-right: 1px solid rgb(221,221,221);border-top: 1px solid rgb(221,221,221)"><a id="qd" href="javascript:void(0)">查看领料清单</a></li>