Explorar o código

知识库积分相关功能开发

徐滕 hai 1 semana
pai
achega
4f632e4b31
Modificáronse 29 ficheiros con 1745 adicións e 273 borrados
  1. 18 0
      src/main/java/com/jeeplus/modules/WorkKnowledgeBase/dao/WorkKnowledgeBasePointDao.java
  2. 5 6
      src/main/java/com/jeeplus/modules/WorkKnowledgeBase/dao/WorkKnowledgeBasePointDetailDao.java
  3. 28 1
      src/main/java/com/jeeplus/modules/WorkKnowledgeBase/entity/UserPointDetail.java
  4. 176 0
      src/main/java/com/jeeplus/modules/WorkKnowledgeBase/entity/WorkKnowledgeBasePoint.java
  5. 32 47
      src/main/java/com/jeeplus/modules/WorkKnowledgeBase/service/WorkKnowledgeBasePointDetailService.java
  6. 46 0
      src/main/java/com/jeeplus/modules/WorkKnowledgeBase/service/WorkKnowledgeBasePointService.java
  7. 7 0
      src/main/java/com/jeeplus/modules/WorkKnowledgeBase/service/WorkKnowledgeBaseShareService.java
  8. 84 54
      src/main/java/com/jeeplus/modules/WorkKnowledgeBase/web/WorkKnowledgeBasePointController.java
  9. 7 0
      src/main/java/com/jeeplus/modules/projectmaterialstorage/dao/ProjectMaterialStorageDao.java
  10. 42 0
      src/main/java/com/jeeplus/modules/projectmaterialstorage/entity/ProjectMaterialStorage.java
  11. 435 39
      src/main/java/com/jeeplus/modules/projectmaterialstorage/entity/ProjectMaterialStorageExport.java
  12. 37 0
      src/main/java/com/jeeplus/modules/projectmaterialstorage/entity/ProjectMaterialStorageImport.java
  13. 31 0
      src/main/java/com/jeeplus/modules/projectmaterialstorage/service/ProjectMaterialStorageService.java
  14. 26 2
      src/main/java/com/jeeplus/modules/projectmaterialstorage/web/ProjectMaterialStorageController.java
  15. 116 0
      src/main/resources/mappings/modules/WorkKnowledgeBase/WorkKnowledgeBasePointDao.xml
  16. 43 17
      src/main/resources/mappings/modules/WorkKnowledgeBase/WorkKnowledgeBasePointDetailDao.xml
  17. 134 5
      src/main/resources/mappings/modules/projectMaterialStorage/ProjectMaterialStorageDao.xml
  18. BIN=BIN
      src/main/webapp/dot/材料库处理表模板.xlsx
  19. 1 1
      src/main/webapp/webpage/include/head.jsp
  20. 86 0
      src/main/webapp/webpage/modules/WorkKnowledgeBase/workKnowledgeBasePointForm.jsp
  21. 168 0
      src/main/webapp/webpage/modules/WorkKnowledgeBase/workKnowledgeBasePointList.jsp
  22. 71 67
      src/main/webapp/webpage/modules/WorkKnowledgeBase/workKnowledgeBasePointUserDetail.jsp
  23. 7 5
      src/main/webapp/webpage/modules/WorkKnowledgeBase/workKnowledgeBaseShareDetail.jsp
  24. 30 1
      src/main/webapp/webpage/modules/projectMaterialStorage/projectMaterialStorageAddForm.jsp
  25. 46 14
      src/main/webapp/webpage/modules/projectMaterialStorage/projectMaterialStorageList.jsp
  26. 36 6
      src/main/webapp/webpage/modules/projectMaterialStorage/projectMaterialStorageTwoForm.jsp
  27. 31 6
      src/main/webapp/webpage/modules/projectMaterialStorage/projectMaterialStorageView.jsp
  28. 1 1
      src/main/webapp/webpage/modules/sys/sysLogin.jsp
  29. 1 1
      src/main/webapp/webpage/modules/sys/sysLogin2.jsp

+ 18 - 0
src/main/java/com/jeeplus/modules/WorkKnowledgeBase/dao/WorkKnowledgeBasePointDao.java

@@ -0,0 +1,18 @@
+/**
+ * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.modules.WorkKnowledgeBase.dao;
+
+import com.jeeplus.common.persistence.CrudDao;
+import com.jeeplus.common.persistence.annotation.MyBatisDao;
+import com.jeeplus.modules.WorkKnowledgeBase.entity.WorkKnowledgeBasePoint;
+
+/**
+ * 知识库积分管理DAO接口
+ * @author 徐滕
+ * @version 2026-05-19
+ */
+@MyBatisDao
+public interface WorkKnowledgeBasePointDao extends CrudDao<WorkKnowledgeBasePoint> {
+	
+}

+ 5 - 6
src/main/java/com/jeeplus/modules/WorkKnowledgeBase/dao/WorkKnowledgeBasePointDetailDao.java

@@ -3,11 +3,10 @@ package com.jeeplus.modules.WorkKnowledgeBase.dao;
 import com.jeeplus.common.persistence.CrudDao;
 import com.jeeplus.common.persistence.annotation.MyBatisDao;
 import com.jeeplus.modules.WorkKnowledgeBase.entity.UserPointDetail;
-import com.jeeplus.modules.WorkKnowledgeBase.entity.UserPointSummary;
+import com.jeeplus.modules.WorkKnowledgeBase.entity.WorkKnowledgeBasePoint;
 import com.jeeplus.modules.WorkKnowledgeBase.entity.WorkKnowledgeBasePointDetail;
 
 import java.util.List;
-import java.util.Map;
 
 /**
  * 知识库积分明细 DAO
@@ -18,14 +17,14 @@ import java.util.Map;
 public interface WorkKnowledgeBasePointDetailDao extends CrudDao<WorkKnowledgeBasePointDetail> {
 
     /** 用户积分汇总列表(经办人/部门/手机/总积分) */
-    List<UserPointSummary> findUserPointSummaryList(Map<String, Object> params);
+    List<WorkKnowledgeBasePoint> findUserPointSummaryList(WorkKnowledgeBasePoint workKnowledgeBasePoint);
 
     /** 用户积分汇总总数 */
-    int findUserPointSummaryCount(Map<String, Object> params);
+    int findUserPointSummaryCount(WorkKnowledgeBasePoint workKnowledgeBasePoint);
 
     /** 某用户积分明细列表 */
-    List<UserPointDetail> findUserPointDetailList(Map<String, Object> params);
+    List<UserPointDetail> findUserPointDetailList(UserPointDetail userPointDetail);
 
     /** 某用户积分明细总数 */
-    int findUserPointDetailCount(Map<String, Object> params);
+    int findUserPointDetailCount(UserPointDetail userPointDetail);
 }

+ 28 - 1
src/main/java/com/jeeplus/modules/WorkKnowledgeBase/entity/UserPointDetail.java

@@ -1,7 +1,6 @@
 package com.jeeplus.modules.WorkKnowledgeBase.entity;
 
 import com.jeeplus.common.persistence.DataEntity;
-import com.fasterxml.jackson.annotation.JsonFormat;
 
 import java.util.Date;
 
