user5 преди 3 години
родител
ревизия
2770278f0f

+ 208 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/materialproject/entity/MaterialProject.java

@@ -0,0 +1,208 @@
+package com.jeeplus.modules.sg.managementcenter.materialproject.entity;
+
+import com.jeeplus.common.utils.excel.annotation.ExcelField;
+import com.jeeplus.core.persistence.DataEntity;
+
+public class MaterialProject extends DataEntity<MaterialProject> {
+    //储备项目名称
+    private String reserveProjectName;
+    //储备编码
+    private String reserveCode;
+    //项目类型
+    private String projectType;
+    //项目计划年度批次
+    private String batchPlan;
+    //项目正式发文批次
+    private String issuePlan;
+    //项目年度实施计划(月份)
+    private String monthPlan;
+    //年度计划有无预测
+    private String hasPlan;
+    //项目物资执行计划(上半年/下半年)
+    private String halfPlan;
+    //项目定义
+    private String projectId;
+    //项目名称
+    private String projectName;
+    //是否是二次涉电项目
+    private String isSecondary;
+    //归属年份
+    private String attributionYear;
+    //项目是否可以进场状态
+    private String canEnter;
+
+    private String arrageProject;//项目计划安排
+    private String arrageProject1;//项目计划安排
+
+    private String projectStatus;
+
+    private String[] reserveCodes;//储备编码(多条)
+    private String[] projectCodes;//项目编码(多条)
+
+    private String secondPower;//是否二次设电 1-未二次涉电 1-二次涉电
+
+
+
+    @ExcelField(title="储备项目名称", align=2, sort=1)
+    public String getReserveProjectName() {
+        return reserveProjectName;
+    }
+
+    public void setReserveProjectName(String reserveProjectName) {
+        this.reserveProjectName = reserveProjectName;
+    }
+
+    @ExcelField(title="储备编码", align=2, sort=2)
+    public String getReserveCode() {
+        return reserveCode;
+    }
+
+    public void setReserveCode(String reserveCode) {
+        this.reserveCode = reserveCode;
+    }
+
+    @ExcelField(title="项目类型", align=2, sort=3)
+    public String getProjectType() {
+        return projectType;
+    }
+
+    public void setProjectType(String projectType) {
+        this.projectType = projectType;
+    }
+
+    @ExcelField(title="项目计划年度批次", align=2, sort=4)
+    public String getBatchPlan() {
+        return batchPlan;
+    }
+
+    public void setBatchPlan(String batchPlan) {
+        this.batchPlan = batchPlan;
+    }
+
+    @ExcelField(title="项目正式发文批次", align=2, sort=5)
+    public String getIssuePlan() {
+        return issuePlan;
+    }
+
+    public void setIssuePlan(String issuePlan) {
+        this.issuePlan = issuePlan;
+    }
+
+    @ExcelField(title="项目年度实施计划", align=2, sort=6)
+    public String getMonthPlan() {
+        return monthPlan;
+    }
+
+    public void setMonthPlan(String monthPlan) {
+        this.monthPlan = monthPlan;
+    }
+
+    @ExcelField(title="年度计划有无预测", align=2, sort=7)
+    public String getHasPlan() {
+        return hasPlan;
+    }
+
+    public void setHasPlan(String hasPlan) {
+        this.hasPlan = hasPlan;
+    }
+
+    @ExcelField(title="项目物资执行计划", align=2, sort=8)
+    public String getHalfPlan() {
+        return halfPlan;
+    }
+
+    public void setHalfPlan(String halfPlan) {
+        this.halfPlan = halfPlan;
+    }
+
+    @ExcelField(title="项目定义", align=2, sort=9)
+    public String getProjectId() {
+        return projectId;
+    }
+
+    public void setProjectId(String projectId) {
+        this.projectId = projectId;
+    }
+
+    @ExcelField(title="项目名称", align=2, sort=10)
+    public String getProjectName() {
+        return projectName;
+    }
+
+    public void setProjectName(String projectName) {
+        this.projectName = projectName;
+    }
+
+    @ExcelField(title="归属年份", align=2, sort=11)
+    public String getAttributionYear() {
+        return attributionYear;
+    }
+
+    public void setAttributionYear(String attributionYear) {
+        this.attributionYear = attributionYear;
+    }
+
+    public String getCanEnter() {
+        return canEnter;
+    }
+
+    public void setCanEnter(String canEnter) {
+        this.canEnter = canEnter;
+    }
+
+    public String getIsSecondary() {
+        return isSecondary;
+    }
+
+    public void setIsSecondary(String isSecondary) {
+        this.isSecondary = isSecondary;
+    }
+
+    public String getSecondPower() {
+        return secondPower;
+    }
+
+    public void setSecondPower(String secondPower) {
+        this.secondPower = secondPower;
+    }
+
+    public String getArrageProject1() {
+        return arrageProject1;
+    }
+
+    public void setArrageProject1(String arrageProject1) {
+        this.arrageProject1 = arrageProject1;
+    }
+
+    public String getArrageProject() {
+        return arrageProject;
+    }
+
+    public void setArrageProject(String arrageProject) {
+        this.arrageProject = arrageProject;
+    }
+
+    public String[] getReserveCodes() {
+        return reserveCodes;
+    }
+
+    public void setReserveCodes(String[] reserveCodes) {
+        this.reserveCodes = reserveCodes;
+    }
+
+    public String[] getProjectCodes() {
+        return projectCodes;
+    }
+
+    public void setProjectCodes(String[] projectCodes) {
+        this.projectCodes = projectCodes;
+    }
+
+    public String getProjectStatus() {
+        return projectStatus;
+    }
+
+    public void setProjectStatus(String projectStatus) {
+        this.projectStatus = projectStatus;
+    }
+}

+ 362 - 30
src/main/java/com/jeeplus/modules/supply/stockOut/entity/SupplyStockOut.java

@@ -1,41 +1,373 @@
 package com.jeeplus.modules.supply.stockOut.entity;
 
