Bladeren bron

午餐订单模块

user5 5 jaren geleden
bovenliggende
commit
ce937a5336

+ 17 - 0
src/main/java/com/jeeplus/modules/wexintheorder/dao/TheOrderWebDao.java

@@ -0,0 +1,17 @@
+package com.jeeplus.modules.wexintheorder.dao;
+
+import com.jeeplus.common.persistence.CrudDao;
+import com.jeeplus.common.persistence.annotation.MyBatisDao;
+import com.jeeplus.modules.projectrecord.entity.ProjectRecords;
+import com.jeeplus.modules.sys.entity.User;
+import com.jeeplus.modules.wexintheorder.entity.TheOrder;
+
+@MyBatisDao
+public interface TheOrderWebDao extends CrudDao<TheOrder> {
+    int queryCount(TheOrder theOrder);
+
+    Integer insertOrder(TheOrder theOrder);
+
+    Integer updateOrder(TheOrder theOrder);
+
+}

+ 48 - 1
src/main/java/com/jeeplus/modules/wexintheorder/entity/TheOrder.java

@@ -1,20 +1,53 @@
 package com.jeeplus.modules.wexintheorder.entity;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.jeeplus.common.persistence.DataEntity;
+import com.jeeplus.common.utils.excel.annotation.ExcelField;
 