@@ -37,6 +36,10 @@ public class UserPointDetail extends DataEntity<UserPointDetail> {
     /** 分享删除标志 */
     private String shareDelFlag;
 
+    private Date beginDate;
+    private Date endDate;
+    private String userName;
+
     public String getId() {
         return id;
     }
@@ -100,4 +103,28 @@ public class UserPointDetail extends DataEntity<UserPointDetail> {
     public void setShareDelFlag(String shareDelFlag) {
         this.shareDelFlag = shareDelFlag;
     }
+
+    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 getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
 }

+ 176 - 0
src/main/java/com/jeeplus/modules/WorkKnowledgeBase/entity/WorkKnowledgeBasePoint.java

@@ -0,0 +1,176 @@
+/**
+ * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.modules.WorkKnowledgeBase.entity;
+
+import com.jeeplus.common.persistence.DataEntity;
+import com.jeeplus.modules.sys.entity.User;
+import com.jeeplus.modules.sys.entity.Office;
+
+/**
+ * 知识库积分管理Entity
+ * @author 徐滕
+ * @version 2026-05-19
+ */
+public class WorkKnowledgeBasePoint extends DataEntity<WorkKnowledgeBasePoint> {
+	
+	private static final long serialVersionUID = 1L;
+	private User user;		// 用户
+	private String userId;	// 用户ID
+	private String userName;	// 用户名
+	private Office office;	// 所属部门
+	private String officeId;	// 部门ID
+	private String officeName;	// 部门名称
+	private String shareName;	// 文档名称
+	private Integer changeType;	// 变更类型(1:创建;2:审核)
+	private Double point;		// 积分数量
+	private String beginDate;	// 开始日期
+	private String endDate;		// 结束日期
+	private String submitterId;	// 经办人ID(查询用)
+	private String submitterName;	// 经办人名称(查询用)
+
+	/** 手机号 */
+	private String mobile;
+
+	/** 电话 */
+	private String phone;
+
+	/** 总积分 */
+	private Integer totalPoint;
+	
+	public WorkKnowledgeBasePoint() {
+		super();
+	}
+
+	public WorkKnowledgeBasePoint(String id){
+		super(id);
+	}
+
+	public User getUser() {
+		return user;
+	}
+
+	public void setUser(User user) {
+		this.user = user;
+	}
+
+	public String getUserId() {
+		return userId;
+	}
+
+	public void setUserId(String userId) {
+		this.userId = userId;
+	}
+
+	public String getUserName() {
+		return userName;
+	}
+
+	public void setUserName(String userName) {
+		this.userName = userName;
+	}
+
+	public Office getOffice() {
+		return office;
+	}
+
+	public void setOffice(Office office) {
+		this.office = office;
+	}
+
+	public String getOfficeId() {
+		return officeId;
+	}
+
+	public void setOfficeId(String officeId) {
+		this.officeId = officeId;
+	}
+
+	public String getOfficeName() {
+		return officeName;
+	}
+
+	public void setOfficeName(String officeName) {
+		this.officeName = officeName;
+	}
+
+	public String getShareName() {
+		return shareName;
+	}
+
+	public void setShareName(String shareName) {
+		this.shareName = shareName;
+	}
+
+	public Integer getChangeType() {
+		return changeType;
+	}
+
+	public void setChangeType(Integer changeType) {
+		this.changeType = changeType;
+	}
+
+	public Double getPoint() {
+		return point;
+	}
+
+	public void setPoint(Double point) {
+		this.point = point;
+	}
+
+	public String getBeginDate() {
+		return beginDate;
+	}
+
+	public void setBeginDate(String beginDate) {
+		this.beginDate = beginDate;
+	}
+
+	public String getEndDate() {
+		return endDate;
+	}
+
+	public void setEndDate(String endDate) {
+		this.endDate = endDate;
+	}
+
+	public String getSubmitterId() {
+		return submitterId;
+	}
+
+	public void setSubmitterId(String submitterId) {
+		this.submitterId = submitterId;
+	}
+
+	public String getSubmitterName() {
+		return submitterName;
+	}
+
+	public void setSubmitterName(String submitterName) {
+		this.submitterName = submitterName;
+	}
+
+	public String getMobile() {
+		return mobile;
+	}
+
+	public void setMobile(String mobile) {
+		this.mobile = mobile;
+	}
+
+	public String getPhone() {
+		return phone;
+	}
+
+	public void setPhone(String phone) {
+		this.phone = phone;
+	}
+
+	public Integer getTotalPoint() {
+		return totalPoint;
+	}
+
+	public void setTotalPoint(Integer totalPoint) {
+		this.totalPoint = totalPoint;
+	}
+}

+ 32 - 47
src/main/java/com/jeeplus/modules/WorkKnowledgeBase/service/WorkKnowledgeBasePointDetailService.java

@@ -1,18 +1,19 @@
 package com.jeeplus.modules.WorkKnowledgeBase.service;
 
+import com.google.common.collect.Lists;
 import com.jeeplus.common.persistence.Page;
 import com.jeeplus.common.service.CrudService;
 import com.jeeplus.common.utils.StringUtils;
 import com.jeeplus.modules.WorkKnowledgeBase.dao.WorkKnowledgeBasePointDetailDao;
 import com.jeeplus.modules.WorkKnowledgeBase.entity.UserPointDetail;
-import com.jeeplus.modules.WorkKnowledgeBase.entity.UserPointSummary;
+import com.jeeplus.modules.WorkKnowledgeBase.entity.WorkKnowledgeBasePoint;
 import com.jeeplus.modules.WorkKnowledgeBase.entity.WorkKnowledgeBasePointDetail;
+import com.jeeplus.modules.sys.entity.Office;
 import com.jeeplus.modules.sys.service.OfficeService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -36,73 +37,57 @@ public class WorkKnowledgeBasePointDetailService extends CrudService<WorkKnowled
     /**
      * 用户积分汇总分页查询
      * @param page          分页对象
-     * @param userName      姓名模糊
-     * @param officeId      部门ID
      */
-    public Page<UserPointSummary> findUserPointSummaryPage(Page<UserPointSummary> page,
-                                                              String userName, String officeId) {
-        Map<String, Object> params = new HashMap<>();
-        if (StringUtils.isNotBlank(userName)) params.put("userName", userName.trim());
+    public Page<WorkKnowledgeBasePoint> findUserPointSummaryPage(Page<WorkKnowledgeBasePoint> page, WorkKnowledgeBasePoint workKnowledgeBasePoint) {
 
-        // 处理部门ID查询逻辑
-        if (StringUtils.isNotBlank(officeId)) {
-            // 查询该选择节点下所有的部门Id
-            List<String> officeIdList = officeService.getChildrenOffice(officeId);
-            officeIdList.add(officeId);
-            params.put("officeIdList", officeIdList);
+        if(StringUtils.isNotBlank(workKnowledgeBasePoint.getOfficeId())) {
+            if ("一部本部".equals(workKnowledgeBasePoint.getOfficeId())) {
+                List<String> officeIdList = Lists.newArrayList();
+                Office office = officeService.getByName("工程一部");
+                officeIdList.add(office.getId());
+                workKnowledgeBasePoint.setOfficeIdList(officeIdList);
+            } else {
+                //查询该选择节点下所有的部门Id
+                List<String> officeIdList = officeService.getChildrenOffice(workKnowledgeBasePoint.getOfficeId());
+                officeIdList.add(workKnowledgeBasePoint.getOfficeId());
+                if (officeIdList.size() > 0) {
+                    workKnowledgeBasePoint.setOfficeIdList(officeIdList);
+                }
+            }
         }
 
-        int pageNo = page.getPageNo() > 0 ? page.getPageNo() : 1;
-        int pageSize = page.getPageSize() > 0 ? page.getPageSize() : 10;
-        params.put("offset", (pageNo - 1) * pageSize);
-        params.put("limit", pageSize);
-
-        int count = pointDetailDao.findUserPointSummaryCount(params);
+        int count = pointDetailDao.findUserPointSummaryCount(workKnowledgeBasePoint);
         page.setCount(count);
         page.setCountFlag(false);
-        if (count > 0) {
-            page.setList(pointDetailDao.findUserPointSummaryList(params));
-        } else {
-            page.setList(new ArrayList<>());
-        }
+        workKnowledgeBasePoint.setPage(page);
+        List<WorkKnowledgeBasePoint> list = pointDetailDao.findUserPointSummaryList(workKnowledgeBasePoint);
+        page.setList(list);
         return page;
     }
 
     /**
      * 用户积分明细分页查询
      * @param page          分页对象
-     * @param userId        必传
-     * @param shareName     文档名模糊
-     * @param changeType    1=创建 2=审核
-     * @param beginDate     起
-     * @param endDate       止
      */
-    public Page<UserPointDetail> findUserPointDetailPage(Page<UserPointDetail> page,
-                                                             String userId,
-                                                             String shareName,
-                                                             Integer changeType,
-                                                             String beginDate,
-                                                             String endDate) {
+    public Page<UserPointDetail> findUserPointDetailPage(Page<UserPointDetail> page, UserPointDetail userPointDetail) {
         Map<String, Object> params = new HashMap<>();
-        params.put("userId", userId);
-        if (StringUtils.isNotBlank(shareName)) params.put("shareName", shareName.trim());
-        if (changeType != null) params.put("changeType", changeType);
-        if (StringUtils.isNotBlank(beginDate)) params.put("beginDate", beginDate.trim());
-        if (StringUtils.isNotBlank(endDate)) params.put("endDate", endDate.trim());
 
-        int pageNo = page.getPageNo() > 0 ? page.getPageNo() : 1;
-        int pageSize = page.getPageSize() > 0 ? page.getPageSize() : 10;
-        params.put("offset", (pageNo - 1) * pageSize);
-        params.put("limit", pageSize);
+        int count = pointDetailDao.findUserPointDetailCount(userPointDetail);
+        page.setCount(count);
+        page.setCountFlag(false);
+        userPointDetail.setPage(page);
+        List<UserPointDetail> list = pointDetailDao.findUserPointDetailList(userPointDetail);
 
-        int count = pointDetailDao.findUserPointDetailCount(params);
+        page.setList(list);
+
+        /*int count = pointDetailDao.findUserPointDetailCount(params);
         page.setCount(count);
         page.setCountFlag(false);
         if (count > 0) {
             page.setList(pointDetailDao.findUserPointDetailList(params));
         } else {
             page.setList(new ArrayList<>());
-        }
+        }*/
         return page;
     }
 }

+ 46 - 0
src/main/java/com/jeeplus/modules/WorkKnowledgeBase/service/WorkKnowledgeBasePointService.java

@@ -0,0 +1,46 @@
+/**
+ * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.modules.WorkKnowledgeBase.service;
+
+import com.jeeplus.common.persistence.Page;
+import com.jeeplus.common.service.CrudService;
+import com.jeeplus.modules.WorkKnowledgeBase.dao.WorkKnowledgeBasePointDao;
+import com.jeeplus.modules.WorkKnowledgeBase.entity.WorkKnowledgeBasePoint;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * 知识库积分管理Service
+ * @author 徐滕
+ * @version 2026-05-19
+ */
+@Service
+@Transactional(readOnly = true)
+public class WorkKnowledgeBasePointService extends CrudService<WorkKnowledgeBasePointDao, WorkKnowledgeBasePoint> {
+
+	public WorkKnowledgeBasePoint get(String id) {
+		return super.get(id);
+	}
+	
+	public List<WorkKnowledgeBasePoint> findList(WorkKnowledgeBasePoint workKnowledgeBasePoint) {
+		return super.findList(workKnowledgeBasePoint);
+	}
+	
+	public Page<WorkKnowledgeBasePoint> findPage(Page<WorkKnowledgeBasePoint> page, WorkKnowledgeBasePoint workKnowledgeBasePoint) {
+		return super.findPage(page, workKnowledgeBasePoint);
+	}
+	
+	@Transactional(readOnly = false)
+	public void save(WorkKnowledgeBasePoint workKnowledgeBasePoint) {
+		super.save(workKnowledgeBasePoint);
+	}
+	
+	@Transactional(readOnly = false)
+	public void delete(WorkKnowledgeBasePoint workKnowledgeBasePoint) {
+		super.delete(workKnowledgeBasePoint);
+	}
+	
+}

+ 7 - 0
src/main/java/com/jeeplus/modules/WorkKnowledgeBase/service/WorkKnowledgeBaseShareService.java

@@ -92,6 +92,13 @@ public class WorkKnowledgeBaseShareService extends CrudService<WorkKnowledgeBase
             return new ArrayList<>();
         }
         List<Workattachment> workattachmentList = workattachmentService.getListByAttachmentIdAndFlag(fileId, ATTACHMENT_FLAG);
+        //对数据进行大小处理
+        for (Workattachment workattachment : workattachmentList) {
+            if(StringUtils.isNotBlank(workattachment.getFileSize())){
+                Double fileSize = Double.valueOf(workattachment.getFileSize())/1024/1024;
+                workattachment.setFileSize(String.format("%.2f", fileSize));
+            }
+        }
         //数据进行处理,添加临时预览url生成
         workattachmentService.workAttachmentManage(workattachmentList);
         return workattachmentList;

+ 84 - 54
src/main/java/com/jeeplus/modules/WorkKnowledgeBase/web/WorkKnowledgeBasePointController.java

@@ -1,14 +1,18 @@
+/**
+ * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
 package com.jeeplus.modules.WorkKnowledgeBase.web;
 
+import com.jeeplus.common.config.Global;
 import com.jeeplus.common.persistence.Page;
 import com.jeeplus.common.utils.StringUtils;
 import com.jeeplus.common.web.BaseController;
-import com.jeeplus.modules.WorkKnowledgeBase.entity.UserPointSummary;
 import com.jeeplus.modules.WorkKnowledgeBase.entity.UserPointDetail;
-import com.jeeplus.modules.WorkKnowledgeBase.entity.WorkKnowledgeBasePointQuery;
+import com.jeeplus.modules.WorkKnowledgeBase.entity.WorkKnowledgeBasePoint;
 import com.jeeplus.modules.WorkKnowledgeBase.service.WorkKnowledgeBasePointDetailService;
-import com.jeeplus.modules.sys.entity.Office;
+import com.jeeplus.modules.WorkKnowledgeBase.service.WorkKnowledgeBasePointService;
 import com.jeeplus.modules.sys.service.OfficeService;
+import org.apache.shiro.authz.annotation.Logical;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
@@ -16,102 +20,128 @@ 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.servlet.mvc.support.RedirectAttributes;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 /**
- * 知识库积分管理 Controller
- * 主列表:人员积分汇总;子页:用户积分明细
- * @author: 徐滕
- * @version: 2026-05-19
+ * 知识库积分管理Controller
+ * @author 徐滕
+ * @version 2026-05-19
  */
 @Controller
 @RequestMapping(value = "${adminPath}/workKnowledgeBase/point")
 public class WorkKnowledgeBasePointController extends BaseController {
 
     @Autowired
-    private WorkKnowledgeBasePointDetailService pointService;
+    private WorkKnowledgeBasePointDetailService workKnowledgeBasePointDetailService;
+
+    @Autowired
+    private WorkKnowledgeBasePointService workKnowledgeBasePointService;
 
     @Autowired
     private OfficeService officeService;
 
     @ModelAttribute
-    public WorkKnowledgeBasePointQuery get(@RequestParam(required = false) String id) {
-        WorkKnowledgeBasePointQuery entity = null;
+    public WorkKnowledgeBasePoint get(@RequestParam(required=false) String id) {
+        WorkKnowledgeBasePoint entity = null;
         if (StringUtils.isNotBlank(id)){
-            //entity = (WorkKnowledgeBasePointQuery) pointService.get(id);
+            entity = workKnowledgeBasePointService.get(id);
         }
         if (entity == null){
-            entity = new WorkKnowledgeBasePointQuery();
+            entity = new WorkKnowledgeBasePoint();
         }
         return entity;
     }
 
     /**
-     * 人员积分汇总列表
-     * 参数:userName(经办人模糊)、officeId(经办人部门ID)
+     * 知识库积分管理列表页面
      */
     @RequiresPermissions("workKnowledgeBase:point:list")
-    @RequestMapping(value = {"userList", ""})
-    public String userList(WorkKnowledgeBasePointQuery workKnowledgeBasePointQuery, HttpServletRequest request, HttpServletResponse response, Model model) {
+    @RequestMapping(value = {"list", ""})
+    public String list(WorkKnowledgeBasePoint workKnowledgeBasePoint, HttpServletRequest request, HttpServletResponse response, Model model) {
         //进行查询之后进行任何操作,返回还是查询之后的数据页面
-        if (StringUtils.isNotBlank(workKnowledgeBasePointQuery.getToflag())){
-            if (workKnowledgeBasePointQuery.getToflag().equals("1")){
+        if (StringUtils.isNotBlank(workKnowledgeBasePoint.getToflag())){
+            if (workKnowledgeBasePoint.getToflag().equals("1")){
                 request.getSession().removeAttribute("searchPoint");
-                WorkKnowledgeBasePointQuery searchPoint = workKnowledgeBasePointQuery;
+                WorkKnowledgeBasePoint searchPoint = workKnowledgeBasePoint;
                 request.getSession().setAttribute("searchPoint", searchPoint);
             }
-        }else{
-            if (request.getSession().getAttribute("searchPoint")!=null){
-                workKnowledgeBasePointQuery = (WorkKnowledgeBasePointQuery) request.getSession().getAttribute("searchPoint");
-            }
         }
         //判断经办人是否为空,为空则赋值为null 防止查找为空的数据
-        if(StringUtils.isBlank(workKnowledgeBasePointQuery.getUserName())){
-            workKnowledgeBasePointQuery.setUserName(null);
+        String userId = null;
+        String userName = null;
+        if(StringUtils.isBlank(workKnowledgeBasePoint.getSubmitterName())){
+            workKnowledgeBasePoint.setSubmitterName(null);
+            workKnowledgeBasePoint.setSubmitterId(null);
+        }else{
+            //如果ID和名称都有值,说明是通过选择器选的精确查询
+            if(StringUtils.isNotBlank(workKnowledgeBasePoint.getSubmitterId())){
+                userId = workKnowledgeBasePoint.getSubmitterId();
+            }else{
+                //如果经办人名称有值但ID为空,说明是手动输入的模糊查询
+                userName = workKnowledgeBasePoint.getSubmitterName();
+            }
         }
-        Page<UserPointSummary> page = pointService.findUserPointSummaryPage(
-                new Page<>(request, response), workKnowledgeBasePointQuery.getUserName(), workKnowledgeBasePointQuery.getOfficeId());
+
+        Page<WorkKnowledgeBasePoint> page = workKnowledgeBasePointDetailService.findUserPointSummaryPage(new Page<>(request, response), workKnowledgeBasePoint);
         model.addAttribute("page", page);
-        model.addAttribute("workKnowledgeBasePointQuery", workKnowledgeBasePointQuery);
-        // 获取部门名称用于显示
-        String officeName = null;
-        if (StringUtils.isNotBlank(workKnowledgeBasePointQuery.getOfficeId())) {
-            Office office = officeService.get(workKnowledgeBasePointQuery.getOfficeId());
-            if (office != null) {
-                officeName = office.getName();
-            }
+        model.addAttribute("workKnowledgeBasePoint", workKnowledgeBasePoint);
+        return "modules/WorkKnowledgeBase/workKnowledgeBasePointList";
+    }
+
+    /**
+     * 查看,增加,编辑知识库积分管理表单页面
+     */
+    @RequiresPermissions(value={"workKnowledgeBase:point:view","workKnowledgeBase:point:add","workKnowledgeBase:point:edit"},logical= Logical.OR)
+    @RequestMapping(value = "form")
+    public String form(WorkKnowledgeBasePoint workKnowledgeBasePoint, Model model) {
+        model.addAttribute("workKnowledgeBasePoint", workKnowledgeBasePoint);
+        return "modules/WorkKnowledgeBase/workKnowledgeBasePointForm";
+    }
+
+    /**
+     * 保存知识库积分管理
+     */
+    @RequiresPermissions(value={"workKnowledgeBase:point:add","workKnowledgeBase:point:edit"},logical=Logical.OR)
+    @RequestMapping(value = "save")
+    public String save(WorkKnowledgeBasePoint workKnowledgeBasePoint, Model model, RedirectAttributes redirectAttributes) throws Exception{
+        if (!beanValidator(model, workKnowledgeBasePoint)){
+            return form(workKnowledgeBasePoint, model);
         }
-        model.addAttribute("officeName", officeName);
-        return "modules/WorkKnowledgeBase/workKnowledgeBasePointUserList";
+
+        workKnowledgeBasePointService.save(workKnowledgeBasePoint);
+        addMessage(redirectAttributes, "保存知识库积分管理成功");
+        return "redirect:"+ Global.getAdminPath()+"/workKnowledgeBase/point/?repage";
     }
 
     /**
+     * 删除知识库积分管理
+     */
+    @RequiresPermissions("workKnowledgeBase:point:del")
+    @RequestMapping(value = "delete")
+    public String delete(WorkKnowledgeBasePoint workKnowledgeBasePoint, RedirectAttributes redirectAttributes) {
+        workKnowledgeBasePointService.delete(workKnowledgeBasePoint);
+        addMessage(redirectAttributes, "删除知识库积分管理成功");
+        return "redirect:"+Global.getAdminPath()+"/workKnowledgeBase/point/?repage";
+    }
+
+
+    /**
      * 某用户积分明细列表(子页)
      * 参数:userId(必传)、shareName(文档名模糊)、changeType(1创建/2审核)、beginDate、endDate
      */
     @RequiresPermissions("workKnowledgeBase:point:list")
     @RequestMapping(value = "userDetail")
-    public String userDetail(@RequestParam("userId") String userId,
-                             @RequestParam(required = false) String userName,
-                             @RequestParam(required = false) String shareName,
-                             @RequestParam(required = false) Integer changeType,
-                             @RequestParam(required = false) String beginDate,
-                             @RequestParam(required = false) String endDate,
-                             HttpServletRequest request, HttpServletResponse response, Model model) {
-        if (StringUtils.isBlank(userId)) {
+    public String userDetail(UserPointDetail userPointDetail, HttpServletRequest request, HttpServletResponse response, Model model) {
+        if (StringUtils.isBlank(userPointDetail.getUserId())) {
             model.addAttribute("message", "用户ID不能为空");
         }
-        Page<UserPointDetail> page = pointService.findUserPointDetailPage(
-                new Page<>(request, response), userId, shareName, changeType, beginDate, endDate);
+        Page<UserPointDetail> page = workKnowledgeBasePointDetailService.findUserPointDetailPage(new Page<>(request, response), userPointDetail);
         model.addAttribute("page", page);
-        model.addAttribute("userId", userId);
-        model.addAttribute("userName", userName);
-        model.addAttribute("shareName", shareName);
-        model.addAttribute("changeType", changeType);
-        model.addAttribute("beginDate", beginDate);
-        model.addAttribute("endDate", endDate);
+        model.addAttribute("userPointDetail", userPointDetail);
         return "modules/WorkKnowledgeBase/workKnowledgeBasePointUserDetail";
     }
-}
+
+}

+ 7 - 0
src/main/java/com/jeeplus/modules/projectmaterialstorage/dao/ProjectMaterialStorageDao.java

@@ -69,4 +69,11 @@ public interface ProjectMaterialStorageDao extends CrudDao<ProjectMaterialStorag
      * @return
      */
     Integer deleteById(ProjectMaterialStorage projectMaterialStorage);
+
+    /**
+     * 查询导出的数据
+     * @param projectMaterialStorage
+     * @return
+     */
+    List<ProjectMaterialStorage> findListExport(ProjectMaterialStorage projectMaterialStorage);
 }

+ 42 - 0
src/main/java/com/jeeplus/modules/projectmaterialstorage/entity/ProjectMaterialStorage.java

@@ -75,6 +75,12 @@ public class ProjectMaterialStorage extends DataEntity<ProjectMaterialStorage> {
     private String reportNumber;
     private String areaId;
 
+    private String nuclearPricing;      //核定价String
+    private String basisForApproval;    //核定依据
+    private String purchasePlace;       //购买地
+    private String quotationMode;       //报价模式
+
+
     //材料信息数据表集合
     private List<ProjectMaterialStorageImport> projectMaterialStorageList = Lists.newArrayList();
 
@@ -465,4 +471,40 @@ public class ProjectMaterialStorage extends DataEntity<ProjectMaterialStorage> {
     public void setAreaId(String areaId) {
         this.areaId = areaId;
     }
+
+
+    @ExcelField(title="核定价", align=2, sort=16)
+    public String getNuclearPricing() {
+        return nuclearPricing;
+    }
+
+    public void setNuclearPricing(String nuclearPricing) {
+        this.nuclearPricing = nuclearPricing;
+    }
+
+    @ExcelField(title="核定依据", align=2, sort=17)
+    public String getBasisForApproval() {
+        return basisForApproval;
+    }
+
+    public void setBasisForApproval(String basisForApproval) {
+        this.basisForApproval = basisForApproval;
+    }
+    @ExcelField(title="购买地", align=2, sort=18)
+    public String getPurchasePlace() {
+        return purchasePlace;
+    }
+
+    public void setPurchasePlace(String purchasePlace) {
+        this.purchasePlace = purchasePlace;
+    }
+
+    @ExcelField(title="报价模式", align=2, sort=19)
+    public String getQuotationMode() {
+        return quotationMode;
+    }
+
+    public void setQuotationMode(String quotationMode) {
+        this.quotationMode = quotationMode;
+    }
 }

+ 435 - 39
src/main/java/com/jeeplus/modules/projectmaterialstorage/entity/ProjectMaterialStorageExport.java

@@ -3,52 +3,145 @@
  */
 package com.jeeplus.modules.projectmaterialstorage.entity;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.google.common.collect.Lists;
 import com.jeeplus.common.persistence.ActEntity;
+import com.jeeplus.common.utils.excel.annotation.ExcelField;
 import com.jeeplus.modules.project.entity.Project;
+import com.jeeplus.modules.sys.entity.Area;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.util.Date;
+import java.util.List;
 
 /**
  * 材料库导出模板
  */
 public class ProjectMaterialStorageExport extends ActEntity<ProjectMaterialStorageExport> {
 
-	public static final String SERIAL_BIZCODE ="1";
-	public static final String PROJECT_COST_APPRAISAL ="100";//材料库鉴定模板key
-	public static final String ECONOMIC_EVALUATION="101";//材料库模板key
-	public static final String SERIAL_COST_BIZCODE ="1004";
-	private static final long serialVersionUID = 1L;
+	private static final long serialVersionUID = 1707305231298038352L;
 
+	private String projectNumber;  //项目号
 
-	private String id;
+	private Double price ; //材料价格
 
-	private String projectNumber;  //项目id
-
-	private double price ; //材料价格
 
 	private String materialName; //材料名称
+	private String brand; //品牌
+	private String specifications; //规格型号
+	private String unit; //单位
+	private Double projectPriceExcludingTax; //不含税工程价(元)
+	private Double projectPriceIncludingTax; //含税工程价(元)
+	private Double marketPriceExcludingTax; //不含税市场价(元)
+	private Double marketPriceIncludingTax; //含税市场价(元)
+	private Double taxRate; //税率
+	private String explain; //产品说明
+	private String supplier; //供应商
+	private String remarks; //备注
+	private String quotedPriceDate; //报价时间
 
 	private Date beginDate;  //开始时间
 
 	private Date endDate;  //结束时间
 
-	private String status;  //状态 0代表无文件  1 代表有文件 2代表已处理
-
 	private Project project;  //项目
 
 	private String projectName; //项目名称
 
+	private String areaName;  //地点
 
-	@Override
-	public String getId() {
-		return id;
+	private Area area;
+
+	private String projectId; //报告号
+
+	private String distinctStr ; //用于去重用的临时参数
+	private String errorMessage ; //错误原因
+	private String monomerProjectDescription ; //单体工程描述
+	private String priceSource ; //价格来源。 1:甲供、2:乙供、3:概算价
+	private Double count;   //数量
+
+	private Integer quotedPriceYear ; //报价时间-年份
+	private Integer quotedPriceMonth ; //报价时间-月份
+
+
+	private String beginProjectPriceExcludingTax; //开始工程价(元,不含税)
+	private String endProjectPriceExcludingTax; //结束工程价(元,不含税)
+	private String beginMarketPriceExcludingTax; //开始市场价(元,不含税)
+	private String endMarketPriceExcludingTax; //结束市场价(元,不含税)
+
+	private String beginProjectPriceIncludingTax; //开始含税工程价(元)
+	private String endProjectPriceIncludingTax; //结束含税工程价(元)
+	private String beginMarketPriceIncludingTax; //开始含税市场价(元)
+	private String endMarketPriceIncludingTax; //结束含税市场价(元)
+	private String beginTaxRate; //开始税率
+	private String endTaxRate; //结束税率
+	private Date beginQuotedPriceDate; //开始报价时间
+	private Date endQuotedPriceDate; //结束报价时间
+	private String storageFlag;	//材料库判定参数
+	private String reportNumber;
+	private String areaId;
+
+	private String nuclearPricing;      //核定价String
+	private String basisForApproval;    //核定依据
+	private String purchasePlace;       //购买地
+	private String quotationMode;       //报价模式
+
+
+	//材料信息数据表集合
+	private List<ProjectMaterialStorageImport> projectMaterialStorageList = Lists.newArrayList();
+
+	@DateTimeFormat(pattern = "yyyy-MM-dd")
+	public Date getBeginDate() {
+		return beginDate;
 	}
 
-	@Override
-	public void setId(String id) {
-		this.id = id;
+	public void setBeginDate(Date beginDate) {
+		this.beginDate = beginDate;
+	}
+	@DateTimeFormat(pattern = "yyyy-MM-dd")
+	public Date getEndDate() {
+		return endDate;
+	}
+
+	public void setEndDate(Date endDate) {
+		this.endDate = endDate;
+	}
+
+	public String getProjectId() {
+		return projectId;
+	}
+
+	public void setProjectId(String reportId) {
+		this.projectId = reportId;
+	}
+
+	public Area getArea() {
+		return area;
+	}
+
+	public void setArea(Area area) {
+		this.area = area;
+	}
+
+	@ExcelField(title="项目名称", align=2, sort=1)
+	public String getProjectName() {
+		return projectName;
+	}
+
+	public void setProjectName(String projectName) {
+		this.projectName = projectName;
+	}
+
+	public String getAreaName() {
+		return areaName;
 	}
 
+	public void setAreaName(String areaName) {
+		this.areaName = areaName;
+	}
+
+
+
 	public String getProjectNumber() {
 		return projectNumber;
 	}
@@ -57,14 +150,15 @@ public class ProjectMaterialStorageExport extends ActEntity<ProjectMaterialStora
 		this.projectNumber = projectNumber;
 	}
 
-	public double getPrice() {
+	public Double getPrice() {
 		return price;
 	}
 
-	public void setPrice(double price) {
+	public void setPrice(Double price) {
 		this.price = price;
 	}
 
+	@ExcelField(title="材料名称", align=2, sort=3)
 	public String getMaterialName() {
 		return materialName;
 	}
@@ -73,43 +167,345 @@ public class ProjectMaterialStorageExport extends ActEntity<ProjectMaterialStora
 		this.materialName = materialName;
 	}
 
-	public Date getBeginDate() {
-		return beginDate;
+	public Project getProject() {
+		return project;
 	}
 
-	public void setBeginDate(Date beginDate) {
-		this.beginDate = beginDate;
+	public void setProject(Project project) {
+		this.project = project;
 	}
 
-	public Date getEndDate() {
-		return endDate;
+	public List<ProjectMaterialStorageImport> getProjectMaterialStorageList() {
+		return projectMaterialStorageList;
 	}
 
-	public void setEndDate(Date endDate) {
-		this.endDate = endDate;
+	public void setProjectMaterialStorageList(List<ProjectMaterialStorageImport> projectMaterialStorageList) {
+		this.projectMaterialStorageList = projectMaterialStorageList;
 	}
 
-	public String getStatus() {
-		return status;
+	//@ExcelField(title="品牌", align=2, sort=10)
+	public String getBrand() {
+		return brand;
 	}
 
-	public void setStatus(String status) {
-		this.status = status;
+	public void setBrand(String brand) {
+		this.brand = brand;
 	}
 
-	public Project getProject() {
-		return project;
+	@ExcelField(title="规格型号", align=2, sort=4)
+	public String getSpecifications() {
+		return specifications;
 	}
 
-	public void setProject(Project project) {
-		this.project = project;
+	public void setSpecifications(String specifications) {
+		this.specifications = specifications;
 	}
 
-	public String getProjectName() {
-		return projectName;
+	public Double getProjectPriceIncludingTax() {
+		return projectPriceIncludingTax;
 	}
 
-	public void setProjectName(String projectName) {
-		this.projectName = projectName;
+	public void setProjectPriceIncludingTax(Double projectPriceIncludingTax) {
+		this.projectPriceIncludingTax = projectPriceIncludingTax;
+	}
+
+	@ExcelField(title="材料价格", align=2, sort=6)
+	public Double getProjectPriceExcludingTax() {
+		return projectPriceExcludingTax;
+	}
+
+	public void setProjectPriceExcludingTax(Double projectPriceExcludingTax) {
+		this.projectPriceExcludingTax = projectPriceExcludingTax;
+	}
+
+	//@ExcelField(title="市场价(元,不含税)", align=2, sort=6)
+	public Double getMarketPriceExcludingTax() {
+		return marketPriceExcludingTax;
+	}
+
+	public void setMarketPriceExcludingTax(Double marketPriceExcludingTax) {
+		this.marketPriceExcludingTax = marketPriceExcludingTax;
+	}
+
+	public Double getMarketPriceIncludingTax() {
+		return marketPriceIncludingTax;
+	}
+
+	public void setMarketPriceIncludingTax(Double marketPriceIncludingTax) {
+		this.marketPriceIncludingTax = marketPriceIncludingTax;
+	}
+
+	//@ExcelField(title="税率", align=2, sort=7)
+	public Double getTaxRate() {
+		return taxRate;
+	}
+
+	public void setTaxRate(Double taxRate) {
+		this.taxRate = taxRate;
+	}
+
+	@ExcelField(title="单位", align=2, sort=5)
+	public String getUnit() {
+		return unit;
+	}
+
+	public void setUnit(String unit) {
+		this.unit = unit;
+	}
+
+	//@ExcelField(title="产品说明", align=2, sort=11)
+	public String getExplain() {
+		return explain;
+	}
+
+	public void setExplain(String explain) {
+		this.explain = explain;
+	}
+
+	//@ExcelField(title="供应商", align=2, sort=12)
+	public String getSupplier() {
+		return supplier;
+	}
+
+	public void setSupplier(String supplier) {
+		this.supplier = supplier;
+	}
+
+	@Override
+	//@ExcelField(title="备注", align=2, sort=13)
+	public String getRemarks() {
+		return remarks;
+	}
+
+	@Override
+	public void setRemarks(String remarks) {
+		this.remarks = remarks;
+	}
+
+	@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+	@ExcelField(title="报价时间", align=2, sort=14, format="yyyy-MM-dd")  // 添加Excel格式
+	public String getQuotedPriceDate() {
+		return quotedPriceDate;
+	}
+
+	public void setQuotedPriceDate(String quotedPriceDate) {
+		this.quotedPriceDate = quotedPriceDate;
+	}
+
+	public String getBeginProjectPriceIncludingTax() {
+		return beginProjectPriceIncludingTax;
+	}
+
+	public void setBeginProjectPriceIncludingTax(String beginProjectPriceIncludingTax) {
+		this.beginProjectPriceIncludingTax = beginProjectPriceIncludingTax;
+	}
+
+	public String getEndProjectPriceIncludingTax() {
+		return endProjectPriceIncludingTax;
+	}
+
+	public void setEndProjectPriceIncludingTax(String endProjectPriceIncludingTax) {
+		this.endProjectPriceIncludingTax = endProjectPriceIncludingTax;
+	}
+
+	public String getBeginMarketPriceIncludingTax() {
+		return beginMarketPriceIncludingTax;
+	}
+
+	public void setBeginMarketPriceIncludingTax(String beginMarketPriceIncludingTax) {
+		this.beginMarketPriceIncludingTax = beginMarketPriceIncludingTax;
+	}
+
+	public String getEndMarketPriceIncludingTax() {
+		return endMarketPriceIncludingTax;
+	}
+
+	public void setEndMarketPriceIncludingTax(String endMarketPriceIncludingTax) {
+		this.endMarketPriceIncludingTax = endMarketPriceIncludingTax;
+	}
+
+	public String getBeginTaxRate() {
+		return beginTaxRate;
+	}
+
+	public void setBeginTaxRate(String beginTaxRate) {
+		this.beginTaxRate = beginTaxRate;
+	}
+
+	public String getEndTaxRate() {
+		return endTaxRate;
+	}
+
+	public void setEndTaxRate(String endTaxRate) {
+		this.endTaxRate = endTaxRate;
+	}
+	@DateTimeFormat(pattern = "yyyy-MM-dd")
+	public Date getBeginQuotedPriceDate() {
+		return beginQuotedPriceDate;
+	}
+
+	public void setBeginQuotedPriceDate(Date beginQuotedPriceDate) {
+		this.beginQuotedPriceDate = beginQuotedPriceDate;
+	}
+	@DateTimeFormat(pattern = "yyyy-MM-dd")
+	public Date getEndQuotedPriceDate() {
+		return endQuotedPriceDate;
+	}
+
+	public void setEndQuotedPriceDate(Date endQuotedPriceDate) {
+		this.endQuotedPriceDate = endQuotedPriceDate;
+	}
+
+	public String getStorageFlag() {
+		return storageFlag;
+	}
+
+	public void setStorageFlag(String storageFlag) {
+		this.storageFlag = storageFlag;
+	}
+
+	public String getDistinctStr() {
+		return distinctStr;
+	}
+
+	public void setDistinctStr(String distinctStr) {
+		this.distinctStr = distinctStr;
+	}
+
+	//@ExcelField(title="提醒", align=2, sort=15, type = 1)
+	public String getErrorMessage() {
+		return errorMessage;
+	}
+
+	public void setErrorMessage(String errorMessage) {
+		this.errorMessage = errorMessage;
+	}
+
+	//@ExcelField(title="单体项目描述", align=2, sort=9)
+	public String getMonomerProjectDescription() {
+		return monomerProjectDescription;
+	}
+
+	public void setMonomerProjectDescription(String monomerProjectDescription) {
+		this.monomerProjectDescription = monomerProjectDescription;
+	}
+
+	@ExcelField(title="价格来源", align=2, sort=9)
+	public String getPriceSource() {
+		return priceSource;
+	}
+
+	public void setPriceSource(String priceSource) {
+		this.priceSource = priceSource;
+	}
+
+	@ExcelField(title="数量", align=2, sort=4, type = 2)
+	public Double getCount() {
+		return count;
+	}
+
+	public void setCount(Double count) {
+		this.count = count;
+	}
+
+	public Integer getQuotedPriceYear() {
+		return quotedPriceYear;
+	}
+
+	public void setQuotedPriceYear(Integer quotedPriceYear) {
+		this.quotedPriceYear = quotedPriceYear;
+	}
+
+	public Integer getQuotedPriceMonth() {
+		return quotedPriceMonth;
+	}
+
+	public void setQuotedPriceMonth(Integer quotedPriceMonth) {
+		this.quotedPriceMonth = quotedPriceMonth;
+	}
+
+	public String getBeginProjectPriceExcludingTax() {
+		return beginProjectPriceExcludingTax;
+	}
+
+	public void setBeginProjectPriceExcludingTax(String beginProjectPriceExcludingTax) {
+		this.beginProjectPriceExcludingTax = beginProjectPriceExcludingTax;
+	}
+
+	public String getEndProjectPriceExcludingTax() {
+		return endProjectPriceExcludingTax;
+	}
+
+	public void setEndProjectPriceExcludingTax(String endProjectPriceExcludingTax) {
+		this.endProjectPriceExcludingTax = endProjectPriceExcludingTax;
+	}
+
+	public String getBeginMarketPriceExcludingTax() {
+		return beginMarketPriceExcludingTax;
+	}
+
+	public void setBeginMarketPriceExcludingTax(String beginMarketPriceExcludingTax) {
+		this.beginMarketPriceExcludingTax = beginMarketPriceExcludingTax;
+	}
+
+	public String getEndMarketPriceExcludingTax() {
+		return endMarketPriceExcludingTax;
+	}
+
+	public void setEndMarketPriceExcludingTax(String endMarketPriceExcludingTax) {
+		this.endMarketPriceExcludingTax = endMarketPriceExcludingTax;
+	}
+
+	@ExcelField(title="报告号", align=2, sort=2)
+	public String getReportNumber() {
+		return reportNumber;
+	}
+
+	public void setReportNumber(String reportNumber) {
+		this.reportNumber = reportNumber;
+	}
+
+	public String getAreaId() {
+		return areaId;
+	}
+
+	public void setAreaId(String areaId) {
+		this.areaId = areaId;
+	}
+
+
+	@ExcelField(title="核定价", align=2, sort=7)
+	public String getNuclearPricing() {
+		return nuclearPricing;
+	}
+
+	public void setNuclearPricing(String nuclearPricing) {
+		this.nuclearPricing = nuclearPricing;
+	}
+
+	//@ExcelField(title="核定依据", align=2, sort=17)
+	public String getBasisForApproval() {
+		return basisForApproval;
+	}
+
+	public void setBasisForApproval(String basisForApproval) {
+		this.basisForApproval = basisForApproval;
+	}
+	@ExcelField(title="购买地", align=2, sort=8)
+	public String getPurchasePlace() {
+		return purchasePlace;
+	}
+
+	public void setPurchasePlace(String purchasePlace) {
+		this.purchasePlace = purchasePlace;
+	}
+
+	//@ExcelField(title="报价模式", align=2, sort=19)
+	public String getQuotationMode() {
+		return quotationMode;
+	}
+
+	public void setQuotationMode(String quotationMode) {
+		this.quotationMode = quotationMode;
 	}
 }

+ 37 - 0
src/main/java/com/jeeplus/modules/projectmaterialstorage/entity/ProjectMaterialStorageImport.java

@@ -46,6 +46,11 @@ public class ProjectMaterialStorageImport extends DataEntity<ProjectMaterialStor
     private String areaId;
     private String areaName;
 
+    private String nuclearPricing;      //核定价String
+    private String basisForApproval;    //核定依据
+    private String purchasePlace;       //购买地
+    private String quotationMode;       //报价模式
+
     public String getProjectNumber() {
         return projectNumber;
     }
@@ -264,4 +269,36 @@ public class ProjectMaterialStorageImport extends DataEntity<ProjectMaterialStor
     public void setAreaName(String areaName) {
         this.areaName = areaName;
     }
+
+    public String getNuclearPricing() {
+        return nuclearPricing;
+    }
+
+    public void setNuclearPricing(String nuclearPricing) {
+        this.nuclearPricing = nuclearPricing;
+    }
+
+    public String getBasisForApproval() {
+        return basisForApproval;
+    }
+
+    public void setBasisForApproval(String basisForApproval) {
+        this.basisForApproval = basisForApproval;
+    }
+
+    public String getPurchasePlace() {
+        return purchasePlace;
+    }
+
+    public void setPurchasePlace(String purchasePlace) {
+        this.purchasePlace = purchasePlace;
+    }
+
+    public String getQuotationMode() {
+        return quotationMode;
+    }
+
+    public void setQuotationMode(String quotationMode) {
+        this.quotationMode = quotationMode;
+    }
 }

+ 31 - 0
src/main/java/com/jeeplus/modules/projectmaterialstorage/service/ProjectMaterialStorageService.java

@@ -544,5 +544,36 @@ public class ProjectMaterialStorageService extends CrudService<ProjectMaterialSt
         Jedis jedis = JedisUtils.getResource();
         jedis.del(key);
     }
+
+
+    /**
+     *分页方法
+     * @param page
+     * @param
+     * @return
+     */
+    public Page<ProjectMaterialStorage> findListExport(Page<ProjectMaterialStorage> page, ProjectMaterialStorage projectMaterialStorage) {
+        /*boolean a = UserUtils.getUser().isAdmin();
+        //设置数据权限
+        if(!UserUtils.getUser().isAdmin()) {
+            String dataScopeSql = dataScopeFilter(projectMaterialStorage.getCurrentUser(), "o", "u", "s", MenuStatusEnum.WORK_RECORDS.getValue());
+            if(org.apache.commons.lang3.StringUtils.isBlank(dataScopeSql)){
+                dataScopeSql = dataScopeFilter(projectMaterialStorage.getCurrentUser(), "o", "u", "s", MenuStatusEnum.OVERALL_WORK_RECORDS.getValue());
+            }
+            projectMaterialStorage.getSqlMap().put("dsf", dataScopeSql);
+        }*/
+        int count = dao.queryCount(projectMaterialStorage);
+        page.setCount(count);
+        page.setCountFlag(false);
+        projectMaterialStorage.setPage(page);
+        List<ProjectMaterialStorage> projectMaterialStorageList = dao.findListExport(projectMaterialStorage);
+        for (ProjectMaterialStorage projectMaterialStorage1:projectMaterialStorageList){
+            User user=UserUtils.get(projectMaterialStorage1.getCreateBy().getId());
+            projectMaterialStorage1.setCreateBy(user);
+            processHtmlEntities(projectMaterialStorage1);
+        }
+        page.setList(projectMaterialStorageList);
+        return page;
+    }
 }
 

+ 26 - 2
src/main/java/com/jeeplus/modules/projectmaterialstorage/web/ProjectMaterialStorageController.java

@@ -3,12 +3,16 @@ package com.jeeplus.modules.projectmaterialstorage.web;
 import com.google.common.collect.Lists;
 import com.jeeplus.common.config.Global;
 import com.jeeplus.common.persistence.Page;
-import com.jeeplus.common.utils.*;
+import com.jeeplus.common.utils.DateUtils;
+import com.jeeplus.common.utils.MyBeanUtils;
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.common.utils.ThisLocalityDownloadUtil;
 import com.jeeplus.common.utils.excel.ExportExcel;
 import com.jeeplus.common.utils.excel.ExportMultipleTabsExcel;
 import com.jeeplus.common.utils.excel.ImportExcel;
 import com.jeeplus.common.web.BaseController;
 import com.jeeplus.modules.projectmaterialstorage.entity.ProjectMaterialStorage;
+import com.jeeplus.modules.projectmaterialstorage.entity.ProjectMaterialStorageExport;
 import com.jeeplus.modules.projectmaterialstorage.entity.ProjectMaterialStorageImport;
 import com.jeeplus.modules.projectmaterialstorage.service.ProjectMaterialStorageService;
 import com.jeeplus.modules.projectrecord.entity.ProjectRecords;
@@ -27,7 +31,6 @@ import org.springframework.web.bind.WebDataBinder;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.servlet.mvc.support.RedirectAttributes;
-import redis.clients.jedis.Jedis;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -85,6 +88,9 @@ public class ProjectMaterialStorageController extends BaseController {
                 model.addAttribute("projectMaterialStorage", projectMaterialStorage);
             }
         }
+        if(StringUtils.isBlank(projectMaterialStorage.getPriceSource())){
+            projectMaterialStorage.setPriceSource("核价单");
+        }
         Page<ProjectMaterialStorage> page =  projectMaterialStorageService.findPage(new Page<ProjectMaterialStorage>(request,response),projectMaterialStorage);
         model.addAttribute("page",page);
         model.addAttribute("projectMaterialStorage",projectMaterialStorage);
@@ -738,4 +744,22 @@ public class ProjectMaterialStorageController extends BaseController {
         return map;
     }
 
+    /**
+     * 导出excel文件
+     */
+    @RequiresPermissions("project:projectMaterialStorage:list")
+    @RequestMapping(value = "exportInfo", method=RequestMethod.POST)
+    public String exportInfoFile(ProjectMaterialStorage projectMaterialStorage, HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) {
+        try {
+            String fileName = "材料库清单"+DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
+            Page<ProjectMaterialStorage> page = projectMaterialStorageService.findListExport(new Page<ProjectMaterialStorage>(request, response, -1), projectMaterialStorage);
+            new ExportExcel("材料库清单", ProjectMaterialStorageExport.class).setDataList(page.getList()).write(response, fileName).dispose();
+            return null;
+        } catch (Exception e) {
+            addMessage(redirectAttributes, "导出材料库清单记录失败!失败信息:"+e.getMessage());
+            logger.error("Exception e:"+e);
+        }
+        return "redirect:"+Global.getAdminPath()+"/project/projectMaterialStorage/?repage";
+    }
+
 }

+ 116 - 0
src/main/resources/mappings/modules/WorkKnowledgeBase/WorkKnowledgeBasePointDao.xml

@@ -0,0 +1,116 @@
+<?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.WorkKnowledgeBase.dao.WorkKnowledgeBasePointDao">
+
+    <sql id="workKnowledgeBasePointColumns">
+        a.id            AS "id",
+        a.user_id       AS "userId",
+        a.change_type   AS "changeType",
+        a.point         AS "point",
+        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"
+    </sql>
+
+    <sql id="workKnowledgeBasePointJoins">
+        LEFT JOIN sys_user u ON u.id = a.user_id
+        LEFT JOIN sys_office o ON o.id = u.office_id
+    </sql>
+
+    <select id="get" resultType="WorkKnowledgeBasePoint">
+        SELECT <include refid="workKnowledgeBasePointColumns"/>,
+            u.name   AS "userName",
+            o.name   AS "officeName"
+        FROM work_knowledge_base_point a
+        <include refid="workKnowledgeBasePointJoins"/>
+        WHERE a.id = #{id}
+    </select>
+
+    <select id="findList" resultType="WorkKnowledgeBasePoint">
+        SELECT <include refid="workKnowledgeBasePointColumns"/>,
+            u.name   AS "userName",
+            o.name   AS "officeName"
+        FROM work_knowledge_base_point a
+        <include refid="workKnowledgeBasePointJoins"/>
+        <where>
+            a.del_flag = #{DEL_FLAG_NORMAL}
+            <if test="userId != null and userId != ''">
+                AND a.user_id = #{userId}
+            </if>
+            <if test="userName != null and userName != ''">
+                AND u.name LIKE CONCAT('%', #{userName}, '%')
+            </if>
+            <if test="officeId != null and officeId != ''">
+                AND u.office_id = #{officeId}
+            </if>
+            <if test="changeType != null">
+                AND a.change_type = #{changeType}
+            </if>
+            <if test="beginDate != null and beginDate != ''">
+                AND a.create_date &gt;= #{beginDate}
+            </if>
+            <if test="endDate != null and endDate != ''">
+                AND a.create_date &lt;= CONCAT(#{endDate}, ' 23:59:59')
+            </if>
+        </where>
+        ORDER BY a.create_date DESC
+    </select>
+
+    <select id="findAllList" resultType="WorkKnowledgeBasePoint">
+        SELECT <include refid="workKnowledgeBasePointColumns"/>,
+            u.name   AS "userName",
+            o.name   AS "officeName"
+        FROM work_knowledge_base_point a
+        <include refid="workKnowledgeBasePointJoins"/>
+        WHERE a.del_flag = #{DEL_FLAG_NORMAL}
+        ORDER BY a.create_date DESC
+    </select>
+
+    <select id="findUniqueByProperty" resultType="WorkKnowledgeBasePoint">
+        SELECT <include refid="workKnowledgeBasePointColumns"/>
+        FROM work_knowledge_base_point a
+        WHERE ${propertyName} = #{value} AND a.del_flag = '0'
+        LIMIT 1
+    </select>
+
+    <select id="queryCount" resultType="java.lang.Integer">
+        SELECT COUNT(1)
+        FROM work_knowledge_base_point a
+        WHERE a.del_flag = #{DEL_FLAG_NORMAL}
+    </select>
+
+    <insert id="insert">
+        INSERT INTO work_knowledge_base_point (
+            id, user_id, change_type, point,
+            create_by, create_date, update_by, update_date, remarks, del_flag
+        ) VALUES (
+            #{id}, #{userId}, #{changeType}, #{point},
+            #{createBy.id}, #{createDate}, #{updateBy.id}, #{updateDate}, #{remarks}, #{delFlag}
+        )
+    </insert>
+
+    <update id="update">
+        UPDATE work_knowledge_base_point SET
+            user_id     = #{userId},
+            change_type = #{changeType},
+            point       = #{point},
+            update_by   = #{updateBy.id},
+            update_date = #{updateDate},
+            remarks     = #{remarks}
+        WHERE id = #{id}
+    </update>
+
+    <delete id="delete">
+        DELETE FROM work_knowledge_base_point WHERE id = #{id}
+    </delete>
+
+    <update id="deleteByLogic">
+        UPDATE work_knowledge_base_point SET
+            del_flag = #{DEL_FLAG_DELETE}
+        WHERE id = #{id}
+    </update>
+
+</mapper>

+ 43 - 17
src/main/resources/mappings/modules/WorkKnowledgeBase/WorkKnowledgeBasePointDetailDao.xml

@@ -92,7 +92,7 @@
          仅返回存在积分记录的用户
          参数:userName(姓名模糊)/officeName(部门模糊)/offset/limit
          ============================================================ -->
-    <select id="findUserPointSummaryList" resultType="com.jeeplus.modules.WorkKnowledgeBase.entity.UserPointSummary">
+    <select id="findUserPointSummaryList" resultType="com.jeeplus.modules.WorkKnowledgeBase.entity.WorkKnowledgeBasePoint">
         SELECT
             u.id        AS "userId",
             u.name      AS "userName",
@@ -105,9 +105,15 @@
         LEFT JOIN sys_office o ON o.id = u.office_id
         <where>
             u.del_flag = '0'
+            <if test="userId != null and userId != ''">
+                AND u.id = #{userId}
+            </if>
             <if test="userName != null and userName != ''">
                 AND u.name LIKE CONCAT('%', #{userName}, '%')
             </if>
+            <if test="officeId == '' and officeName!=null and officeName!=''">
+                AND o.name like concat('%',#{officeName},'%')
+            </if>
             <if test="officeIdList != null and officeIdList.size() > 0">
                 AND u.office_id IN
                 <foreach collection="officeIdList" item="officeId" open="(" separator="," close=")">
@@ -116,10 +122,14 @@
             </if>
         </where>
         GROUP BY u.id, u.name, u.mobile, u.phone, o.name
-        ORDER BY totalPoint DESC, u.name ASC
-        <if test="offset != null and limit != null">
-            LIMIT #{offset}, #{limit}
-        </if>
+        <choose>
+            <when test="page !=null and page.orderBy != null and page.orderBy != ''">
+                ORDER BY ${page.orderBy}
+            </when>
+            <otherwise>
+                ORDER BY d.create_date DESC
+            </otherwise>
+        </choose>
     </select>
 
     <select id="findUserPointSummaryCount" resultType="java.lang.Integer">
@@ -130,11 +140,21 @@
             LEFT JOIN sys_office o ON o.id = u.office_id
             <where>
                 u.del_flag = '0'
+                <if test="userId != null and userId != ''">
+                    AND u.id = #{userId}
+                </if>
                 <if test="userName != null and userName != ''">
                     AND u.name LIKE CONCAT('%', #{userName}, '%')
                 </if>
-                <if test="officeName != null and officeName != ''">
-                    AND o.name LIKE CONCAT('%', #{officeName}, '%')
+
+                <if test="officeId == '' and officeName!=null and officeName!=''">
+                    AND o.name like concat('%',#{officeName},'%')
+                </if>
+                <if test="officeIdList != null and officeIdList.size() > 0">
+                    AND u.office_id IN
+                    <foreach collection="officeIdList" item="officeId" open="(" separator="," close=")">
+                        #{officeId}
+                    </foreach>
                 </if>
             </where>
             GROUP BY u.id
@@ -168,17 +188,22 @@
             <if test="changeType != null">
                 AND d.change_type = #{changeType}
             </if>
-            <if test="beginDate != null and beginDate != ''">
+            <!-- 正确日期查询:使用 DATE() 函数 + 直接传 Date 类型 -->
+            <if test="beginDate != null">
                 AND d.create_date &gt;= #{beginDate}
             </if>
-            <if test="endDate != null and endDate != ''">
-                AND d.create_date &lt;= CONCAT(#{endDate}, ' 23:59:59')
+            <if test="endDate != null">
+                AND d.create_date &lt;= TIMESTAMP(#{endDate}, '23:59:59')
             </if>
         </where>
-        ORDER BY d.create_date DESC
-        <if test="offset != null and limit != null">
-            LIMIT #{offset}, #{limit}
-        </if>
+        <choose>
+            <when test="page !=null and page.orderBy != null and page.orderBy != ''">
+                ORDER BY ${page.orderBy}
+            </when>
+            <otherwise>
+                ORDER BY d.create_date DESC
+            </otherwise>
+        </choose>
     </select>
 
     <select id="findUserPointDetailCount" resultType="java.lang.Integer">
@@ -194,11 +219,12 @@
             <if test="changeType != null">
                 AND d.change_type = #{changeType}
             </if>
-            <if test="beginDate != null and beginDate != ''">
+            <!-- 正确日期查询:使用 DATE() 函数 + 直接传 Date 类型 -->
+            <if test="beginDate != null">
                 AND d.create_date &gt;= #{beginDate}
             </if>
-            <if test="endDate != null and endDate != ''">
-                AND d.create_date &lt;= CONCAT(#{endDate}, ' 23:59:59')
+            <if test="endDate != null">
+                AND d.create_date &lt;= TIMESTAMP(#{endDate}, '23:59:59')
             </if>
         </where>
     </select>

+ 134 - 5
src/main/resources/mappings/modules/projectMaterialStorage/ProjectMaterialStorageDao.xml

@@ -31,7 +31,11 @@
 		a.quoted_price_month AS "quotedPriceMonth",
 		a.project_name AS "projectName",
 		a.report_number AS "reportNumber",
-		a.area_id AS "areaId"
+		a.area_id AS "areaId",
+		a.nuclear_pricing AS nuclearPricing,
+		a.basis_for_approval AS basisForApproval,
+		a.purchase_place AS purchasePlace,
+		a.quotation_mode AS quotationMode
 	</sql>
 
 	<sql id="projectJoins">
@@ -283,7 +287,11 @@
 			quoted_price_month,
 			project_name,
 			report_number,
-			area_id
+			area_id,
+			nuclear_pricing,
+			basis_for_approval,
+			purchase_place,
+			quotation_mode
 		) VALUES (
 			#{id},
 			#{createBy.id},
@@ -312,7 +320,11 @@
 			#{quotedPriceMonth},
 		 	#{projectName},
 			#{reportNumber},
-			#{areaId}
+			#{areaId},
+			#{nuclearPricing},
+			#{basisForApproval},
+			#{purchasePlace},
+			#{quotationMode}
 		)
 	</insert>
 
@@ -335,14 +347,20 @@
 			`explain` = #{explain},
 			supplier = #{supplier},
 			remarks = #{remarks},
-			quoted_price_date = #{quotedPriceDate},
+			<if test="quotedPriceDate != null and quotedPriceDate != ''">
+				quoted_price_date = #{quotedPriceDate},
+			</if>
 			price_source = #{priceSource},
 			monomer_project_description = #{monomerProjectDescription},
 			quoted_price_year = #{quotedPriceYear},
 			quoted_price_month = #{quotedPriceMonth},
 			project_name = #{projectName},
 			report_number = #{reportNumber},
-			area_id = #{areaId}
+			area_id = #{areaId},
+			nuclear_pricing = #{nuclearPricing},
+			basis_for_approval = #{basisForApproval},
+			purchase_place = #{purchasePlace},
+			quotation_mode = #{quotationMode}
 		WHERE id = #{id}
 	</update>
 
@@ -597,4 +615,115 @@
 		and a.del_flag = 0 and a.create_by = #{createBy}
 	</select>
 
+	<select id="findListExport" resultType="com.jeeplus.modules.projectmaterialstorage.entity.ProjectMaterialStorage" >
+		SELECT
+		<include refid="projectMaterialStorageColumns"/>
+		,sa.name as 'areaName'
+		FROM project_material_storage a
+		LEFT JOIN sys_area sa on a.area_id = sa.id
+		<where>
+			a.del_flag = #{DEL_FLAG_NORMAL}
+			<if test="projectNumber != null and projectNumber != ''">
+				AND a.project_number LIKE
+				<if test="dbName == 'oracle'">'%'||#{projectNumber}||'%'</if>
+				<if test="dbName == 'mssql'">'%'+#{projectNumber}+'%'</if>
+				<if test="dbName == 'mysql'">concat('%',#{projectNumber},'%')</if>
+			</if>
+			<if test="reportNumber != null and reportNumber != ''">
+				AND a.report_number LIKE
+				<if test="dbName == 'oracle'">'%'||#{reportNumber}||'%'</if>
+				<if test="dbName == 'mssql'">'%'+#{reportNumber}+'%'</if>
+				<if test="dbName == 'mysql'">concat('%',#{reportNumber},'%')</if>
+			</if>
+			<if test="projectName != null and projectName != ''">
+				AND a.project_name like concat(concat('%',#{projectName}),'%')
+			</if>
+			<if test="projectId != null and projectId != ''">
+				AND prd.number like concat(concat('%',#{projectId}),'%')
+			</if>
+			<if test="materialName != null and materialName != ''">
+				AND a.material_name like concat(concat('%',#{materialName}),'%')
+			</if>
+			<if test="brand != null and brand != ''">
+				AND a.brand like concat(concat('%',#{brand}),'%')
+			</if>
+			<if test="specifications != null and specifications != ''">
+				AND a.specifications like concat(concat('%',#{specifications}),'%')
+			</if>
+			<if test="unit != null and unit != ''">
+				AND a.unit like concat(concat('%',#{unit}),'%')
+			</if>
+			<if test="explain != null and explain != ''">
+				AND a.explain like concat(concat('%',#{explain}),'%')
+			</if>
+			<if test="supplier != null and supplier != ''">
+				AND a.supplier like concat(concat('%',#{supplier}),'%')
+			</if>
+			<if test="monomerProjectDescription != null and monomerProjectDescription != ''">
+				AND a.monomer_project_description like concat(concat('%',#{monomerProjectDescription}),'%')
+			</if>
+			<if test="priceSource != null and priceSource != ''">
+				AND a.price_source = #{priceSource}
+			</if>
+
+			<if test="beginProjectPriceIncludingTax !=null and beginProjectPriceIncludingTax != ''">
+				AND a.project_price_including_tax >= #{beginProjectPriceIncludingTax}
+			</if>
+			<if test="endProjectPriceIncludingTax !=null and endProjectPriceIncludingTax != ''">
+				AND a.project_price_including_tax &lt;= #{endProjectPriceIncludingTax}
+			</if>
+
+			<if test="beginMarketPriceIncludingTax !=null and beginMarketPriceIncludingTax != ''">
+				AND a.market_price_including_tax >= #{beginMarketPriceIncludingTax}
+			</if>
+			<if test="endMarketPriceIncludingTax !=null and endMarketPriceIncludingTax != ''">
+				AND a.market_price_including_tax &lt;= #{endMarketPriceIncludingTax}
+			</if>
+
+			<if test="beginProjectPriceExcludingTax !=null and beginProjectPriceExcludingTax != ''">
+				AND a.project_price_excluding_tax >= #{beginProjectPriceExcludingTax}
+			</if>
+			<if test="endProjectPriceExcludingTax !=null and endProjectPriceExcludingTax != ''">
+				AND a.project_price_excluding_tax &lt;= #{endProjectPriceExcludingTax}
+			</if>
+
+			<if test="beginMarketPriceExcludingTax !=null and beginMarketPriceExcludingTax != ''">
+				AND a.market_price_excluding_tax >= #{beginMarketPriceExcludingTax}
+			</if>
+			<if test="endMarketPriceExcludingTax !=null and endMarketPriceExcludingTax != ''">
+				AND a.market_price_excluding_tax &lt;= #{endMarketPriceExcludingTax}
+			</if>
+
+			<if test="beginTaxRate !=null and beginTaxRate != ''">
+				AND a.tax_rate >= #{beginTaxRate}
+			</if>
+			<if test="endTaxRate !=null and endTaxRate != ''">
+				AND a.tax_rate &lt;= #{endTaxRate}
+			</if>
+
+			<if test="beginQuotedPriceDate !=null">
+				AND a.quoted_price_date >= #{beginQuotedPriceDate}
+			</if>
+			<if test="endQuotedPriceDate !=null">
+				AND a.quoted_price_date &lt; #{endQuotedPriceDate}
+			</if>
+
+			<if test="beginDate !=null">
+				AND a.create_date >= #{beginDate}
+			</if>
+			<if test="endDate !=null">
+				AND a.create_date &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.material_name asc,a.create_date DESC
+			</otherwise>
+		</choose>
+	</select>
+
 </mapper>

BIN=BIN
src/main/webapp/dot/材料库处理表模板.xlsx


+ 1 - 1
src/main/webapp/webpage/include/head.jsp

@@ -36,7 +36,7 @@
 
 <!-- jeeplus -->
 <link href="${ctxStatic}/common/jeeplus.css" type="text/css" rel="stylesheet" />
-<script src="${ctxStatic}/common/jeeplus.js?27" type="text/javascript"></script>
+<script src="${ctxStatic}/common/jeeplus.js?28" type="text/javascript"></script>
 <script type="text/javascript" src="${ctxStatic}/common/openShow.js"></script>
 
 <!-- jquery ui -->

+ 86 - 0
src/main/webapp/webpage/modules/WorkKnowledgeBase/workKnowledgeBasePointForm.jsp

@@ -0,0 +1,86 @@
+<%@ 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">
+        var validateForm;
+        function doSubmit(flag){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            if(validateForm.form()){
+                if(flag == 2){
+                    $("#inputForm").attr("action","${ctx}/workKnowledgeBase/point/store");
+                }else{
+                    $("#inputForm").attr("action","${ctx}/workKnowledgeBase/point/save");
+                }
+                $("#inputForm").submit();
+                return true;
+            }
+            return false;
+        }
+        
+        $(document).ready(function() {
+			//表单验证
+			validateForm = $("#inputForm").validate({
+				rules: {
+					userName: {required: true},
+					point: {required: true, number: true}
+				},
+				messages: {
+					userName: {required: "请输入经办人"},
+					point: {required: "请输入积分数量", number: "积分数量必须为数字"}
+				}
+			});
+        });
+	</script>
+</head>
+<body>
+	<ul class="nav nav-tabs">
+		<li><a href="${ctx}/workKnowledgeBase/point/list">知识库积分管理列表</a></li>
+		<li class="active"><a href="${ctx}/workKnowledgeBase/point/form?id=${workKnowledgeBasePoint.id}">知识库积分管理<shiro:hasPermission name="workKnowledgeBase:point:edit">${not empty workKnowledgeBasePoint.id?'修改':'添加'}</shiro:hasPermission><shiro:lacksPermission name="workKnowledgeBase:point:edit">查看</shiro:lacksPermission></a></li>
+	</ul><br/>
+	<form:form id="inputForm" modelAttribute="workKnowledgeBasePoint" action="${ctx}/workKnowledgeBase/point/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<sys:message content="${message}"/>	
+		<div class="control-group">
+			<label class="control-label">经办人:</label>
+			<div class="controls">
+				<form:input path="userName" htmlEscape="false" maxlength="100" class="input-xlarge required"/>
+			</div>
+		</div>
+		<div class="control-group">
+			<label class="control-label">经办人部门:</label>
+			<div class="controls">
+				<sys:treeselect id="office" name="officeId" value="${workKnowledgeBasePoint.officeId}" labelName="office.name" labelValue="${workKnowledgeBasePoint.office.name}"
+					title="部门" url="/sys/office/treeData?type=2" cssClass="input-xlarge required" allowClear="true" notAllowSelectParent="true"/>
+			</div>
+		</div>
+		<div class="control-group">
+			<label class="control-label">文档名称:</label>
+			<div class="controls">
+				<form:input path="shareName" htmlEscape="false" maxlength="200" class="input-xlarge"/>
+			</div>
+		</div>
+		<div class="control-group">
+			<label class="control-label">变更类型:</label>
+			<div class="controls">
+				<form:select path="changeType" class="input-xlarge">
+					<form:option value="" label=""/>
+					<form:option value="1" label="创建"/>
+					<form:option value="2" label="审核"/>
+				</form:select>
+			</div>
+		</div>
+		<div class="control-group">
+			<label class="control-label">积分数量:</label>
+			<div class="controls">
+				<form:input path="point" htmlEscape="false" class="input-xlarge required number"/>
+			</div>
+		</div>
+		<div class="form-actions">
+			<shiro:hasPermission name="workKnowledgeBase:point:edit"><input id="btnSubmit" class="btn btn-primary" type="submit" value="保 存"/>&nbsp;</shiro:hasPermission>
+			<input id="btnCancel" class="btn" type="button" value="返 回" onclick="history.go(-1)"/>
+		</div>
+	</form:form>
+</body>
+</html>

+ 168 - 0
src/main/webapp/webpage/modules/WorkKnowledgeBase/workKnowledgeBasePointList.jsp

@@ -0,0 +1,168 @@
+<%@ 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");
+				}
+			});
+		});
+		
+		function openUserDetailDialog(userId, userName) {
+            top.layer.open({
+                type: 2,
+                area: ['85%', '80%'],
+                title: (userName || '用户') + ' - 积分明细',
+                maxmin: true,
+                content: '${ctx}/workKnowledgeBase/point/userDetail?userId=' + userId + '&userName=' + encodeURIComponent(userName || ''),
+                btn: ['关闭'],
+                btn1: function(index) { top.layer.close(index); }
+            });
+        }
+		
+		function blurSubmitterId(obj) {
+			var id = $("#submitterId").val();
+			if(undefined != obj.value && null != obj.value && '' != obj.value){
+				$.ajax({
+					url:'${ctx}/sys/user/getUserByName?name='+obj.value,
+					type:"post",
+					success:function(data){
+						var user = data.body.data;
+						if(undefined == user || null == user || '' == user){
+							$("#submitterId").val("");
+						}else{
+							if(data.body.data.id != id){
+								if(undefined != id && null != id && '' != id){
+									$("#submitterId").val("");
+								}
+							}
+						}
+					}
+				});
+			}else{
+				$("#submitterId").val("");
+			}
+		}
+
+		function search() { 
+            $("#toflag").val("1");
+            $('#searchForm').submit(); 
+            return false; 
+        }
+        function resetSearch() {
+			console.log(12312)
+            $("#pageNo").val(0);
+            $("#toflag").val("");
+            $('#searchForm div.query input[type=text]').val('');
+            $('#searchForm div.query input[type=hidden]').val('');
+            $('#searchForm div.query select').val('');
+            $('#searchForm').submit();
+        }
+	</script>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+	<sys:message content="${message}"/>
+	<div class="layui-row">
+		<!-- 查询条件 -->
+		<div class="full-width fl">
+			<div class="contentShadow layui-row" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="workKnowledgeBasePoint" action="${ctx}/workKnowledgeBase/point/list" 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}"/>
+					<form:hidden path="toflag" value="${workKnowledgeBasePoint.toflag}"/>
+					<div class="commonQuery lw7">
+						<div class="layui-item query athird">
+							<label class="layui-form-label">经办人:</label>
+							<div class="layui-input-block with-icon">
+								<sys:inquireselectUserNotReadolnyTow id="submitter" name="submitterId" value="${workKnowledgeBasePoint.submitterId}" labelName="submitterName" labelValue="${workKnowledgeBasePoint.submitterName}" cssStyle="background-color: #fff"
+																		 title="用户" url="/sys/office/treeDataAll?type=3" cssClass="form-control layui-input" allowClear="true" notAllowSelectParent="true"/>
+							</div>
+						</div>
+						<div class="layui-item query athird">
+							<label class="layui-form-label">经办人部门:</label>
+							<div class="layui-input-block with-icon">
+								<sys:treeselect id="officeId" name="officeId" value="${workKnowledgeBasePoint.officeId}" labelName="officeName" labelValue="${workKnowledgeBasePoint.officeName}" cssStyle="background-color: #fff"
+												title="部门" url="/sys/office/treeDataAll?type=6" cssClass="form-control layui-input" allowInput="true" allowClear="true" notAllowSelectParent="true" />
+							</div>
+						</div>
+						<div class="layui-item athird">
+							<div class="input-group">
+								<div class="layui-btn-group search-spacing">
+									<button id="searchQuery" class="layui-btn layui-btn-sm layui-bg-blue" onclick="return search()">查询</button>
+									<button id="searchReset" type="button" class="layui-btn layui-btn-sm" onclick="resetSearch()">重置</button>
+								</div>
+							</div>
+						</div>
+						<div style="clear:both;"></div>
+					</div>
+				</form:form>
+			</div>
+		</div>
+
+		<!-- 表格 + 分页 -->
+		<div class="full-width fl">
+			<div class="contentShadow layui-form contentDetails">
+				<table class="oa-table layui-table" id="contentTable"></table>
+				<table:page page="${page}"></table:page>
+				<div style="clear:both;"></div>
+			</div>
+		</div>
+	</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: '#contentTable'
+            ,page: false
+            ,cols: [[
+                {field:'index',align:'center', title: '序号',width:40}
+                ,{field:'userName', align: 'center', title: '经办人', minWidth: 120, templet: function(d) {
+                    var name = d.userName || '';
+                    return '<a href="javascript:void(0)" class="attention-info" onclick="openUserDetailDialog(\'' + d.userId + '\',\'' + name.replace(/'/g, "\\'") + '\')">' + name + '</a>';
+                }}
+                ,{field:'officeName', align: 'center', title: '经办人部门', minWidth: 160}
+                ,{field:'mobile', align: 'center', title: '手机号', minWidth: 130, templet: function(d) {
+                    return d.mobile || d.phone || '';
+                }}
+                ,{field:'totalPoint', align: 'center', title: '积分数量', width: 110, templet: function(d) {
+                    return '<span style="color:#1aa094;font-weight:bold;">' + (d.totalPoint || 0) + '</span>';
+                }}
+            ]]
+            ,data: [
+                <c:choose>
+                    <c:when test="${not empty page.list}">
+                        <c:forEach items="${page.list}" var="row" varStatus="st">
+                            <c:if test="${st.index != 0}">,</c:if>
+                            {
+                                "index": "${st.index + 1 + (page.pageNo - 1) * page.pageSize}"
+                                ,"userId": "${row.userId}"
+                                ,"userName": "<c:out value='${row.userName}'/>"
+                                ,"officeName": "<c:out value='${row.officeName}'/>"
+                                ,"mobile": "<c:out value='${row.mobile}'/>"
+                                ,"phone": "<c:out value='${row.phone}'/>"
+                                ,"totalPoint": "${row.totalPoint}"
+                            }
+                        </c:forEach>
+                    </c:when>
+                    <c:otherwise></c:otherwise>
+                </c:choose>
+            ]
+        });
+    });
+</script>
+</body>
+</html>

+ 71 - 67
src/main/webapp/webpage/modules/WorkKnowledgeBase/workKnowledgeBasePointUserDetail.jsp

@@ -1,6 +1,76 @@
 <%@ page contentType="text/html;charset=UTF-8" %>
 <%@ include file="/webpage/include/taglib.jsp"%>
 <html>
+<body>
+<div class="wrapper wrapper-content">
+    <sys:message content="${message}"/>
+    <div class="layui-row">
+        <!-- 查询条件 -->
+        <div class="full-width fl">
+            <div class="contentShadow layui-row" id="queryDiv">
+                <form id="searchForm" action="${ctx}/workKnowledgeBase/point/userDetail" method="post" class="form-inline">
+                    <input type="hidden" name="userId" value="${userPointDetail.userId}"/>
+                    <input type="hidden" name="userName" value="${userPointDetail.userName}"/>
+                    <input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+                    <input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+                    <div class="commonQuery lw7">
+                        <div class="layui-item query athird" style="width: 25%">
+                            <label class="layui-form-label">积分来源:</label>
+                            <div class="layui-input-block with-icon">
+                                <input type="text" name="shareName" value="${userPointDetail.shareName}"
+                                       placeholder="文档名模糊查询" class="form-control layui-input"/>
+                            </div>
+                        </div>
+                        <div class="layui-item query athird" style="width: 25%">
+                            <label class="layui-form-label">获取方式:</label>
+                            <div class="layui-input-block">
+                                <select name="changeType" class="form-control layui-input">
+                                    <option value="">全部</option>
+                                    <option value="1" ${userPointDetail.changeType == 1 ? 'selected' : ''}>创建</option>
+                                    <option value="2" ${userPointDetail.changeType == 2 ? 'selected' : ''}>审核</option>
+                                </select>
+                            </div>
+                        </div>
+
+                        <div class="layui-item query athird " style="width: 25%">
+                            <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="${userPointDetail.beginDate}" pattern="yyyy-MM-dd"/>"/>
+                                </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="${userPointDetail.endDate}" pattern="yyyy-MM-dd"/>"/>
+                                </input>
+                            </div>
+                        </div>
+
+
+                        <div class="layui-item athird" style="width: 25%">
+                            <div class="input-group">
+                                <div class="layui-btn-group search-spacing">
+                                    <button id="searchQuery" class="layui-btn layui-btn-sm layui-bg-blue" onclick="return search()">查询</button>
+                                    <button id="searchReset" type="button" class="layui-btn layui-btn-sm" onclick="resetSearch()">重置</button>
+                                </div>
+                            </div>
+                        </div>
+                        <div style="clear:both;"></div>
+                    </div>
+                </form>
+            </div>
+        </div>
+
+        <!-- 表格 + 分页 -->
+        <div class="full-width fl">
+            <div class="contentShadow layui-form contentDetails">
+                <table class="oa-table layui-table" id="contentTable"></table>
+                <table:page page="${page}"></table:page>
+                <div style="clear:both;"></div>
+            </div>
+        </div>
+    </div>
+</div>
+</body>
 <head>
     <title>积分明细</title>
     <meta name="decorator" content="default"/>
@@ -60,7 +130,7 @@
                                         ,"shareDelFlag": "${row.shareDelFlag}"
                                         ,"changeType": "${row.changeType}"
                                         ,"point": "${row.point}"
-                                        ,"createDate": "${row.createDate}"
+                                        ,"createDate": "<fmt:formatDate value="${row.createDate}" pattern="yyyy-MM-dd"/>"
                                     }
                                 </c:forEach>
                             </c:when>
@@ -98,71 +168,5 @@
         $(window).resize(function() { resizeListWindow1(); });
     </script>
 </head>
-<body>
-<div class="wrapper wrapper-content">
-    <sys:message content="${message}"/>
-    <div class="layui-row">
-        <!-- 查询条件 -->
-        <div class="full-width fl">
-            <div class="contentShadow layui-row" id="queryDiv">
-                <form id="searchForm" action="${ctx}/workKnowledgeBase/point/userDetail" method="post" class="form-inline">
-                    <input type="hidden" name="userId" value="${userId}"/>
-                    <input type="hidden" name="userName" value="${userName}"/>
-                    <input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
-                    <input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
-                    <div class="commonQuery lw7">
-                        <div class="layui-item query athird" style="width: 25%">
-                            <label class="layui-form-label">积分来源:</label>
-                            <div class="layui-input-block with-icon">
-                                <input type="text" name="shareName" value="${shareName}"
-                                       placeholder="文档名模糊查询" class="form-control layui-input"/>
-                            </div>
-                        </div>
-                        <div class="layui-item query athird" style="width: 25%">
-                            <label class="layui-form-label">获取方式:</label>
-                            <div class="layui-input-block">
-                                <select name="changeType" class="form-control layui-input">
-                                    <option value="">全部</option>
-                                    <option value="1" ${changeType == 1 ? 'selected' : ''}>创建</option>
-                                    <option value="2" ${changeType == 2 ? 'selected' : ''}>审核</option>
-                                </select>
-                            </div>
-                        </div>
-                        <div class="layui-item query athird" style="width: 25%">
-                            <label class="layui-form-label">时间区间:</label>
-                            <div class="layui-input-block readOnlyFFF with-icon">
-                                <input id="beginDate" placeholder="开始时间" name="beginDate" type="text" readonly="readonly"
-                                       maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
-                                       value="${beginDate}"/>
-                                <span class="group-sep">-</span>
-                                <input id="endDate" placeholder="结束时间" name="endDate" type="text" readonly="readonly"
-                                       maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
-                                       value="${endDate}"/>
-                            </div>
-                        </div>
-                        <div class="layui-item athird" style="width: 25%">
-                            <div class="input-group">
-                                <div class="layui-btn-group search-spacing">
-                                    <button id="searchQuery" class="layui-btn layui-btn-sm layui-bg-blue" onclick="return search()">查询</button>
-                                    <button id="searchReset" type="button" class="layui-btn layui-btn-sm" onclick="resetSearch()">重置</button>
-                                </div>
-                            </div>
-                        </div>
-                        <div style="clear:both;"></div>
-                    </div>
-                </form>
-            </div>
-        </div>
 
-        <!-- 表格 + 分页 -->
-        <div class="full-width fl">
-            <div class="contentShadow layui-form contentDetails">
-                <table class="oa-table layui-table" id="contentTable"></table>
-                <table:page page="${page}"></table:page>
-                <div style="clear:both;"></div>
-            </div>
-        </div>
-    </div>
-</div>
-</body>
 </html>

+ 7 - 5
src/main/webapp/webpage/modules/WorkKnowledgeBase/workKnowledgeBaseShareDetail.jsp

@@ -63,10 +63,7 @@
                     <input type="text" class="form-control layui-input" value="${entity.name}" readonly="readonly"/>
                 </div>
             </div>
-        </div>
 
-        <!-- 审核状态 -->
-        <div class="form-group layui-row">
             <div class="layui-item layui-col-sm6 lw6">
                 <label class="layui-form-label detail-label">审核状态:</label>
                 <div class="layui-input-block">
@@ -95,7 +92,12 @@
                            style="color:${auditStatusColor};font-weight:bold;"/>
                 </div>
             </div>
-            <c:if test="${auditStatusVal == 2 || auditStatusVal == 4 || auditStatusVal == 5}">
+        </div>
+
+        <!-- 审核状态 -->
+        <div class="form-group layui-row">
+
+            <%--<c:if test="${auditStatusVal == 2 || auditStatusVal == 4 || auditStatusVal == 5}">
             <div class="layui-item layui-col-sm3 lw6">
                 <label class="layui-form-label detail-label">通过人数:</label>
                 <div class="layui-input-block">
@@ -108,7 +110,7 @@
                     <input type="text" class="form-control layui-input" value="${entity.auditRejectCount != null ? entity.auditRejectCount : 0}" readonly="readonly"/>
                 </div>
             </div>
-            </c:if>
+            </c:if>--%>
         </div>
 
         <!-- 动态扩展字段(只读展示) -->

+ 30 - 1
src/main/webapp/webpage/modules/projectMaterialStorage/projectMaterialStorageAddForm.jsp

@@ -137,12 +137,20 @@
 
 				// 从row中获取对应字段的值并设置
 				if (row && row[field] !== undefined) {
+					console.log(row[field])
 					$select.val(row[field]);
+					console.log($select);
 				}
 
 				// 关键:如果使用Layui表单,需要重新渲染下拉框
 				if (window.layui && layui.form) {
-					layui.form.render('select', $select.closest('form')[0].id);
+					// 方式2:指定渲染当前 select 所在的表单(更稳妥)
+					var formId = $select.parents('form').attr('id');
+					if(formId) {
+						layui.form.render('select', formId);
+					} else {
+						layui.form.render('select');
+					}
 				}
 			});
 
@@ -324,6 +332,10 @@
 							<th width="200px">备注</th>
 								<%--						<th width="200px">单位</th>--%>
 							<th width="100px">报价时间</th>
+							<th width="100px">核定价</th>
+							<th width="100px">核定依据</th>
+							<th width="100px">购买地</th>
+							<th width="100px">报价模式</th>
 							<th width="100px">操作</th>
 						</tr>
 						</thead>
@@ -379,9 +391,26 @@
 						<td>
 							<input lay-verify="date" readonly="true" placeholder="yyyy-MM-dd" autocomplete="off" id="projectMaterialStorageList{{idx}}_quotedPriceDate" name="projectMaterialStorageList[{{idx}}].quotedPriceDate" type="text" value="{{row.quotedPriceDate}}" style="text-align: center" class="form-control datetime"/>
 						</td>
+                        <td>
+							<input id="projectMaterialStorageList{{idx}}_nuclearPricing" name = "projectMaterialStorageList[{{idx}}].nuclearPricing"  type="text" value="{{row.nuclearPricing}}"  class="form-control"/>
+                        </td>
+                        <td>
+							<input id="projectMaterialStorageList{{idx}}_basisForApproval" name = "projectMaterialStorageList[{{idx}}].basisForApproval"  type="text" value="{{row.basisForApproval}}"  class="form-control"/>
+                        </td>
+                        <td>
+							<input id="projectMaterialStorageList{{idx}}_purchasePlace" name = "projectMaterialStorageList[{{idx}}].purchasePlace"  type="text" value="{{row.purchasePlace}}"  class="form-control"/>
+                        </td>
+                        <td>
+							<select name="projectMaterialStorageList[{{idx}}].quotationMode" id="projectMaterialStorageList{{idx}}_quotationMode" class="form-control">
+								<c:forEach items="${fns:getMainDictList('quotationMode')}" var="var">
+									<option value="${var.value}" <c:if test="${row.quotationMode eq var.value}">selected</c:if>>${var.label}</option>
+								</c:forEach>
+							</select>
+                        </td>
                         <td class="text-center op-td" >
                             {{#delBtn}}<span class="op-btn op-btn-delete" onclick="delRow(this, '#projectMaterialStorageList{{idx}}')" title="删除"><i class="glyphicon glyphicon-remove"></i>&nbsp;删除</span>{{/delBtn}}
                         </td>
+
                     </tr>//-->
 					</script>
 					<script type="text/javascript">

+ 46 - 14
src/main/webapp/webpage/modules/projectMaterialStorage/projectMaterialStorageList.jsp

@@ -548,15 +548,15 @@
 						</div>
 
 						<div class="layui-item query athird" style="width: 25%">
-							<label class="layui-form-label double-line" style="line-height:100%">工程价(元,不含税):</label>
+							<label class="layui-form-label">材料单价:</label>
 							<div class="layui-input-block">
-								<input id="beginProjectPriceExcludingTax" value="${projectMaterialStorage.beginProjectPriceExcludingTax}" name="beginProjectPriceExcludingTax" placeholder="请输入工程价(元,不含税)" htmlEscape="false" maxlength="64"  class="query-group form-control  layui-input">
+								<input id="beginProjectPriceExcludingTax" value="${projectMaterialStorage.beginProjectPriceExcludingTax}" name="beginProjectPriceExcludingTax" placeholder="请输入材料单价" htmlEscape="false" maxlength="64"  class="query-group form-control  layui-input">
 								<span class="group-sep">-</span>
-								<input id="endProjectPriceExcludingTax" value="${projectMaterialStorage.endProjectPriceExcludingTax}" name="endProjectPriceExcludingTax" placeholder="请输入工程价(元,不含税)" htmlEscape="false" maxlength="64"  class="query-group form-control  layui-input">
+								<input id="endProjectPriceExcludingTax" value="${projectMaterialStorage.endProjectPriceExcludingTax}" name="endProjectPriceExcludingTax" placeholder="请输入材料单价" htmlEscape="false" maxlength="64"  class="query-group form-control  layui-input">
 							</div>
 						</div>
 
-						<div class="layui-item query athird" style="width: 25%">
+						<%--<div class="layui-item query athird" style="width: 25%">
 							<label class="layui-form-label double-line" style="line-height:100%">市场价(元,不含税):</label>
 							<div class="layui-input-block">
 								<input id="beginMarketPriceExcludingTax" value="${projectMaterialStorage.beginMarketPriceExcludingTax}" name="beginMarketPriceExcludingTax" placeholder="请输入市场价(元,不含税)" htmlEscape="false" maxlength="64"  class="query-group form-control  layui-input">
@@ -590,7 +590,7 @@
 								<span class="group-sep">-</span>
 								<input id="endTaxRate" name="endTaxRate" value="${projectMaterialStorage.endTaxRate}" placeholder="请输入利率" htmlEscape="false" maxlength="64"  class=" form-control layui-input query-group">
 							</div>
-						</div>
+						</div>--%>
 
 						<div class="layui-item query athird" style="width: 25%">
 							<label class="layui-form-label">价格来源:</label>
@@ -609,12 +609,12 @@
 							</div>
 						</div>
 
-						<div class="layui-item query athird" style="width: 25%">
+						<%--<div class="layui-item query athird" style="width: 25%">
 							<label class="layui-form-label">产品说明:</label>
 							<div class="layui-input-block">
 								<form:input path="explain" htmlEscape="false" maxlength="64" placeholder="请输入产品名称" class=" form-control  layui-input" />
 							</div>
-						</div>
+						</div>--%>
 
 						<div class="layui-item query athird" style="width: 25%">
 							<label class="layui-form-label">供应商:</label>
@@ -623,12 +623,12 @@
 							</div>
 						</div>
 
-						<div class="layui-item query athird" style="width: 25%">
+						<%--<div class="layui-item query athird" style="width: 25%">
 							<label class="layui-form-label" style="line-height:100%">单体工程描述:</label>
 							<div class="layui-input-block">
 								<form:input path="monomerProjectDescription" htmlEscape="false" placeholder="请输入单体工程描述" maxlength="800"  class=" form-control  layui-input" />
 							</div>
-						</div>
+						</div>--%>
 
 						<div class="layui-item query athird " style="width: 25%">
 							<label class="layui-form-label">报价时间:</label>
@@ -643,7 +643,7 @@
 							</div>
 						</div>
 
-						<div class="layui-item query athird " style="width: 25%">
+						<%--<div class="layui-item query athird " style="width: 25%">
 							<label class="layui-form-label">创建时间:</label>
 							<div class="layui-input-block readOnlyFFF">
 								<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"
@@ -654,8 +654,28 @@
                                        value="<fmt:formatDate value="${projectMaterialStorage.endDate}" pattern="yyyy-MM-dd"/>"/>
                                 </input>
 							</div>
+						</div>--%>
+
+
+
+						<div class="layui-item query athird" style="width: 25%">
+							<label class="layui-form-label">报价模式:</label>
+							<div class="layui-input-block">
+								<form:select placeholder="请选择报价模式" path="quotationMode" class="form-control simple-select">
+									<form:option value=""/>
+									<form:options items="${fns:getMainDictList('quotationMode')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+								</form:select>
+							</div>
+						</div>
+
+						<div class="layui-item query athird" style="width: 25%">
+							<label class="layui-form-label">购买地:</label>
+							<div class="layui-input-block">
+								<form:input path="purchasePlace" htmlEscape="false" maxlength="255"  placeholder="请输入购买地" class=" form-control  layui-input" />
+							</div>
 						</div>
 
+
 						<div style="clear:both;"></div>
 					</div>
 				</form:form>
@@ -670,6 +690,10 @@
 						<%--<shiro:hasPermission name="project:pojectMaterialsWarehouse:list">--%>
 							<button type="button" data-toggle="tooltip" data-placement="top" class="layui-btn layui-btn-sm layui-bg-red" id="delProjectMaterialStorage"> 批量删除</button>
 						<%--</shiro:hasPermission>--%>
+
+						<shiro:hasPermission name="project:projectMaterialStorage:list">
+							<table:exportExcel url="${ctx}/project/projectMaterialStorage/exportInfo"></table:exportExcel><!-- 导出按钮 -->
+						</shiro:hasPermission>
 						<button class="layui-btn layui-btn-sm" data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"> 刷新</button>
 						</div>
 					<%--<shiro:hasPermission name="project:projectMaterialStorage:list">
@@ -716,14 +740,18 @@
 					}}
 				,{field:'specifications',align:'center', title: '规格型号',  width:150}
 				,{field:'unit',align:'center', title: '单位',  width:80}
-				,{field:'projectPriceExcludingTax',align:'center', title: '工程价(元,不含税)',  width:150}
-				,{field:'marketPriceExcludingTax',align:'center', title: '市场价(元,不含税)',  width:150}
+				,{field:'projectPriceExcludingTax',align:'center', title: '材料单价',  width:150}
+				/*,{field:'marketPriceExcludingTax',align:'center', title: '市场价(元,不含税)',  width:150}
 				,{field:'taxRate',align:'center', title: '税率(%)',  width:100}
+				,{field:'priceSource',align:'center', title: '价格来源',  width:100}*/
+
+				,{field:'nuclearPricing',align:'center', title: '核定价',  width:100}
+				,{field:'basisForApproval',align:'center', title: '购买地',  width:100}
 				,{field:'priceSource',align:'center', title: '价格来源',  width:100}
 				,{field:'quotedPriceDate',align:'center', title: '报价时间',  width:100}
-				,{field:'monomerProjectDescription',align:'center', title: '单体项目描述',  width:140}
+				/*,{field:'monomerProjectDescription',align:'center', title: '单体项目描述',  width:140}
 				,{field:'projectPriceIncludingTax',align:'center', title: '含税工程价(元)',  width:130}
-				,{field:'marketPriceIncludingTax',align:'center', title: '含税市场价(元)',  width:130}
+				,{field:'marketPriceIncludingTax',align:'center', title: '含税市场价(元)',  width:130}*/
 				/*,{field:'brand',align:'center', title: '品牌',  width:100}
 				,{field:'supplier',align:'center', title: '供应商',  width:150}
 				,{field:'explain',align:'center', title: '产品说明',  width:150}
@@ -770,6 +798,10 @@
 					,"monomerProjectDescription":"${projectMaterialStorage.monomerProjectDescription}"
 					,"projectPriceExcludingTax":"${projectMaterialStorage.projectPriceExcludingTax}"
 					,"marketPriceExcludingTax":"${projectMaterialStorage.marketPriceExcludingTax}"
+
+					,"nuclearPricing":"${projectMaterialStorage.nuclearPricing}"
+					,"basisForApproval":"${projectMaterialStorage.basisForApproval}"
+					,"purchasePlace":"${projectMaterialStorage.purchasePlace}"
 					,"createBy":"${projectMaterialStorage.createBy.name}"
 					,"flag":
 							<c:choose>

+ 36 - 6
src/main/webapp/webpage/modules/projectMaterialStorage/projectMaterialStorageTwoForm.jsp

@@ -156,12 +156,12 @@
 					</div>
 				</div>
 				<div class="layui-item layui-col-sm6">
-					<label class="layui-form-label double-line">工程价(元,不含税)</label>
+					<label class="layui-form-label">材料单价</label>
 					<div class="layui-input-block">
 						<form:input id="projectPriceExcludingTax" path="projectPriceExcludingTax" htmlEscape="false"  placeholder="请输入工程价(元,不含税)"  class="form-control layui-input" onkeyup="num(this)" maxlength="10"/>
 					</div>
 				</div>
-				<div class="layui-item layui-col-sm6">
+				<%--<div class="layui-item layui-col-sm6">
 					<label class="layui-form-label double-line">市场价(元,不含税)</label>
 					<div class="layui-input-block">
 						<form:input id="marketPriceExcludingTax" path="marketPriceExcludingTax" htmlEscape="false"  placeholder="请输入市场价(元,不含税)"  class="form-control layui-input" onkeyup="num(this)" maxlength="10"/>
@@ -184,7 +184,7 @@
 					<div class="layui-input-block">
 						<form:input id="taxRate" path="taxRate" htmlEscape="taxRate"  placeholder="请输入税率(%)"  class="form-control layui-input" onkeyup="num(this)"  maxlength="10"/>
 					</div>
-				</div>
+				</div>--%>
 				<div class="layui-item layui-col-sm6">
 					<label class="layui-form-label">价格来源</label>
 					<div class="layui-input-block readOnlyFFF">
@@ -200,12 +200,12 @@
 						<form:input id="brand" path="brand" htmlEscape="false"  placeholder="请输入品牌"  class="form-control layui-input" maxlength="240"/>
 					</div>
 				</div>
-				<div class="layui-item layui-col-sm6">
+				<%--<div class="layui-item layui-col-sm6">
 					<label class="layui-form-label">产品说明</label>
 					<div class="layui-input-block">
 						<form:input id="explain" path="explain" htmlEscape="false"  placeholder="请输入产品说明"  class="form-control layui-input" maxlength="800"/>
 					</div>
-				</div>
+				</div>--%>
 				<div class="layui-item layui-col-sm6">
 					<label class="layui-form-label">供应商</label>
 					<div class="layui-input-block">
@@ -218,13 +218,43 @@
 						<input class="form-control layui-input"  style="background-color: #FFFFFF" readonly id="quotedPriceDate" name="quotedPriceDate" value="${projectMaterialStorage.quotedPriceDate}">
 					</div>
 				</div>
-				<div class="layui-item layui-col-sm12 with-textarea">
+				<%--<div class="layui-item layui-col-sm12 with-textarea">
 					<label class="layui-form-label double-line">单体项目描述:</label>
 					<div class="layui-input-block">
 						<form:textarea path="monomerProjectDescription" htmlEscape="false" rows="4" placeholder="请输入单体项目描述"  class="form-control" maxlength="800"/>
 
 					</div>
+				</div>--%>
+
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">核定价</label>
+					<div class="layui-input-block">
+						<form:input id="nuclearPricing" path="nuclearPricing" htmlEscape="false"  placeholder="核定价"  class="form-control layui-input" maxlength="10"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">核定依据</label>
+					<div class="layui-input-block">
+						<input class="form-control layui-input" id="basisForApproval" name="basisForApproval" value="${projectMaterialStorage.basisForApproval}">
+					</div>
 				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">购买地</label>
+					<div class="layui-input-block">
+						<input class="form-control layui-input" id="purchasePlace" name="purchasePlace" value="${projectMaterialStorage.purchasePlace}">
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">报价模式</label>
+					<div class="layui-input-block readOnlyFFF">
+						<form:select path="quotationMode" class="form-control simple-select">
+							<form:option value=" " label=""/>
+							<form:options items="${fns:getMainDictList('quotationMode')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+						</form:select>
+					</div>
+				</div>
+
+
 
 				<div class="layui-item layui-col-sm12  with-textarea">
 					<label class="layui-form-label">备注:</label>

+ 31 - 6
src/main/webapp/webpage/modules/projectMaterialStorage/projectMaterialStorageView.jsp

@@ -150,12 +150,12 @@
 					</div>
 				</div>
 				<div class="layui-item layui-col-sm6">
-					<label class="layui-form-label double-line">工程价(元,不含税)</label>
+					<label class="layui-form-label">材料单价</label>
 					<div class="layui-input-block">
 						<form:input id="projectPriceExcludingTax" path="projectPriceExcludingTax" htmlEscape="false" readonly="true" placeholder="请输入工程价(元,不含税)"  class="form-control layui-input" onkeyup="num(this)" maxlength="10"/>
 					</div>
 				</div>
-				<div class="layui-item layui-col-sm6">
+				<%--<div class="layui-item layui-col-sm6">
 					<label class="layui-form-label double-line">市场价(元,不含税)</label>
 					<div class="layui-input-block">
 						<form:input id="marketPriceExcludingTax" path="marketPriceExcludingTax" htmlEscape="false" readonly="true" placeholder="请输入市场价(元,不含税)"  class="form-control layui-input" onkeyup="num(this)" maxlength="10"/>
@@ -178,7 +178,7 @@
 					<div class="layui-input-block">
 						<form:input id="taxRate" path="taxRate" htmlEscape="taxRate"  placeholder="请输入税率(%)" readonly="true" class="form-control layui-input" onkeyup="num(this)"  maxlength="10"/>
 					</div>
-				</div>
+				</div>--%>
 				<div class="layui-item layui-col-sm6">
 					<label class="layui-form-label">价格来源</label>
 					<div class="layui-input-block">
@@ -191,12 +191,12 @@
 						<form:input id="brand" path="brand" htmlEscape="false"  placeholder="请输入品牌" readonly="true" class="form-control layui-input" maxlength="240"/>
 					</div>
 				</div>
-				<div class="layui-item layui-col-sm6">
+				<%--<div class="layui-item layui-col-sm6">
 					<label class="layui-form-label">产品说明</label>
 					<div class="layui-input-block">
 						<form:input id="explain" path="explain" htmlEscape="false"  placeholder="请输入产品说明" readonly="true" class="form-control layui-input" maxlength="800"/>
 					</div>
-				</div>
+				</div>--%>
 				<div class="layui-item layui-col-sm6">
 					<label class="layui-form-label">供应商</label>
 					<div class="layui-input-block">
@@ -209,12 +209,37 @@
 						<input class="form-control layui-input"   readonly id="quotedPriceDate" name="quotedPriceDate" value="${projectMaterialStorage.quotedPriceDate}">
 					</div>
 				</div>
-				<div class="layui-item layui-col-sm12 with-textarea">
+				<%--<div class="layui-item layui-col-sm12 with-textarea">
 					<label class="layui-form-label double-line">单体项目描述:</label>
 					<div class="layui-input-block">
 						<form:textarea path="monomerProjectDescription" style="background-color: #f1f1f1" htmlEscape="false" rows="4" readonly="true" placeholder="请输入单体项目描述"  class="form-control" maxlength="800"/>
 
 					</div>
+				</div>--%>
+
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">核定价</label>
+					<div class="layui-input-block">
+						<form:input id="nuclearPricing" path="nuclearPricing" readonly="true" htmlEscape="false"  placeholder="核定价"  class="form-control layui-input" maxlength="10"/>
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">核定依据</label>
+					<div class="layui-input-block">
+						<input class="form-control layui-input" readonly id="basisForApproval" name="basisForApproval" value="${projectMaterialStorage.basisForApproval}">
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">购买地</label>
+					<div class="layui-input-block">
+						<input class="form-control layui-input" readonly id="purchasePlace" name="purchasePlace" value="${projectMaterialStorage.purchasePlace}">
+					</div>
+				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">报价模式</label>
+					<div class="layui-input-block">
+						<input class="form-control layui-input" readonly id="quotationMode" name="quotationMode" value="${projectMaterialStorage.quotationMode}">
+					</div>
 				</div>
 
 				<div class="layui-item layui-col-sm12  with-textarea">

+ 1 - 1
src/main/webapp/webpage/modules/sys/sysLogin.jsp

@@ -18,7 +18,7 @@
 	<link href="${ctxStatic}/awesome/4.4/css/font-awesome.min.css" rel="stylesheet" />
 	<!-- jeeplus -->
 	<link href="${ctxStatic}/common/jeeplus.css" type="text/css" rel="stylesheet" />
-	<script src="${ctxStatic}/common/jeeplus.js?27" type="text/javascript"></script>
+	<script src="${ctxStatic}/common/jeeplus.js?28" type="text/javascript"></script>
 	<link rel="shortcut icon" href="images/favicon.png" type="image/png">
 	<!-- text fonts -->
 	<link rel="stylesheet" href="${ctxStatic }/common/login/ace-fonts.css" />

+ 1 - 1
src/main/webapp/webpage/modules/sys/sysLogin2.jsp

@@ -16,7 +16,7 @@
 		<link href="${ctxStatic}/awesome/4.4/css/font-awesome.min.css" rel="stylesheet" />
 		<!-- jeeplus -->
 		<link href="${ctxStatic}/common/jeeplus.css" type="text/css" rel="stylesheet" />
-		<script src="${ctxStatic}/common/jeeplus.js?27" type="text/javascript"></script>
+		<script src="${ctxStatic}/common/jeeplus.js?28" type="text/javascript"></script>
 		<link rel="shortcut icon" href="images/favicon.png" type="image/png">
 		<!-- text fonts -->
 		<link rel="stylesheet" href="${ctxStatic }/common/login/ace-fonts.css" />