+import com.jeeplus.common.utils.excel.annotation.ExcelField;
 import com.jeeplus.core.persistence.DataEntity;
 
+import java.util.Date;
+
 /**
  * 出库单表
  * @author: 徐滕
  * @create: 2022-02-25 08:53
  **/
 public class SupplyStockOut extends DataEntity<SupplyStockOut> {
-    private String stockOutNumber;
-    private String wbsElement;
-    private String projectName;
-    private String projectDefinition;
-    private String materialNumber;
-    private String materialDescription;
-    private String batch;
-    private String unit;
-    private String actualQuantityIssued;
-    private String unitPrice;
-    private String money;
-    private String postingAccountDate;
-    private String supplierName;
-    private String factory;
-    private String pickingNumber;
-    private String pickingCreateBy;
-    private String pickingDepartment;
-    private String reservedNumber;
-    private String repertoryPlace;
-    private String ProjectPackageName;
-    private String stockOutPerson;
-    private String wbsElementDescription;
-    private String projectSecondClassification;
-    private String projectThirdlyClassification;
-    private String orderNumber;
-    private String assessType;
-    private String remarks;
-    private String stockOutImportDate;
-    private String accountantCertificate;
-    private String replyProof;
+    private String choose;                  //选择
+    private String serialNumber;            //序号
+    private String stockOutNumber;          //varchar(255) 出库单编号
+    private String wbsElement;              //varchar(255) wbs元素
+    private String projectName;             //varchar(255) 项目名称
+    private String projectDefinition;       //varchar(255) 项目定义号
+    private String materialNumber;          //varchar(255) 物料编码
+    private String materialDescription;     //varchar(500) 物料描述
+    private String batch;                   //varchar(255) 批次
+    private String unit;                    //varchar(255) 计量单位
+    private String actualQuantityIssued;    //varchar(255) 实发数量
+    private String unitPrice;               //varchar(255) 单价
+    private String money;                   //varchar(255) 金额
+    private Date postingAccountDate;        //datetime 过账日期
+    private String postingAccountDateStr;        //datetime 过账日期(Str)
+    private Date postingAccountDate2;        //datetime 过账日期(2)不进行存储
+    private String supplierName;            //varchar(255) 供应商名称
+    private String factory;                 //varchar(255) 工厂
+    private String pickingNumber;           //varchar(255) 领料单号
+    private String pickingCreateBy;         //varchar(255) 领料单创建人
+    private String pickingDepartment;       //varchar(255) 领料部门
+    private String reservedNumber;          //varchar(255) 预留号
+    private String repertoryPlace;          //varchar(255) 库存地点
+    private String projectPackageName;      //varchar(255) 项目包名称
+    private String stockOutPerson;          //varchar(255) 出库人
+    private String wbsElementDescription;   //varchar(500) wbs元素描述
+    private String projectSecondClassification;     //varchar(255) 项目二级分类
+    private String projectThirdlyClassification;    //varchar(255) 项目三级分类
+    private String orderNumber;             //varchar(255) 订单号
+    private String assessType;              //varchar(255) 评估类型
+    private String remarks;                 //varchar(255) 备注
+    private Date stockOutImportDate;        //datetime 出库单输入日期
+    private String accountantCertificate;   //varchar(255) 会计凭证
+    private String replyProof;              //varchar(255) 可研批复文号
+    private Date beginDate;                 //开始时间
+    private Date endDate;                   //结束事件
+
+    @ExcelField(title="选择", align=2, sort=1)
+    public String getChoose() {
+        return choose;
+    }
+
+    @ExcelField(title="序号", align=2, sort=2)
+    public String getSerialNumber() {
+        return serialNumber;
+    }
+
+    @ExcelField(title="出库单编号", align=2, sort=3)
+    public String getStockOutNumber() {
+        return stockOutNumber;
+    }
+
+    @ExcelField(title="wbs元素", align=2, sort=4)
+    public String getWbsElement() {
+        return wbsElement;
+    }
+
+    @ExcelField(title="项目名称", align=2, sort=5)
+    public String getProjectName() {
+        return projectName;
+    }
+
+    @ExcelField(title="项目定义号", align=2, sort=6)
+    public String getProjectDefinition() {
+        return projectDefinition;
+    }
+
+    @ExcelField(title="物料编码", align=2, sort=7)
+    public String getMaterialNumber() {
+        return materialNumber;
+    }
+
+    @ExcelField(title="物料描述", align=2, sort=8)
+    public String getMaterialDescription() {
+        return materialDescription;
+    }
+
+    @ExcelField(title="批次", align=2, sort=9)
+    public String getBatch() {
+        return batch;
+    }
+
+    @ExcelField(title="计量单位", align=2, sort=10)
+    public String getUnit() {
+        return unit;
+    }
+
+    @ExcelField(title="实发数量", align=2, sort=11)
+    public String getActualQuantityIssued() {
+        return actualQuantityIssued;
+    }
+
+    @ExcelField(title="单价", align=2, sort=12)
+    public String getUnitPrice() {
+        return unitPrice;
+    }
+
+    @ExcelField(title="金额", align=2, sort=13)
+    public String getMoney() {
+        return money;
+    }
+
+    @ExcelField(title="过账日期", align=2, sort=14)
+    public Date getPostingAccountDate() {
+        return postingAccountDate;
+    }
+
+    @ExcelField(title="过账日期", align=2, sort=15)
+    public Date getPostingAccountDate2() {
+        return postingAccountDate2;
+    }
+
+    @ExcelField(title="供应商名称", align=2, sort=16)
+    public String getSupplierName() {
+        return supplierName;
+    }
+
+    @ExcelField(title="工厂", align=2, sort=17)
+    public String getFactory() {
+        return factory;
+    }
+
+    @ExcelField(title="领料单号", align=2, sort=18)
+    public String getPickingNumber() {
+        return pickingNumber;
+    }
+
+    @ExcelField(title="领料单创建人", align=2, sort=19)
+    public String getPickingCreateBy() {
+        return pickingCreateBy;
+    }
+
+    @ExcelField(title="领料部门", align=2, sort=20)
+    public String getPickingDepartment() {
+        return pickingDepartment;
+    }
+
+    @ExcelField(title="预留号", align=2, sort=21)
+    public String getReservedNumber() {
+        return reservedNumber;
+    }
+
+    @ExcelField(title="库存地点", align=2, sort=22)
+    public String getRepertoryPlace() {
+        return repertoryPlace;
+    }
+
+    @ExcelField(title="项目包名称", align=2, sort=23)
+    public String getProjectPackageName() {
+        return projectPackageName;
+    }
+
+    @ExcelField(title="出库人", align=2, sort=24)
+    public String getStockOutPerson() {
+        return stockOutPerson;
+    }
+
+    @ExcelField(title="wbs元素描述", align=2, sort=25)
+    public String getWbsElementDescription() {
+        return wbsElementDescription;
+    }
+
+    @ExcelField(title="项目二级分类", align=2, sort=26)
+    public String getProjectSecondClassification() {
+        return projectSecondClassification;
+    }
+
+    @ExcelField(title="项目三级分类", align=2, sort=27)
+    public String getProjectThirdlyClassification() {
+        return projectThirdlyClassification;
+    }
+
+    @ExcelField(title="订单号", align=2, sort=28)
+    public String getOrderNumber() {
+        return orderNumber;
+    }
+
+    @ExcelField(title="评估类型", align=2, sort=29)
+    public String getAssessType() {
+        return assessType;
+    }
+
+    @ExcelField(title="备注", align=2, sort=30)
+    @Override
+    public String getRemarks() {
+        return remarks;
+    }
+
+    @ExcelField(title="出库单输入日期", align=2, sort=31)
+    public Date getStockOutImportDate() {
+        return stockOutImportDate;
+    }
+
+    @ExcelField(title="会计凭证", align=2, sort=32)
+    public String getAccountantCertificate() {
+        return accountantCertificate;
+    }
+
+    @ExcelField(title="可研批复文号", align=2, sort=33)
+    public String getReplyProof() {
+        return replyProof;
+    }
+
+    public void setChoose(String choose) {
+        this.choose = choose;
+    }
+
+    public void setSerialNumber(String serialNumber) {
+        this.serialNumber = serialNumber;
+    }
+
+    public void setStockOutNumber(String stockOutNumber) {
+        this.stockOutNumber = stockOutNumber;
+    }
+
+    public void setWbsElement(String wbsElement) {
+        this.wbsElement = wbsElement;
+    }
+
+    public void setProjectName(String projectName) {
+        this.projectName = projectName;
+    }
+
+    public void setProjectDefinition(String projectDefinition) {
+        this.projectDefinition = projectDefinition;
+    }
+
+    public void setMaterialNumber(String materialNumber) {
+        this.materialNumber = materialNumber;
+    }
+
+    public void setMaterialDescription(String materialDescription) {
+        this.materialDescription = materialDescription;
+    }
+
+    public void setBatch(String batch) {
+        this.batch = batch;
+    }
+
+    public void setUnit(String unit) {
+        this.unit = unit;
+    }
+
+    public void setActualQuantityIssued(String actualQuantityIssued) {
+        this.actualQuantityIssued = actualQuantityIssued;
+    }
+
+    public void setUnitPrice(String unitPrice) {
+        this.unitPrice = unitPrice;
+    }
+
+    public void setMoney(String money) {
+        this.money = money;
+    }
+
+    public void setPostingAccountDate(Date postingAccountDate) {
+        this.postingAccountDate = postingAccountDate;
+    }
+
+    public void setPostingAccountDate2(Date postingAccountDate2) {
+        this.postingAccountDate2 = postingAccountDate2;
+    }
+
+    public void setSupplierName(String supplierName) {
+        this.supplierName = supplierName;
+    }
+
+    public void setFactory(String factory) {
+        this.factory = factory;
+    }
+
+    public void setPickingNumber(String pickingNumber) {
+        this.pickingNumber = pickingNumber;
+    }
+
+    public void setPickingCreateBy(String pickingCreateBy) {
+        this.pickingCreateBy = pickingCreateBy;
+    }
+
+    public void setPickingDepartment(String pickingDepartment) {
+        this.pickingDepartment = pickingDepartment;
+    }
+
+    public void setReservedNumber(String reservedNumber) {
+        this.reservedNumber = reservedNumber;
+    }
+
+    public void setRepertoryPlace(String repertoryPlace) {
+        this.repertoryPlace = repertoryPlace;
+    }
+
+    public void setProjectPackageName(String projectPackageName) {
+        projectPackageName = projectPackageName;
+    }
+
+    public void setStockOutPerson(String stockOutPerson) {
+        this.stockOutPerson = stockOutPerson;
+    }
+
+    public void setWbsElementDescription(String wbsElementDescription) {
+        this.wbsElementDescription = wbsElementDescription;
+    }
+
+    public void setProjectSecondClassification(String projectSecondClassification) {
+        this.projectSecondClassification = projectSecondClassification;
+    }
+
+    public void setProjectThirdlyClassification(String projectThirdlyClassification) {
+        this.projectThirdlyClassification = projectThirdlyClassification;
+    }
+
+    public void setOrderNumber(String orderNumber) {
+        this.orderNumber = orderNumber;
+    }
+
+    public void setAssessType(String assessType) {
+        this.assessType = assessType;
+    }
+
+    @Override
+    public void setRemarks(String remarks) {
+        this.remarks = remarks;
+    }
+
+    public void setStockOutImportDate(Date stockOutImportDate) {
+        this.stockOutImportDate = stockOutImportDate;
+    }
+
+    public void setAccountantCertificate(String accountantCertificate) {
+        this.accountantCertificate = accountantCertificate;
+    }
+
+    public void setReplyProof(String replyProof) {
+        this.replyProof = replyProof;
+    }
+
+    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 String getPostingAccountDateStr() {
+        return postingAccountDateStr;
+    }
+
+    public void setPostingAccountDateStr(String postingAccountDateStr) {
+        this.postingAccountDateStr = postingAccountDateStr;
+    }
 }