-import javax.xml.crypto.Data;
 import java.util.Date;
 
 public class TheOrder extends DataEntity<TheOrder> {
+    private String serialNumber;//序号
     private String name;//姓名
     private String department;//部门
     private String leadership;//分管领导
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date confirmOrder;//确定订餐
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date scheduled;//预定餐
     private String correlationId;//关联id
+    private Integer orderStatus; // 订餐状态(0:预定;1:订餐)
 
     private String status;//有无回显 1-回显 2-本来就有
 
+
+    private Date beginDate;
+    private Date endDate;
+
+    public Date getBeginDate() {
+        return beginDate;
+    }
+
+    public void setBeginDate(Date beginDate) {
+        this.beginDate = beginDate;
+    }
+
+    public Date getEndDate() {
+        return endDate;
+    }
+
+    public void setEndDate(Date endDate) {
+        this.endDate = endDate;
+    }
+
+    public Integer getOrderStatus() {
+        return orderStatus;
+    }
+
+    public void setOrderStatus(Integer orderStatus) {
+        this.orderStatus = orderStatus;
+    }
+
     public String getStatus() {
         return status;
     }
@@ -23,6 +56,16 @@ public class TheOrder extends DataEntity<TheOrder> {
         this.status = status;
     }
 
+    @ExcelField(title="序号", align=2, sort=1)
+    public String getSerialNumber() {
+        return serialNumber;
+    }
+
+    public void setSerialNumber(String serialNumber) {
+        this.serialNumber = serialNumber;
+    }
+
+    @ExcelField(title="姓名", align=2, sort=2)
     public String getName() {
         return name;
     }
@@ -31,6 +74,7 @@ public class TheOrder extends DataEntity<TheOrder> {
         this.name = name;
     }
 
+    @ExcelField(title="部门", align=2, sort=3)
     public String getDepartment() {
         return department;
     }
@@ -39,6 +83,7 @@ public class TheOrder extends DataEntity<TheOrder> {
         this.department = department;
     }
 
+    @ExcelField(title="分管领导", align=2, sort=4)
     public String getLeadership() {
         return leadership;
     }
@@ -47,6 +92,7 @@ public class TheOrder extends DataEntity<TheOrder> {
         this.leadership = leadership;
     }
 
+    @ExcelField(title="订餐时间", align=2, sort=5)
     public Date getConfirmOrder() {
         return confirmOrder;
     }
@@ -55,6 +101,7 @@ public class TheOrder extends DataEntity<TheOrder> {
         this.confirmOrder = confirmOrder;
     }
 
+    @ExcelField(title="预定时间", align=2, sort=6)
     public Date getScheduled() {
         return scheduled;
     }

+ 87 - 0
src/main/java/com/jeeplus/modules/wexintheorder/service/TheOrderWebService.java

@@ -0,0 +1,87 @@
+package com.jeeplus.modules.wexintheorder.service;
+
+import com.jeeplus.common.persistence.Page;
+import com.jeeplus.common.service.CrudService;
+import com.jeeplus.common.utils.MenuStatusEnum;
+import com.jeeplus.modules.sys.utils.UserUtils;
+import com.jeeplus.modules.wexintheorder.dao.TheOrderDao;
+import com.jeeplus.modules.wexintheorder.dao.TheOrderWebDao;
+import com.jeeplus.modules.wexintheorder.entity.TheOrder;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
+@Service
+public class TheOrderWebService extends CrudService<TheOrderWebDao,TheOrder>{
+    @Autowired
+    private TheOrderDao theOrderDao;
+
+    public Page<TheOrder> findPage(Page<TheOrder> page, TheOrder theOrder) {
+        //设置数据权限
+        if(!UserUtils.getUser().isAdmin()) {
+            String dataScopeSql = dataScopeFilterOR(theOrder.getCurrentUser(), "o", "u", "s", MenuStatusEnum.WORK_STOCK.getValue());
+            theOrder.getSqlMap().put("dsf", dataScopeSql);
+        }
+        if (null == theOrder.getOrderStatus()){
+            theOrder.setOrderStatus(0);
+        }
+        Date time = new Date();
+        if (null == theOrder.getBeginDate()){
+            time = time(0);
+            theOrder.setBeginDate(time);
+        }
+        if (null == theOrder.getEndDate()){
+            time = time(1);
+            theOrder.setEndDate(time);
+        }
+        int count = dao.queryCount(theOrder);
+        page.setCount(count);
+        page.setCountFlag(false);
+        theOrder.setPage(page);
+        List<TheOrder> recordsList = findList(theOrder);
+        page.setList(recordsList);
+        return page;
+    }
+
+    public List<TheOrder> findList(TheOrder theOrder) {
+        return super.findList(theOrder);
+    }
+
+    private static Date time(Integer status){
+        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
+        Calendar c = Calendar.getInstance();
+        Date date = new Date();
+        try {
+            if (0 == status){
+                date = sf.parse(sf.format(c.getTime()));
+            } else if (1 == status){
+                c.add(Calendar.DAY_OF_MONTH, 1);
+                date = sf.parse(sf.format(c.getTime()));
+            }
+            System.out.println(date);
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+        return date;
+    }
+
+    //增加操作
+    @Transactional
+    public void insertOrder(TheOrder theOrder){
+        theOrderDao.insertOrder(theOrder);
+    };
+
+    //修改操作
+    @Transactional
+    public void updateOrder(TheOrder theOrder){
+        theOrderDao.updateOrder(theOrder);
+    }
+
+
+}

File diff suppressed because it is too large
+ 1012 - 0
src/main/java/com/jeeplus/modules/wexintheorder/utils/TheOrderExportExcel.java


+ 89 - 0
src/main/java/com/jeeplus/modules/wexintheorder/web/TheOrderWebController.java

@@ -0,0 +1,89 @@
+package com.jeeplus.modules.wexintheorder.web;
+
+import com.jeeplus.common.config.Global;
+import com.jeeplus.common.persistence.Page;
+import com.jeeplus.common.utils.DateUtils;
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.common.web.BaseController;
+import com.jeeplus.modules.wexintheorder.entity.TheOrder;
+import com.jeeplus.modules.wexintheorder.service.TheOrderWebService;
+import com.jeeplus.modules.wexintheorder.utils.TheOrderExportExcel;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.servlet.mvc.support.RedirectAttributes;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+
+@Controller
+@RequestMapping(value = "${adminPath}/wexin/theorderweb")
+public class TheOrderWebController extends BaseController {
+
+    @Autowired
+    private TheOrderWebService theOrderWebService;
+
+    @ModelAttribute
+    public TheOrder get(@RequestParam(required=false) String id) {
+        TheOrder theOrder = null;
+        if (StringUtils.isNotBlank(id)){
+            theOrder = theOrderWebService.get(id);
+        }
+        if (theOrder == null){
+            theOrder = new TheOrder();
+        }
+        return theOrder;
+    }
+
+    /**
+     * 项目列表页面
+     */
+    @RequiresPermissions("wexin:theorderweb:list")
+    @RequestMapping(value = {"list", ""})
+    public String list(TheOrder theOrder, HttpServletRequest request, HttpServletResponse response, Model model) {
+        Page<TheOrder> page = theOrderWebService.findPage(new Page<TheOrder>(request, response), theOrder);
+        model.addAttribute("page", page);
+        return "modules/theorder/theOrderList";
+    }
+
+    /**
+     * 导出excel文件
+     */
+    @RequiresPermissions("wexin:theorderweb:export")
+    @RequestMapping(value = "export", method= RequestMethod.POST)
+    public String exportFile(TheOrder theOrder, HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) {
+        try {
+            String fileHeader = null;
+            String excelHeaderName = null;
+            if (null != theOrder.getOrderStatus() && 0 == theOrder.getOrderStatus()){
+                fileHeader = "预订单";
+            }else if (null != theOrder.getOrderStatus() && 1 == theOrder.getOrderStatus()){
+                fileHeader = "确定单";
+            }
+            if (null != theOrder.getBeginDate()){
+                excelHeaderName = dateTimeStr(theOrder.getBeginDate());
+            }
+            String fileName = fileHeader+ DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
+            Page<TheOrder> page = theOrderWebService.findPage(new Page<TheOrder>(request, response, -1), theOrder);
+            new TheOrderExportExcel(excelHeaderName + fileHeader, theOrder.getOrderStatus(), TheOrder.class).setDataList(page.getList(), theOrder.getOrderStatus()).write(response, fileName).dispose();
+            return null;
+        } catch (Exception e) {
+            addMessage(redirectAttributes, "导出项目记录失败!失败信息:"+e.getMessage());
+        }
+        return "redirect:"+ Global.getAdminPath()+"/project/projectRecords/?repage";
+    }
+
+    private static String dateTimeStr(Date dateTime){
+        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
+        Calendar c = Calendar.getInstance();
+        return sf.format(dateTime);
+    }
+}

+ 121 - 0
src/main/resources/mappings/modules/wexintheorder/TheOrderWebDao.xml

@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.jeeplus.modules.wexintheorder.dao.TheOrderWebDao">
+	<sql id="orderColumns">
+		a.id AS "id",
+		a.create_by AS "createBy.id",
+		a.create_date AS "createDate",
+		a.update_by AS "updateBy.id",
+		a.update_date AS "updateDate",
+		a.remarks AS "remarks",
+		a.del_flag AS "delFlag",
+		a.name AS "name",
+		a.department AS "department",
+		a.leadership AS "leadership",
+		a.confirmOrder AS "confirmOrder",
+		a.scheduled AS "scheduled",
+		a.correlationId AS "correlationId"
+	</sql>
+
+	<select id="get" resultType="com.jeeplus.modules.wexintheorder.entity.TheOrder">
+		SELECT
+		<include refid="orderColumns"/>
+		FROM the_order a
+		WHERE a.id = #{id}
+	</select>
+
+	<select id="findList" resultType="com.jeeplus.modules.wexintheorder.entity.TheOrder" >
+		SELECT
+		(@rownum :=@rownum + 1) as "serialNumber",
+		<include refid="orderColumns"/>
+		FROM the_order a,(select @rownum := 0) temp
+		<where>
+			a.del_flag = #{DEL_FLAG_NORMAL}
+			<if test="orderStatus != null and orderStatus = 0">
+				<if test="beginDate !=null">
+					and a.scheduled >= #{beginDate}
+				</if>
+				<if test="endDate !=null">
+					and a.scheduled &lt; #{endDate}
+				</if>
+			</if>
+			<if test="orderStatus != null and orderStatus = 1">
+				<if test="beginDate !=null">
+					and a.confirmOrder >= #{beginDate}
+				</if>
+				<if test="endDate !=null">
+					and a.confirmOrder &lt; #{endDate}
+				</if>
+			</if>
+		</where>
+		<choose>
+			<when test="page !=null and page.orderBy != null and page.orderBy != ''">
+				ORDER BY ${page.orderBy}
+			</when>
+			<otherwise>
+				ORDER BY a.leadership desc, a.update_date DESC
+			</otherwise>
+		</choose>
+	</select>
+
+	<select id="queryCount" resultType="int">
+		SELECT count(DISTINCT a.id)
+		from the_order a
+	  	<where>
+			<if test="orderStatus != null and orderStatus = 0">
+				<if test="beginDate !=null">
+					and a.scheduled >= #{beginDate}
+				</if>
+				<if test="endDate !=null">
+					and a.scheduled &lt; #{endDate}
+				</if>
+			</if>
+			<if test="orderStatus != null and orderStatus = 1">
+				<if test="beginDate !=null">
+					and a.confirmOrder >= #{beginDate}
+				</if>
+				<if test="endDate !=null">
+					and a.confirmOrder &lt; #{endDate}
+				</if>
+			</if>
+		</where>
+	</select>
+
+	<insert id="insertOrder">
+		INSERT INTO the_order(
+			id,
+			create_by,
+			create_date,
+			update_by,
+			update_date,
+			remarks,
+			del_flag,
+			name,
+			department,
+			leadership,
+			confirmOrder,
+			scheduled,
+			correlationId
+		) VALUES (
+			#{id},
+			#{createBy.id},
+			#{createDate},
+			#{updateBy.id},
+			#{updateDate},
+			#{remarks},
+			#{delFlag},
+			#{name},
+			#{department},
+			#{leadership},
+			#{confirmOrder},
+			#{scheduled},
+			#{correlationId}
+		)
+	</insert>
+
+	<update id="updateOrder">
+
+	</update>
+
+
+</mapper>

+ 187 - 0
src/main/webapp/webpage/modules/theorder/theOrderList.jsp

@@ -0,0 +1,187 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>午餐订单管理</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+        $(document).ready(function() {
+            //搜索框收放
+            $('#moresee').click(function(){
+                if($('#moresees').is(':visible'))
+                {
+                    $('#moresees').slideUp(0,resizeListWindow2);
+                    $('#moresee i').removeClass("glyphicon glyphicon-menu-up").addClass("glyphicon glyphicon-menu-down");
+                }else{
+                    $('#moresees').slideDown(0,resizeListWindow2);
+                    $('#moresee i').removeClass("glyphicon glyphicon-menu-down").addClass("glyphicon glyphicon-menu-up");
+                }
+            });
+            laydate.render({
+                elem: '#beginDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date',
+                value: new Date(),
+                done: function (value, date) {
+                }
+            });
+            laydate.render({
+                elem: '#endDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date',
+                value : getRecentDay(1)
+            });
+        });
+
+        /**获取近N天*/
+        function getRecentDay(day){
+            var today = new Date();
+            var targetday_milliseconds=today.getTime() + 1000*60*60*24*day;
+            today.setTime(targetday_milliseconds);
+            var tYear = today.getFullYear();
+            var tMonth = today.getMonth();
+            var tDate = today.getDate();
+            tMonth = doHandleMonth(tMonth + 1);
+            tDate = doHandleMonth(tDate);
+            return tYear+"-"+tMonth+"-"+tDate;
+        }
+        function doHandleMonth(month){
+            var m = month;
+            if(month.toString().length == 1){
+                m = "0" + month;
+            }
+            return m;
+        }
+
+        function reset() {
+            $("#searchForm").resetForm();
+        }
+	</script>
+	<style>
+		body{
+			background-color:transparent;
+			filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#26FFFFFF, endColorstr=#26FFFFFF);
+			color:#ffffff;
+			background-color:rgba(255,255,255,0);
+			height:100%;
+		}
+	</style>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+	<sys:message content="${message}"/>
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="layui-row contentShadow shadowLR" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="theOrder" action="${ctx}/wexin/theorderweb/" method="post" class="form-inline">
+					<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+					<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+					<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/>
+					<div class="commonQuery lw6">
+						<div class="layui-item query athird ">
+							<label class="layui-form-label">创建时间:</label>
+							<div class="layui-input-block">
+								<input id="beginDate" name="beginDate" placeholder="开始时间" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+									   value="<fmt:formatDate value="${projectRecords.beginDate}" pattern="yyyy-MM-dd HH:ss:mm"/>"/>
+								</input>
+								<span class="group-sep">-</span>
+								<input id="endDate" name="endDate" placeholder="结束时间" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+									   value="<fmt:formatDate value="${projectRecords.endDate}" pattern="yyyy-MM-dd HH:ss:mm"/>"/>
+								</input>
+							</div>
+						</div>
+						<div class="layui-item query athird ">
+							<label class="layui-form-label">状态:</label>
+							<div class="layui-input-block">
+								<form:select path="orderStatus" class=" form-control  simple-select">
+									<form:option value="0" label="预定信息"/>
+									<form:option value="1" label="确定信息"/>
+								</form:select>
+							</div>
+						</div>
+						<div class="layui-item athird">
+							<div class="input-group">
+								<a href="#" id="moresee"><i class="glyphicon glyphicon-menu-down"></i></a>
+								<button id="searchReset" class="fixed-btn searchReset fr" onclick="resetSearch()">重置</button>
+								<button id="searchQuery" class="fixed-btn searchQuery fr" onclick="search()">查询</button>
+							</div>
+						</div>
+						<div style="    clear:both;"></div>
+					</div>
+				</form:form>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="layui-form contentDetails contentShadow shadowLBR">
+				<div class="nav-btns">
+					<shiro:hasPermission name="wexin:theorderweb:export">
+						<table:exportExcel url="${ctx}/wexin/theorderweb/export"></table:exportExcel><!-- 导出按钮 -->
+					</shiro:hasPermission>
+					<button class="nav-btn nav-btn-refresh" data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i>&nbsp;刷新</button>
+					<div style="clear: both;"></div>
+				</div>
+				<table class="oa-table layui-table" id="contentTable1"></table>
+
+				<!-- 分页代码 -->
+				<table:page page="${page}"></table:page>
+				<div style="clear: both;"></div>
+			</div>
+		</div>
+	</div>
+	<div id="changewidth"></div>
+</div>
+
+<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+<script>
+
+    layui.use('table', function(){
+        layui.table.render({
+            limit:${ page.pageSize }
+            ,elem: '#contentTable1'
+            ,page: false
+            ,cols: [[
+                {field:'index',align:'center', title: '序号',width:40}
+                ,{field:'name', align:'center',title: '姓名',minWidth:100,templet:function(d){
+                        return "<span title='"+ d.name +"'>" + d.name + "</span>";
+                    }}
+                ,{field:'department', align:'center',title: '部门',minWidth:100,templet:function(d){
+                        return "<span title='"+ d.department +"'>" + d.department + "</span>";
+                    }}
+                ,{field:'leadership', align:'center',title: '分管领导',minWidth:100,templet:function(d){
+                        return "<span title='"+ d.leadership +"'>" + d.leadership + "</span>";
+                    }}
+                ,{field:'confirmOrder',align:'center', title: '订餐时间',  width:180}
+                ,{field:'scheduled',align:'center', title: '预定时间',  width:180}
+                ,{field:'createDate',align:'center', title: '创建时间',  width:180}
+            ]]
+            ,data: [
+                <c:if test="${ not empty page.list}">
+                <c:forEach items="${page.list}" var="theOrder" varStatus="index">
+                <c:if test="${index.index != 0}">,</c:if>
+                {
+                    "index":"${index.index+1}"
+                    ,"id":"${theOrder.id}"
+                    ,"name":"${theOrder.name}"
+                    ,"department":"${theOrder.department}"
+                    ,"leadership":"${theOrder.leadership}"
+                    ,"confirmOrder":"<fmt:formatDate value="${theOrder.confirmOrder}" pattern="yyyy-MM-dd HH:ss:mm"/>"
+                    ,"scheduled":"<fmt:formatDate value="${theOrder.scheduled}" pattern="yyyy-MM-dd HH:ss:mm"/>"
+                    ,"createDate":"<fmt:formatDate value="${theOrder.createDate}" pattern="yyyy-MM-dd HH:ss:mm"/>"
+                }
+                </c:forEach>
+                </c:if>
+            ]
+        });
+    })
+
+    resizeListTable();
+    $("a").on("click",addLinkVisied);
+</script>
+<script>
+    resizeListWindow2();
+    $(window).resize(function(){
+        resizeListWindow2();
+    });
+</script>
+</body>
+</html>