+ 24 - 0
src/main/java/com/jeeplus/modules/supply/stockOut/mapper/SupplyStockOutMapper.java

@@ -0,0 +1,24 @@
+package com.jeeplus.modules.supply.stockOut.mapper;
+
+import com.jeeplus.core.persistence.BaseMapper;
+import com.jeeplus.core.persistence.annotation.MyBatisMapper;
+import com.jeeplus.modules.supply.stockOut.entity.SupplyStockOut;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @author: 徐滕
+ * @create: 2022-02-25 10:32
+ **/
+@MyBatisMapper
+public interface SupplyStockOutMapper extends BaseMapper<SupplyStockOut> {
+
+    Integer insertList(@Param("list") List<SupplyStockOut> list);
+
+    /**
+     * 新增或修改
+     * @param list
+     */
+    void insertOrUpdateList(@Param("list") List<SupplyStockOut> list);
+}

+ 278 - 0
src/main/java/com/jeeplus/modules/supply/stockOut/mapper/xml/SupplyStockOutMapper.xml

@@ -0,0 +1,278 @@
+<?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.supply.stockOut.mapper.SupplyStockOutMapper">
+
+    <sql id="infoColumns">
+        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.stock_out_number AS "stockOutNumber",
+        a.wbs_element AS "wbsElement",
+        a.project_name AS "projectName",
+        a.project_definition AS "projectDefinition",
+        a.material_number AS "materialNumber",
+        a.material_description AS "materialDescription",
+        a.batch AS "batch",
+        a.unit AS "unit",
+        a.actual_quantity_issued AS "actualQuantityIssued",
+        a.unit_price AS "unitPrice",
+        a.money AS "money",
+        a.posting_account_date AS "postingAccountDate",
+        DATE_FORMAT(a.posting_account_date,'%Y-%m-%d') AS "postingAccountDateStr",
+        a.supplier_name AS "supplierName",
+        a.factory AS "factory",
+        a.picking_number AS "pickingNumber",
+        a.picking_create_by AS "pickingCreateBy",
+        a.picking_department AS "pickingDepartment",
+        a.reserved_number AS "reservedNumber",
+        a.repertory_place AS "repertoryPlace",
+        a.project_package_name AS "projectPackageName",
+        a.stock_out_person AS "stockOutPerson",
+        a.wbs_element_description AS "wbsElementDescription",
+        a.project_second_classification AS "projectSecondClassification",
+        a.project_thirdly_classification AS "projectThirdlyClassification",
+        a.order_number AS "orderNumber",
+        a.assess_type AS "assessType",
+        a.stock_out_import_date AS "stockOutImportDate",
+        a.accountant_certificate AS "accountantCertificate",
+        a.reply_proof AS "replyProof"
+    </sql>
+
+
+
+    <select id="get" resultType="com.jeeplus.modules.supply.stockOut.entity.SupplyStockOut">
+        SELECT
+        <include refid="infoColumns"/>
+        FROM supply_stock_out a
+        WHERE a.id = #{id}
+    </select>
+
+    <select id="findList" resultType="com.jeeplus.modules.supply.stockOut.entity.SupplyStockOut">
+        SELECT
+        <include refid="infoColumns"/>
+        FROM supply_stock_out a
+        <where>
+            a.del_flag = #{DEL_FLAG_NORMAL}
+            ${dataScope}
+            <if test="projectDefinition != null and projectDefinition != ''">
+                AND a.projectDefinition LIKE CONCAT(CONCAT('%',#{projectDefinition},'%'))
+            </if>
+
+            <if test="beginDate != null ">
+                AND DATE_FORMAT(a.create_date,'%m-%d-%Y') >= #{beginDate}
+            </if>
+            <if test="endDate != null ">
+                AND DATE_FORMAT(a.create_date,'%m-%d-%Y') &lt;= #{endDate}
+            </if>
+        </where>
+        <choose>
+            <when test="page !=null and page.orderBy != null and page.orderBy != ''">
+                ORDER BY ${page.orderBy}
+            </when>
+            <otherwise>
+                ORDER BY a.update_date DESC
+            </otherwise>
+        </choose>
+    </select>
+
+    <insert id="insertList">
+        insert into supply_stock_out (
+        id,
+        stock_out_number,
+        wbs_element,
+        project_name,
+        project_definition,
+        material_number,
+        material_description,
+        batch,
+        unit,
+        actual_quantity_issued,
+        unit_price,
+        money,
+        posting_account_date,
+        supplier_name,
+        factory,
+        picking_number,
+        picking_create_by,
+        picking_department,
+        reserved_number,
+        repertory_place,
+        project_package_name,
+        stock_out_person,
+        wbs_element_description,
+        project_second_classification,
+        project_thirdly_classification,
+        order_number,
+        assess_type,
+        remarks,
+        stock_out_import_date,
+        accountant_certificate,
+        reply_proof,
+        create_by,
+        create_date,
+        update_by,
+        update_date
+        )
+        values
+        <foreach collection="list" item="item" index="index" separator="," >
+            (
+            #{item.id},
+            #{item.stockOutNumber},
+            #{item.wbsElement},
+            #{item.projectName},
+            #{item.projectDefinition},
+            #{item.materialNumber},
+            #{item.materialDescription},
+            #{item.batch},
+            #{item.unit},
+            #{item.actualQuantityIssued},
+            #{item.unitPrice},
+            #{item.money},
+            #{item.postingAccountDate},
+            #{item.supplierName},
+            #{item.factory},
+            #{item.pickingNumber},
+            #{item.pickingCreateBy},
+            #{item.pickingDepartment},
+            #{item.reservedNumber},
+            #{item.repertoryPlace},
+            #{item.projectPackageName},
+            #{item.stockOutPerson},
+            #{item.wbsElementDescription},
+            #{item.projectSecondClassification},
+            #{item.projectThirdlyClassification},
+            #{item.orderNumber},
+            #{item.assessType},
+            #{item.remarks},
+            #{item.stockOutImportDate},
+            #{item.accountantCertificate},
+            #{item.replyProof},
+            #{item.createBy.id},
+            #{item.createDate},
+            #{item.updateBy.id},
+            #{item.updateDate}
+            )
+        </foreach>
+    </insert>
+
+    <update id="insertOrUpdateList">
+        <foreach collection="list" item="item" index="index" separator=";">
+            insert into supply_stock_out (
+            stock_out_number,
+            wbs_element,
+            project_name,
+            project_definition,
+            material_number,
+            material_description,
+            batch,
+            unit,
+            actual_quantity_issued,
+            unit_price,
+            money,
+            posting_account_date,
+            supplier_name,
+            factory,
+            picking_number,
+            picking_create_by,
+            picking_department,
+            reserved_number,
+            repertory_place,
+            Project_package_name,
+            stock_out_person,
+            wbs_element_description,
+            project_second_classification,
+            project_thirdly_classification,
+            order_number,
+            assess_type,
+            remarks,
+            stock_out_import_date,
+            accountant_certificate,
+            reply_proof,
+            create_by,
+            create_date,
+            update_by,
+            update_date
+            )
+            values
+            (
+            #{item.stockOutNumber},
+            #{item.wbsElement},
+            #{item.projectName},
+            #{item.projectDefinition},
+            #{item.materialNumber},
+            #{item.materialDescription},
+            #{item.batch},
+            #{item.unit},
+            #{item.actualQuantityIssued},
+            #{item.unitPrice},
+            #{item.money},
+            #{item.postingAccountDate},
+            #{item.supplierName},
+            #{item.factory},
+            #{item.pickingNumber},
+            #{item.pickingCreateBy},
+            #{item.pickingDepartment},
+            #{item.reservedNumber},
+            #{item.repertoryPlace},
+            #{item.ProjectPackageName},
+            #{item.stockOutPerson},
+            #{item.wbsElementDescription},
+            #{item.projectSecondClassification},
+            #{item.projectThirdlyClassification},
+            #{item.orderNumber},
+            #{item.assessType},
+            #{item.remarks},
+            #{item.stockOutImportDate},
+            #{item.accountantCertificate},
+            #{item.replyProof},
+            #{item.createBy.id},
+            #{item.createDate},
+            #{item.updateBy.id},
+            #{item.updateDate}
+            )
+            DUPLICATE KEY
+            update supply_stock_out
+            set
+            stock_out_number = #{item.stock_out_number},
+            wbs_element = #{item.wbs_element},
+            project_name = #{item.project_name},
+            project_definition = #{item.project_definition},
+            material_number = #{item.material_number},
+            material_description = #{item.material_description},
+            batch = #{item.batch},
+            unit = #{item.unit},
+            actual_quantity_issued = #{item.actual_quantity_issued},
+            unit_price = #{item.unit_price},
+            money = #{item.money},
+            posting_account_date = #{item.posting_account_date},
+            supplier_name = #{item.supplier_name},
+            factory = #{item.factory},
+            picking_number = #{item.picking_number},
+            picking_create_by = #{item.picking_create_by},
+            picking_department = #{item.picking_department},
+            reserved_number = #{item.reserved_number},
+            repertory_place = #{item.repertory_place},
+            project_package_name = #{item.project_package_name},
+            stock_out_person = #{item.stock_out_person},
+            wbs_element_description = #{item.wbs_element_description},
+            project_second_classification = #{item.project_second_classification},
+            project_thirdly_classification = #{item.project_thirdly_classification},
+            order_number = #{item.order_number},
+            assess_type = #{item.assess_type},
+            remarks = #{item.remarks},
+            stock_out_import_date = #{item.stock_out_import_date},
+            accountant_certificate = #{item.accountant_certificate},
+            reply_proof = #{item.reply_proof},
+            create_by = #{item.createBy.id},
+            create_date = #{item.createDate},
+            update_by = #{item.updateBy.id},
+            update_date = #{item.updateDate}
+            where stockOutNumber = #{item.stockOutNumber}
+        </foreach>
+    </update>
+
+</mapper>

+ 91 - 0
src/main/java/com/jeeplus/modules/supply/stockOut/service/SupplyStockOutService.java

@@ -0,0 +1,91 @@
+package com.jeeplus.modules.supply.stockOut.service;
+
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.core.persistence.Page;
+import com.jeeplus.core.service.CrudService;
+import com.jeeplus.modules.supply.stockOut.entity.SupplyStockOut;
+import com.jeeplus.modules.supply.stockOut.mapper.SupplyStockOutMapper;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * @author: 徐滕
+ * @create: 2022-02-25 10:31
+ **/
+@Service
+@Transactional(readOnly = true)
+public class SupplyStockOutService  extends CrudService<SupplyStockOutMapper, SupplyStockOut> {
+
+    @Override
+    public Page<SupplyStockOut> findPage(Page<SupplyStockOut> page, SupplyStockOut supplyStockOut) {
+        return super.findPage(page, supplyStockOut);
+    }
+
+
+
+
+
+
+
+
+
+
+
+    /**
+     * 导入人工维护Excel数据
+     * @param handmadeVindicateList
+     * @return
+     */
+    @Transactional(readOnly = false)
+    public String disposeHandmadeVindicateInfo(List<SupplyStockOut> handmadeVindicateList){
+        Iterator<SupplyStockOut> it = handmadeVindicateList.iterator();
+        //删除项目编号为空的数据信息
+        while(it.hasNext()){
+            SupplyStockOut info = it.next();
+            if(StringUtils.isBlank(info.getProjectDefinition())){//判定项目定义号是否为空,为空则删除该条记录
+                it.remove();
+            }else{
+                info.preInsert();//添加修改人和时间记录信息
+            }
+        }
+        //批量修改(人工维护)
+        modifyHandmadeVindicateList(handmadeVindicateList);
+        return null;
+    }
+
+
+    /**
+     * 批量修改手工上传数据信息
+     * @param projectBasicsList
+     * @return
+     */
+    @Transactional(readOnly = false)
+    public String modifyHandmadeVindicateList(List<SupplyStockOut> projectBasicsList){
+        //分批处理
+        if(null!=projectBasicsList && projectBasicsList.size()>0){
+            int pointsDataLimit = 100;//限制条数
+            Integer size = projectBasicsList.size();
+            //判断是否有必要分批
+            if(pointsDataLimit<size){
+                int part = size/pointsDataLimit;//分批数
+                //
+                for (int i = 0; i < part; i++) {
+                    //100条
+                    List<SupplyStockOut> listPage = projectBasicsList.subList(0, pointsDataLimit);
+                    mapper.insertList(listPage);
+                    //剔除
+                    projectBasicsList.subList(0, pointsDataLimit).clear();
+                }
+                if(!projectBasicsList.isEmpty()){
+                    mapper.insertList(projectBasicsList);
+                }
+            }else{
+                mapper.insertList(projectBasicsList);
+            }
+        }
+        return null;
+    }
+}

+ 119 - 0
src/main/java/com/jeeplus/modules/supply/stockOut/web/SupplyStockOutController.java

@@ -0,0 +1,119 @@
+/**
+ * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.modules.supply.stockOut.web;
+
+import com.jeeplus.common.json.AjaxJson;
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.common.utils.excel.ImportExcel;
+import com.jeeplus.core.persistence.Page;
+import com.jeeplus.core.web.BaseController;
+import com.jeeplus.modules.supply.stockOut.entity.SupplyStockOut;
+import com.jeeplus.modules.supply.stockOut.service.SupplyStockOutService;
+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.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+import java.util.Map;
+
+
+@Controller
+@RequestMapping(value = "${adminPath}/supply/stockOut")
+public class SupplyStockOutController extends BaseController {
+
+    @Autowired
+    private SupplyStockOutService supplyStockOutService;
+
+    @ModelAttribute
+    public SupplyStockOut get(@RequestParam(required = false) String id) {
+        SupplyStockOut entity = null;
+        if (StringUtils.isNotBlank(id)) {
+            entity = supplyStockOutService.get(id);
+        }
+        if (entity == null) {
+            entity = new SupplyStockOut();
+        }
+        return entity;
+    }
+
+    /**
+     * 项目列表页面
+     */
+    @RequiresPermissions("supply:stockOut:list")
+    @RequestMapping(value = {"list", ""})
+    public String list(SupplyStockOut supplyStockOut, Model model) {
+        model.addAttribute("supplyStockOut", supplyStockOut);
+        return "modules/supply/stockOut/supplyStockOutList";
+    }
+
+    /**
+     * 列表数据
+     */
+    @ResponseBody
+    @RequiresPermissions("supply:stockOut:list")
+    @RequestMapping(value = "data")
+    public Map<String, Object> data(SupplyStockOut supplyStockOut, HttpServletRequest request, HttpServletResponse response, Model model) {
+        Page<SupplyStockOut> page = supplyStockOutService.findPage(new Page<SupplyStockOut>(request, response), supplyStockOut);
+        return getBootstrapData(page);
+    }
+
+
+
+    /**
+     * 删除项目
+     */
+    @ResponseBody
+    @RequiresPermissions("supply:stockOut:del")
+    @RequestMapping(value = "delete")
+    public AjaxJson delete(SupplyStockOut supplyStockOut) {
+        AjaxJson j = new AjaxJson();
+        supplyStockOutService.delete(supplyStockOut);
+        j.setMsg("删除项目成功");
+        return j;
+    }
+
+    /**
+     * 批量删除
+     */
+    @ResponseBody
+    @RequiresPermissions("supply:stockOut:del")
+    @RequestMapping(value = "deleteAll")
+    public AjaxJson deleteAll(String ids) {
+        AjaxJson j = new AjaxJson();
+        String[] idArray = ids.split(",");
+        for (String id : idArray) {
+            supplyStockOutService.delete(supplyStockOutService.get(id));
+        }
+        j.setMsg("删除成功");
+        return j;
+    }
+
+    /**
+     * 导入年度物资上报Excel数据-根据条件自动发送流程
+     */
+    @ResponseBody
+    @RequiresPermissions("supply:stockOut:import")
+    @RequestMapping(value = "import")
+    public AjaxJson importFile(@RequestParam("file") MultipartFile file, HttpServletResponse response, HttpServletRequest request) {
+        AjaxJson j = new AjaxJson();
+        try {
+            ImportExcel ei = new ImportExcel(file, 1, 0);
+            List<SupplyStockOut> list = ei.getDataList(SupplyStockOut.class);
+            supplyStockOutService.disposeHandmadeVindicateInfo(list);
+            j.setMsg("已成功导入 1 条项目表单记录");
+        } catch (Exception e) {
+            j.setSuccess(false);
+            j.setMsg("导入项目表单失败!失败信息:" + e.getMessage());
+        }
+        return j;
+    }
+}

+ 297 - 0
src/main/webapp/webpage/modules/supply/stockOut/supplyStockOutList.js

@@ -0,0 +1,297 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+    <script>
+    $(document).ready(function() {
+        $('#dataTable').bootstrapTable({
+            //请求方法
+            method: 'post',
+            //类型json
+            dataType: "json",
+            contentType: "application/x-www-form-urlencoded",
+            //显示检索按钮
+            showSearch: true,
+            //显示刷新按钮
+            showRefresh: true,
+            //显示切换手机试图按钮
+            showToggle: true,
+            //显示 内容列下拉框
+            showColumns: true,
+            //显示到处按钮
+            showExport: true,
+            //显示切换分页按钮
+            showPaginationSwitch: true,
+            //最低显示2行
+            minimumCountColumns: 2,
+            //是否显示行间隔色
+            striped: true,
+            //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
+            cache: false,
+            //是否显示分页(*)
+            pagination: true,
+            //排序方式
+            sortOrder: "asc",
+            //初始化加载第一页,默认第一页
+            pageNumber:1,
+            //每页的记录行数(*)
+            pageSize: 10,
+            //可供选择的每页的行数(*)
+            pageList: [10, 25, 50, 100],
+            //这个接口需要处理bootstrap table传递的固定参数,并返回特定格式的json数据
+            url: "${ctx}/supply/stockOut/data",
+            //默认值为 'limit',传给服务端的参数为:limit, offset, search, sort, order Else
+            //queryParamsType:'',
+            ////查询参数,每次调用是会带上这个参数,可自定义
+            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',
+            onContextMenuItem: function(row, $el){
+                if($el.data("item") == "edit"){
+                    edit(row.id);
+                }else if($el.data("item") == "view"){
+                    view(row.id);
+                } else if($el.data("item") == "delete"){
+                    jp.confirm('确认要删除该数据记录吗?', function(){
+                        jp.loading();
+                        jp.get("${ctx}/supply/stockOut/delete?id="+row.id, function(data){
+                            if(data.success){
+                                $('#dataTable').bootstrapTable('refresh');
+                                jp.success(data.msg);
+                            }else{
+                                jp.error(data.msg);
+                            }
+                        })
+
+                    });
+
+                }
+            },
+
+            onClickRow: function(row, $el){
+            },
+            onShowSearch: function () {
+                $("#search-collapse").slideToggle();
+            },
+            columns: [{
+		        checkbox: true
+
+		    }
+			,{
+                field: 'stockOutNumber',
+                title: '出库单编号',
+                    width:120,
+                sortName: 'stockOutNumber'
+            },{
+                    field: 'wbsElement',
+                    title: 'WBS元素',
+                    width:210,
+                    sortName: 'wbsElement'
+                }
+                ,{
+                    field: 'projectDefinition',
+                    title: '项目定义',
+                    width:150,
+                    sortName: 'projectDefinition'
+                }
+                ,{
+                    field: 'materialNumber',
+                    title: '物料编码',
+                    width:100,
+                    sortName: 'materialNumber'
+                }
+                ,{
+                    field: 'batch',
+                    title: '批次',
+                    width:100,
+                    sortName: 'batch'
+                }
+                ,{
+                    field: 'actualQuantityIssued',
+                    title: '实发数量',
+                    width:100,
+                    sortName: 'actualQuantityIssued'
+                }
+                ,{
+                    field: 'unitPrice',
+                    title: '单价',
+                    width:100,
+                    sortName: 'unitPrice'
+                }
+                ,{
+                    field: 'postingAccountDateStr',
+                    title: '过账日期',
+                    width:120,
+                    sortName: 'postingAccountDateStr'
+                }
+                ,{
+                    field: 'supplierName',
+                    title: '供应商名称',
+                    width:100,
+                    sortName: 'supplierName'
+                }
+                ,{
+                    field: 'pickingNumber',
+                    title: '领料单号',
+                    width:100,
+                    sortName: 'pickingNumber'
+                }
+                ,{
+                    field: 'pickingCreateBy',
+                    title: '领料单创建人',
+                    width:100,
+                    sortName: 'pickingCreateBy'
+                }
+                ,{
+                    field: 'stockOutPerson',
+                    title: '出库人',
+                    width:100,
+                    sortName: 'stockOutPerson'
+                }
+                ,{
+                    field: 'accountantCertificate',
+                    title: '会计凭证',
+                    width:100,
+                    sortName: 'accountantCertificate'
+                }
+
+
+            ]
+
+        });
+
+        if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端
+
+
+            $('#dataTable').bootstrapTable("toggleView");
+        }
+
+        $('#dataTable').on('check.bs.table uncheck.bs.table load-success.bs.table ' +
+            'check-all.bs.table uncheck-all.bs.table', function () {
+            $('#remove').prop('disabled', ! $('#dataTable').bootstrapTable('getSelections').length);
+            $('#view,#edit').prop('disabled', $('#dataTable').bootstrapTable('getSelections').length!=1);
+        });
+        $("#btnImport").click(function(){
+            jp.open({
+                type: 2,
+                area: [500, 200],
+                auto: true,
+                title:"导入数据",
+                content: "${ctx}/tag/importExcel" ,
+                btn: ['导出模板','确定', '关闭'],
+                btn1: function () {
+                    jp.downloadFile('${ctx}/supply/stockOut/templates')
+                },
+                btn2: function(index, layero){
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    iframeWin.contentWindow.importExcel('${ctx}/supply/stockOut/import', function (data) {
+                        if(data.success){
+                            jp.success(data.msg);
+                            refresh();
+                        }else{
+                            jp.error(data.msg);
+                        }
+                        jp.close(index);
+                    });//调用保存事件
+                    return false;
+                },
+                btn3: function(index){
+                    //  jp.close(index);
+                }
+            });
+        });
+
+
+
+        $("#export").click(function(){//导出Excel文件物料
+            var reserveProjectName = $("#reserveProjectName").val();//储备项目暂定名称:
+            var projectName = $("#projectName").val();//项目名称
+            var reserveCode = $("#reserveCode").val();//储备编码
+            var projectCode = $("#projectCode").val();//项目编码
+            var projectAttribute = $("#projectAttribute").val();//项目属性
+            var projectDefine = $("#projectDefine").val();//项目定义
+            var bat = $("#bat").val();//项目批次
+            jp.downloadFile('${ctx}/supply/stockOut/export?reserveProjectName='+reserveProjectName+'&projectName='+projectName+'&reserveCode='+reserveCode+'&projectCode='+projectCode+'&projectAttribute='+projectAttribute+'&projectBatch='+bat+'&projectDefine='+projectDefine);
+        });
+        $("#exportpro").click(function(){//导出Excel文件
+            jp.downloadFile('${ctx}/supply/stockOut/exportpro');
+        });
+
+
+        $("#search").click("click", function() {// 绑定查询按扭
+            $('#dataTable').bootstrapTable('refresh');
+        });
+
+        $("#reset").click("click", function() {// 绑定查询按扭
+            $("#searchForm  input").val("");
+            $("#searchForm  select").val("");
+            $("#searchForm  .select-item").html("");
+            $('#dataTable').bootstrapTable('refresh');
+        });
+
+        var picker1 = $('#beginDate').datetimepicker({
+            format: 'YYYY-MM-DD',
+            locale: moment.locale('zh-cn'),
+        });
+        var picker2 = $('#endDate').datetimepicker({
+            format: 'YYYY-MM-DD',
+            locale: moment.locale('zh-cn')
+        });
+
+    });
+
+function getIdSelections() {
+    return $.map($("#dataTable").bootstrapTable('getSelections'), function (row) {
+        return row.id
+    });
+}
+
+function deleteAll(){
+    jp.confirm('确认要删除该记录信息吗?', function(){
+        jp.loading();
+        jp.get("${ctx}/supply/stockOut/deleteAll?ids=" + getIdSelections(), function(data){
+            if(data.success){
+                $('#dataTable').bootstrapTable('refresh');
+                jp.success(data.msg);
+            }else{
+                jp.error(data.msg);
+            }
+        })
+
+    })
+}
+
+//刷新列表
+function refresh(){
+    $('#dataTable').bootstrapTable('refresh');
+}
+
+function add(){
+    jp.openSaveDialog('新增', "${ctx}/supply/stockOut/form",'800px', '500px');
+}
+
+
+
+function edit(id){//没有权限时,不显示确定按钮
+    if(id == undefined){
+        id = getIdSelections();
+    }
+    jp.openSaveDialog('编辑', "${ctx}/supply/stockOut/form?id=" + id, '800px', '500px');
+}
+
+function view(id){//没有权限时,不显示确定按钮
+    if(id == undefined){
+        id = getIdSelections();
+    }
+    jp.openViewDialog('查看', "${ctx}/supply/stockOut/form?id=" + id, '800px', '500px');
+}
+
+
+
+</script>

+ 98 - 0
src/main/webapp/webpage/modules/supply/stockOut/supplyStockOutList.jsp

@@ -0,0 +1,98 @@
+<%@ 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="/webpage/include/treeview.jsp" %>
+	<%@include file="supplyStockOutList.js" %>
+</head>
+<body>
+	<div class="wrapper wrapper-content">
+	<div class="panel panel-primary">
+	<div class="panel-heading">
+		<h3 class="panel-title">出库单列表</h3>
+	</div>
+	<div class="panel-body">
+
+	<!-- 搜索 -->
+	<div id="search-collapse" class="collapse">
+		<div class="accordion-inner">
+			<form:form id="searchForm" modelAttribute="supplyStockOut" class="form form-horizontal well clearfix">
+			    <div class="col-xs-12 col-sm-4 col-md-4">
+				   <label class="label-item single-overflow pull-left" title="项目定义号:">项目定义号:</label>
+				   <form:input path="projectDefinition" htmlEscape="false" maxlength="64"  class=" form-control"/>
+			    </div>
+
+				<div class="row">
+					<div class='col-sm-3'>
+						<div class="form-group">
+							<label>选择开始时间:</label>
+							<div class='input-group date' id='beginDate'>
+								<input type='text' name="beginDate" class="form-control" />
+								<span class="input-group-addon">
+									<span class="glyphicon glyphicon-calendar"/>
+								</span>
+							</div>
+						</div>
+					</div>
+					<div class='col-sm-3'>
+						<div class="form-group">
+							<label>选择结束时间:</label>
+							<div class='input-group date' id='endDate'>
+								<input type='text'  name="endDate" class="form-control" />
+								<span class="input-group-addon">
+									<span class="glyphicon glyphicon-calendar"/>
+								</span>
+							</div>
+						</div>
+					</div>
+				</div>
+
+				 <div class="col-xs-12 col-sm-6 col-md-4">
+					<div style="margin-top:26px">
+					  <a  id="search" class="btn btn-primary btn-rounded  btn-bordered btn-sm"><i class="fa fa-search"></i> 查询</a>
+					  <a  id="reset" class="btn btn-primary btn-rounded  btn-bordered btn-sm" ><i class="fa fa-refresh"></i> 重置</a>
+					 </div>
+				</div>
+			</form:form>
+		</div>
+	</div>
+
+		<!-- 工具栏 -->
+			<div id="toolbar">
+				<shiro:hasPermission name="supply:stockOut:del">
+					<button id="remove" class="btn btn-danger" disabled onclick="deleteAll()">
+						<i class="glyphicon glyphicon-remove"></i> 删除
+					</button>
+				</shiro:hasPermission>
+				<shiro:hasPermission name="supply:stockOut:import">
+					<button id="btnImport" class="btn btn-info">
+						<i class="fa fa-folder-open-o"></i> 导入
+					</button>
+				</shiro:hasPermission>
+			</div>
+
+	<!-- 表格 -->
+	<table id="dataTable"  style="table-layout:fixed"   data-toolbar="#toolbar"></table>
+
+    <!-- context menu -->
+    <%--<ul id="context-menu" class="dropdown-menu">
+    	<shiro:hasPermission name="supply:stockOut:view">
+        <li data-item="view"><a>查看</a></li>
+        </shiro:hasPermission>
+    	<shiro:hasPermission name="supply:stockOut:edit">
+        <li data-item="edit"><a>编辑</a></li>
+        </shiro:hasPermission>
+        <shiro:hasPermission name="supply:stockOut:del">
+        <li data-item="delete"><a>删除</a></li>
+        </shiro:hasPermission>
+        <li data-item="action1"><a>取消</a></li>
+    </ul>--%>
+	</div>
+	</div>
+	</div>
+</body>
+</html>