Bläddra i källkod

开票功能开发

user5 4 år sedan
förälder
incheckning
917e59fc0d

+ 7 - 0
src/main/java/com/jeeplus/modules/workinvoice/dao/WorkInvoiceDao.java

@@ -64,4 +64,11 @@ public interface WorkInvoiceDao extends CrudDao<WorkInvoice> {
 	 */
 	int insertProjectRelation(WorkInvoiceProjectRelation projectRelation);
 
+	/**
+	 * 查询已通过的所有发票的开票金额总和
+	 * @param workInvoice
+	 * @return
+	 */
+	String getSumMoney(WorkInvoice workInvoice);
+
 }

+ 28 - 0
src/main/java/com/jeeplus/modules/workinvoice/entity/WorkInvoice.java

@@ -8,6 +8,7 @@ import com.google.common.collect.Lists;
 import com.jeeplus.common.persistence.ActEntity;
 import com.jeeplus.common.utils.excel.annotation.ExcelField;
 import com.jeeplus.modules.projectrecord.entity.ProjectRecords;
+import com.jeeplus.modules.sys.entity.Area;
 import com.jeeplus.modules.sys.entity.Office;
 import com.jeeplus.modules.sys.entity.User;
 import com.jeeplus.modules.workclientinfo.entity.WorkClientInfo;
@@ -81,6 +82,9 @@ public class WorkInvoice extends ActEntity<WorkInvoice> {
 	private List<WorkInvoiceProjectRelation> workInvoiceProjectRelationList;//开票和项目关系表
 	private Integer notifyFlag; //代办判定条件
 	private String notifyId; //代办判定条件
+	private String widNumber; //发票号
+	private String widTotalMoney; //发票金额
+	private Area area = new Area();		// 对账地区
 
 
 	private String accountCheckingUserId; //对账人id
@@ -567,4 +571,28 @@ public class WorkInvoice extends ActEntity<WorkInvoice> {
 	public void setAccountCheckingUserName(String accountCheckingUserName) {
 		this.accountCheckingUserName = accountCheckingUserName;
 	}
+
+	public String getWidNumber() {
+		return widNumber;
+	}
+
+	public void setWidNumber(String widNumber) {
+		this.widNumber = widNumber;
+	}
+
+	public String getWidTotalMoney() {
+		return widTotalMoney;
+	}
+
+	public void setWidTotalMoney(String widTotalMoney) {
+		this.widTotalMoney = widTotalMoney;
+	}
+
+	public Area getArea() {
+		return area;
+	}
+
+	public void setArea(Area area) {
+		this.area = area;
+	}
 }

+ 26 - 0
src/main/java/com/jeeplus/modules/workinvoice/service/WorkInvoiceService.java

@@ -22,6 +22,7 @@ import com.jeeplus.modules.serialnum.service.SerialNumTplService;
 import com.jeeplus.modules.sys.entity.Office;
 import com.jeeplus.modules.sys.entity.Role;
 import com.jeeplus.modules.sys.entity.User;
+import com.jeeplus.modules.sys.service.AreaService;
 import com.jeeplus.modules.sys.service.OfficeService;
 import com.jeeplus.modules.sys.utils.RoleActivityEnname;
 import com.jeeplus.modules.sys.utils.UserUtils;
@@ -111,6 +112,8 @@ public class WorkInvoiceService extends CrudService<WorkInvoiceDao, WorkInvoice>
 	protected WorkProjectNotifyService workProjectNotifyService;
 	@Autowired
 	private RuralProjectRecordsService ruralProjectRecordsService;
+	@Autowired
+	private AreaService areaService;
 
 	private static byte[] SYN_BYTE = new byte[0];
 
@@ -158,6 +161,15 @@ public class WorkInvoiceService extends CrudService<WorkInvoiceDao, WorkInvoice>
 					}
 				}
 			}
+			//如果发票对账地区为空,则将第一个项目信息的所在地添加到对账地区
+			if(StringUtils.isBlank(workInvoice.getArea().getId())){
+				//判定项目是否存在
+				if(0 < projectRelationList.size()){
+					workInvoice.setArea(areaService.get(ruralProjectRecordsService.get(projectRelationList.get(0).getProjectId()).getArea()));
+				}
+			}else{
+				workInvoice.setArea(areaService.get(workInvoice.getArea().getId()));
+			}
 			workInvoice.setWorkInvoiceProjectRelationList(projectRelationList);
 		}
 		return workInvoice;
@@ -189,6 +201,20 @@ public class WorkInvoiceService extends CrudService<WorkInvoiceDao, WorkInvoice>
 	}
 
 	/**
+	 * 查询已通过的所有发票的开票金额总和
+	 * @param workInvoice
+	 * @return
+	 */
+	public String getSumMoney(WorkInvoice workInvoice){
+		workInvoice.getSqlMap().put("dsf", dataScopeFilter(workInvoice.getCurrentUser(), "o", "u","s", MenuStatusEnum.WORK_INVOICE.getValue()));
+		String getSumMoney = dao.getSumMoney(workInvoice);
+		if(StringUtils.isBlank(getSumMoney)){
+			getSumMoney = "0";
+		}
+		return getSumMoney;
+	}
+
+	/**
 	 * 暂存
 	 * @param workInvoice
 	 */

+ 9 - 1
src/main/java/com/jeeplus/modules/workinvoice/web/WorkInvoiceController.java

@@ -136,6 +136,10 @@ public class WorkInvoiceController extends BaseController {
 	@RequiresPermissions("workinvoice:workInvoice:list")
 	@RequestMapping(value = {"list", ""})
 	public String list(WorkInvoice workInvoice, HttpServletRequest request, HttpServletResponse response, Model model) {
+		//判断对账人是否为空,为空则赋值为null 防止查找为空的数据
+		if(StringUtils.isBlank(workInvoice.getAccountCheckingUserId())){
+			workInvoice.setAccountCheckingUserId(null);
+		}
 		Page<WorkInvoice> page = workInvoiceService.findPage(new Page<WorkInvoice>(request, response), workInvoice);
 
 		//查询所有和当前登陆人有关的项目的审核
@@ -147,7 +151,8 @@ public class WorkInvoiceController extends BaseController {
 		workProjectNotify.setType("21");
 		//查询所有需要当前登录人进行处理的项目信息
 		List<WorkProjectNotify> notifyList = workProjectNotifyService.findList(workProjectNotify);
-
+		//查询已通过的所有发票的开票金额总和
+		String getSumMoney = workInvoiceService.getSumMoney(workInvoice);
 		List<WorkInvoice> workInvoiceList = page.getList();
 		for (WorkInvoice invoice: workInvoiceList) {
 			for (WorkProjectNotify notify: notifyList) {
@@ -165,6 +170,7 @@ public class WorkInvoiceController extends BaseController {
 			invoice.setProjectName(projectNameStr);
 		}
 		model.addAttribute("page", page);
+		model.addAttribute("sumMoney", getSumMoney);
 		model.addAttribute("workInvoiceShow", workInvoice);
 		return "modules/workinvoice/workInvoiceList";
 	}
@@ -907,6 +913,8 @@ public class WorkInvoiceController extends BaseController {
 		HashMap<Object, Object> map = Maps.newHashMap();
 		String obj = request.getParameter("obj");
 		ProjectRecords projectRecords = projectRecordsService.getRuralInfo(obj);
+		map.put("areaId",projectRecords.getArea().getId());//项目地区id
+		map.put("areaName",projectRecords.getArea().getName());//项目地区名称
 		map.put("projectNum",projectRecords.getProjectId());//项目编号
 		map.put("reportDataNum",projectRecords.getReportData().getNumber());//报告号
 		if(projectRecords.getWorkContractInfo() == null || null == projectRecords.getWorkContractInfo().getClient() || StringUtils.isBlank(projectRecords.getWorkContractInfo().getClient().getName())){

+ 173 - 6
src/main/resources/mappings/modules/workinvoice/WorkInvoiceDao.xml

@@ -62,6 +62,7 @@
 		(case when a.receipt_money = '0' then '否' when a.receipt_money = '1' then '是' else '否' end) as receiptMoney,
 		a.cancellation_remark as "cancellationRemark",
 		a.account_checking_user_id as "accountCheckingUserId",
+		a.area_id as "area.id",
 		acu.name as "accountCheckingUserName"
 	</sql>
 
@@ -90,8 +91,12 @@
 	<select id="findList" resultType="WorkInvoice" >
 		SELECT
 			<include refid="workInvoiceColumns"/>
+			,wid.number as "widNumber"
+			,wid.total_money as "widTotalMoney"
 		FROM work_invoice a
 		<include refid="workInvoiceJoins"/>
+		left join work_invoice_detail wid on a.id = wid.invoice_id
+		LEFT JOIN sys_user sua ON sua.id = a.account_checking_user_id
 		<where>
 			a.del_flag = #{DEL_FLAG_NORMAL}
 			<if test="number != null and number != ''">
@@ -139,8 +144,11 @@
 			<if test="money != null and money != ''">
 				AND a.money = #{money}
 			</if>
-			<if test="submitterId != null and submitterId != ''">
+			<!--<if test="submitterId != null and submitterId != ''">
 				AND a.create_by = #{submitterId}
+			</if>-->
+			<if test="(submitterId != null and submitterId != '') or (submitterName != null and submitterName != '')">
+				AND (a.create_by = #{submitterId} or su.name like concat('%',#{submitterName},'%'))
 			</if>
 			<if test="receiptMoney != null and receiptMoney != ''">
 				AND a.receipt_money = #{receiptMoney}
@@ -181,6 +189,21 @@
 			<if test="isInvalid != null and isInvalid != ''">
 				AND a.is_invalid = #{isInvalid}
 			</if>
+			<if test="area != null and area.id != null and area.id != ''">
+				AND a.area_parent_id LIKE
+				<if test="dbName == 'oracle'">'%'||#{area.id}||'%'</if>
+				<if test="dbName == 'mssql'">'%'+#{area.id}+'%'</if>
+				<if test="dbName == 'mysql'">concat('%',#{area.id},'%')</if>
+			</if>
+			<if test="(accountCheckingUserId != null and accountCheckingUserId != '') or (accountCheckingUserName != null and accountCheckingUserName != '')">
+				AND (a.account_checking_user_id = #{accountCheckingUserId} or sua.name like concat('%',#{accountCheckingUserName},'%'))
+			</if>
+			<if test="widNumber != null and widNumber != ''">
+				AND wid.number LIKE
+				<if test="dbName == 'oracle'">'%'||#{widNumber}||'%'</if>
+				<if test="dbName == 'mssql'">'%'+#{widNumber}+'%'</if>
+				<if test="dbName == 'mysql'">concat('%',#{widNumber},'%')</if>
+			</if>
 			${sqlMap.dsf}
 		</where>
 		<choose>
@@ -192,11 +215,131 @@
 			</otherwise>
 		</choose>
 	</select>
+<select id="getSumMoney" resultType="java.lang.String" >
+	select format(sum(x.money),2) as sumMoney
+	FROM (
+		SELECT
+			distinct (a.id) AS "id",a.money
+		FROM work_invoice a
+		<include refid="workInvoiceJoins"/>
+		left join work_invoice_detail wid on a.id = wid.invoice_id
+		LEFT JOIN sys_user sua ON sua.id = a.account_checking_user_id
+		<where>
+			a.del_flag = #{DEL_FLAG_NORMAL}
+			and a.invoice_state = 5
+			<if test="number != null and number != ''">
+				AND a.number = #{number}
+			</if>
+			<if test="beginContractDate != null and endContractDate != null and beginContractDate != '' and endContractDate != ''">
+				AND a.create_date BETWEEN #{beginContractDate} AND #{endContractDate}
+			</if>
+			<if test="client != null and client.id != null and client.id != ''">
+				AND a.client_id = #{client.id}
+			</if>
+			<if test="project != null and project.id != null and project.id != ''">
+				AND a.project_id = #{project.id}
+			</if>
+			<if test="project != null and project.projectId != null and project.projectId != ''">
+				AND p.project_id LIKE
+				<if test="dbName == 'oracle'">'%'||#{project.projectId}||'%'</if>
+				<if test="dbName == 'mssql'">'%'+#{project.projectId}+'%'</if>
+				<if test="dbName == 'mysql'">concat('%',#{project.projectId},'%')</if>
+			</if>
+			<if test="project != null and project.projectName != null and project.projectName != ''">
+				AND p.project_name LIKE
+				<if test="dbName == 'oracle'">'%'||#{project.projectName}||'%'</if>
+				<if test="dbName == 'mssql'">'%'+#{project.projectName}+'%'</if>
+				<if test="dbName == 'mysql'">concat('%',#{project.projectName},'%')</if>
+			</if>
+			<if test="project != null and project.reportData != null and project.reportData.number != null and project.reportData.number != ''">
+				AND prd.number LIKE
+				<if test="dbName == 'oracle'">'%'||#{project.reportData.number}||'%'</if>
+				<if test="dbName == 'mssql'">'%'+#{project.reportData.number}+'%'</if>
+				<if test="dbName == 'mysql'">concat('%',#{project.reportData.number},'%')</if>
+			</if>
+			<if test="client != null and client.name != null and client.name != ''">
+				AND w.name LIKE
+				<if test="dbName == 'oracle'">'%'||#{client.name}||'%'</if>
+				<if test="dbName == 'mssql'">'%'+#{client.name}+'%'</if>
+				<if test="dbName == 'mysql'">concat('%',#{client.name},'%')</if>
+			</if>
+			<if test="officeId != null and officeId != ''">
+				AND so.id  = #{officeId}
+			</if>
+			<if test="money != null and money != ''">
+				AND a.money = #{money}
+			</if>
+			<!--<if test="submitterId != null and submitterId != ''">
+				AND a.create_by = #{submitterId}
+			</if>-->
+			<if test="(submitterId != null and submitterId != '') or (submitterName != null and submitterName != '')">
+				AND (a.create_by = #{submitterId} or su.name like concat('%',#{submitterName},'%'))
+			</if>
+			<if test="receiptMoney != null and receiptMoney != ''">
+				AND a.receipt_money = #{receiptMoney}
+			</if>
+			<if test="invoiceType != null and invoiceType != ''">
+				AND a.invoice_type = #{invoiceType}
+			</if>
+			<if test="chargeType != null and chargeType != ''">
+				AND a.charge_type = #{chargeType}
+			</if>
+			<if test="content != null and content != ''">
+				AND a.content = #{content}
+			</if>
+			<if test="drawer != null and drawer.id != null and drawer.id != ''">
+				AND a.drawer_id = #{drawer.id}
+			</if>
+			<if test="companyId != null and companyId != ''">
+				AND a.company_id = #{companyId}
+			</if>
+			<if test="office != null and office.id != null and office.id != ''">
+				AND a.office_id = #{office.id}
+			</if>
+			<if test="invoiceNumber != null and invoiceNumber != ''">
+				AND a.invoice_number LIKE
+					<if test="dbName == 'oracle'">'%'||#{invoiceNumber}||'%'</if>
+					<if test="dbName == 'mssql'">'%'+#{invoiceNumber}+'%'</if>
+					<if test="dbName == 'mysql'">concat('%',#{invoiceNumber},'%')</if>
+			</if>
+			<if test="invoiceDate != null and invoiceDate != ''">
+				AND a.invoice_date = #{invoiceDate}
+			</if>
+			<if test="isInvoice != null and isInvoice != ''">
+				AND a.is_invoice = #{isInvoice}
+			</if>
+			<if test="isCharge != null and isCharge != ''">
+				AND a.is_charge = #{isCharge}
+			</if>
+			<if test="isInvalid != null and isInvalid != ''">
+				AND a.is_invalid = #{isInvalid}
+			</if>
+			<if test="area != null and area.id != null and area.id != ''">
+				AND a.area_parent_id LIKE
+				<if test="dbName == 'oracle'">'%'||#{area.id}||'%'</if>
+				<if test="dbName == 'mssql'">'%'+#{area.id}+'%'</if>
+				<if test="dbName == 'mysql'">concat('%',#{area.id},'%')</if>
+			</if>
+			<if test="(accountCheckingUserId != null and accountCheckingUserId != '') or (accountCheckingUserName != null and accountCheckingUserName != '')">
+				AND (a.account_checking_user_id = #{accountCheckingUserId} or sua.name like concat('%',#{accountCheckingUserName},'%'))
+			</if>
+			<if test="widNumber != null and widNumber != ''">
+				AND wid.number LIKE
+				<if test="dbName == 'oracle'">'%'||#{widNumber}||'%'</if>
+				<if test="dbName == 'mssql'">'%'+#{widNumber}+'%'</if>
+				<if test="dbName == 'mysql'">concat('%',#{widNumber},'%')</if>
+			</if>
+			${sqlMap.dsf}
+		</where>
+	) x
+	</select>
 
 	<select id="queryCount" resultType="int" >
 		SELECT count(1)
 		FROM work_invoice a
 		<include refid="workInvoiceJoins"/>
+		left join work_invoice_detail wid on a.id = wid.invoice_id
+		LEFT JOIN sys_user sua ON sua.id = a.account_checking_user_id
 <!--		<if test="client != null and client.name != null and client.name != ''">-->
 <!--			LEFT JOIN work_client_info w ON  w.id = a.client_id-->
 <!--		</if>-->
@@ -247,8 +390,11 @@
 			<if test="officeId != null and officeId != ''">
 				AND so.id  = #{officeId}
 			</if>
-			<if test="submitterId != null and submitterId != ''">
+			<!--<if test="submitterId != null and submitterId != ''">
 				AND a.create_by = #{submitterId}
+			</if>-->
+			<if test="(submitterId != null and submitterId != '') or (submitterName != null and submitterName != '')">
+				AND (a.create_by = #{submitterId} or su.name like concat('%',#{submitterName},'%'))
 			</if>
 			<if test="receiptMoney != null and receiptMoney != ''">
 				AND a.receipt_money = #{receiptMoney}
@@ -292,6 +438,21 @@
 			<if test="isInvalid != null and isInvalid != ''">
 				AND a.is_invalid = #{isInvalid}
 			</if>
+			<if test="area != null and area.id != null and area.id != ''">
+				AND a.area_parent_id LIKE
+				<if test="dbName == 'oracle'">'%'||#{area.id}||'%'</if>
+				<if test="dbName == 'mssql'">'%'+#{area.id}+'%'</if>
+				<if test="dbName == 'mysql'">concat('%',#{area.id},'%')</if>
+			</if>
+			<if test="(accountCheckingUserId != null and accountCheckingUserId != '') or (accountCheckingUserName != null and accountCheckingUserName != '')">
+				AND (a.account_checking_user_id = #{accountCheckingUserId} or sua.name like concat('%',#{accountCheckingUserName},'%'))
+			</if>
+			<if test="widNumber != null and widNumber != ''">
+				AND wid.number LIKE
+				<if test="dbName == 'oracle'">'%'||#{widNumber}||'%'</if>
+				<if test="dbName == 'mssql'">'%'+#{widNumber}+'%'</if>
+				<if test="dbName == 'mysql'">concat('%',#{widNumber},'%')</if>
+			</if>
 			${sqlMap.dsf}
 		</where>
 		<choose>
@@ -372,7 +533,9 @@
 			ext,
 			billing_content,
 			cancellation_remark,
-			account_checking_user_id
+			account_checking_user_id,
+			area_id,
+			area_parent_id
 		) VALUES (
 			#{id},
 			#{number},
@@ -412,7 +575,9 @@
 			#{ext},
 			#{billingContent},
 			#{cancellationRemark},
-			#{accountCheckingUserId}
+			#{accountCheckingUserId},
+			#{area.id},
+			(select parent_ids from sys_area where id = #{area.id})
 		)
 	</insert>
 
@@ -447,12 +612,13 @@
 			company_id = #{companyId},
 			bank_number=#{bankNumber},
 			cancle_reason=#{cancleReason},
-			officee_id=#{officeId},
 			province = #{province},
 			ext = #{ext},
 			billing_content = #{billingContent},
 			cancellation_remark = #{cancellationRemark},
-			account_checking_user_id = #{accountCheckingUserId}
+			account_checking_user_id = #{accountCheckingUserId},
+			area_id = #{area.id},
+			area_parent_id = (select parent_ids from sys_area where id = #{area.id})
 		WHERE id = #{id}
 	</update>
 
@@ -639,5 +805,6 @@
 		left join work_client_info wct on wci.client_id = wct.id
 		left join project_report_data prd on prd.project_id = a.project_id
 		where invoice_id = #{invoiceId}
+		order by rpr.create_by asc
 	</select>
 </mapper>

+ 104 - 0
src/main/webapp/WEB-INF/tags/sys/inquireselectUserNotReadolnyTow.tag

@@ -0,0 +1,104 @@
+<%@ tag language="java" pageEncoding="UTF-8"%>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<%@ attribute name="id" type="java.lang.String" required="true" description="编号"%>
+<%@ attribute name="name" type="java.lang.String" required="true" description="隐藏域名称(ID)"%>
+<%@ attribute name="value" type="java.lang.String" required="true" description="隐藏域值(ID)"%>
+<%@ attribute name="labelName" type="java.lang.String" required="true" description="输入框名称(Name)"%>
+<%@ attribute name="labelValue" type="java.lang.String" required="true" description="输入框值(Name)"%>
+<%@ attribute name="title" type="java.lang.String" required="true" description="选择框标题"%>
+<%@ attribute name="url" type="java.lang.String" required="true" description="树结构数据地址"%>
+<%@ attribute name="checked" type="java.lang.Boolean" required="false" description="是否显示复选框,如果不需要返回父节点,请设置notAllowSelectParent为true"%>
+<%@ attribute name="extId" type="java.lang.String" required="false" description="排除掉的编号(不能选择的编号)"%>
+<%@ attribute name="isAll" type="java.lang.Boolean" required="false" description="是否列出全部数据,设置true则不进行数据权限过滤(目前仅对Office有效)"%>
+<%@ attribute name="notAllowSelectRoot" type="java.lang.Boolean" required="false" description="不允许选择根节点"%>
+<%@ attribute name="notAllowSelectParent" type="java.lang.Boolean" required="false" description="不允许选择父节点"%>
+<%@ attribute name="module" type="java.lang.String" required="false" description="过滤栏目模型(只显示指定模型,仅针对CMS的Category树)"%>
+<%@ attribute name="selectScopeModule" type="java.lang.Boolean" required="false" description="选择范围内的模型(控制不能选择公共模型,不能选择本栏目外的模型)(仅针对CMS的Category树)"%>
+<%@ attribute name="allowClear" type="java.lang.Boolean" required="false" description="是否允许清除"%>
+<%@ attribute name="allowInput" type="java.lang.Boolean" required="false" description="文本框可填写"%>
+<%@ attribute name="cssClass" type="java.lang.String" required="false" description="css样式"%>
+<%@ attribute name="cssStyle" type="java.lang.String" required="false" description="css样式"%>
+<%@ attribute name="smallBtn" type="java.lang.Boolean" required="false" description="缩小按钮显示"%>
+<%@ attribute name="hideBtn" type="java.lang.Boolean" required="false" description="是否显示按钮"%>
+<%@ attribute name="disabled" type="java.lang.String" required="false" description="是否限制选择,如果限制,设置为disabled"%>
+<%@ attribute name="dataMsgRequired" type="java.lang.String" required="false" description=""%>
+	<input id="${id}Id" name="${name}" class="${cssClass}" type="hidden" value="${value}"/>
+	<div class="input-group">
+		<input id="${id}Name" name="${labelName}" type="text" value="${labelValue}" data-msg-required="${dataMsgRequired}"
+		class="${cssClass}" style="${cssStyle}" onblur="blurSubmitterId(this)"/>
+		<span class="input-group-btn">
+	       		 <button type="button"  id="${id}Button" class="btn <c:if test="${fn:contains(cssClass, 'input-sm')}"> btn-sm </c:if><c:if test="${fn:contains(cssClass, 'input-lg')}"> btn-lg </c:if>  btn-primary ${disabled} ${hideBtn ? 'hide' : ''}"><i class="fa fa-search"></i>
+	             </button>
+       		 </span>
+    </div>
+	 <label id="${id}Name-error" class="error" for="${id}Name" style="display:none"></label>
+<script type="text/javascript">
+	$("#${id}Button").click(function(){
+		// 是否限制选择,如果限制,设置为disabled
+		if ($("#${id}Button").hasClass("disabled")){
+			return true;
+		}
+		// 正常打开
+		top.layer.open({
+		    type: 2,
+		    area: ['300px', '420px'],
+		    title:"选择${title}",
+		    ajaxData:{selectIds: $("#${id}Id").val()},
+		    content: "${ctx}/tag/treeselectReimbur?url="+encodeURIComponent("${url}")+"&module=${module}&checked=${checked}&extId=${extId}&isAll=${isAll}" ,
+		    btn: ['确定', '关闭']
+    	       ,yes: function(index, layero){ //或者使用btn1
+						var tree = layero.find("iframe")[0].contentWindow.tree;//h.find("iframe").contents();
+						var ids = [], names = [],officeIds = [], nodes = [];
+						if ("${checked}" == "true"){
+							nodes = tree.getCheckedNodes(true);
+						}else{
+							nodes = tree.getSelectedNodes();
+						}
+						for(var i=0; i<nodes.length; i++) {//<c:if test="${checked && notAllowSelectParent}">
+							if (nodes[i].isParent){
+								continue; // 如果为复选框选择,则过滤掉父节点
+							}//</c:if><c:if test="${notAllowSelectRoot}">
+							if (nodes[i].level == 0){
+								//top.$.jBox.tip("不能选择根节点("+nodes[i].name+")请重新选择。");
+								top.layer.msg("不能选择根节点("+nodes[i].name+")请重新选择。", {icon: 0});
+								return false;
+							}//</c:if><c:if test="${notAllowSelectParent}">
+							if (nodes[i].isParent){
+								//top.$.jBox.tip("不能选择父节点("+nodes[i].name+")请重新选择。");
+								//layer.msg('有表情地提示');
+								top.layer.msg("不能选择父节点("+nodes[i].name+")请重新选择。", {icon: 0});
+								return false;
+							}//</c:if><c:if test="${not empty module && selectScopeModule}">
+							if (nodes[i].module == ""){
+								//top.$.jBox.tip("不能选择公共模型("+nodes[i].name+")请重新选择。");
+								top.layer.msg("不能选择公共模型("+nodes[i].name+")请重新选择。", {icon: 0});
+								return false;
+							}else if (nodes[i].module != "${module}"){
+								//top.$.jBox.tip("不能选择当前栏目以外的栏目模型,请重新选择。");
+								top.layer.msg("不能选择当前栏目以外的栏目模型,请重新选择。", {icon: 0});
+								return false;
+							}//</c:if>
+							ids.push(nodes[i].id);
+							names.push(nodes[i].name);
+							officeIds.push(nodes[i].officeId);
+							//<c:if test="${!checked}">
+							break; // 如果为非复选框选择,则返回第一个选择  </c:if>
+						}
+						if(ids.length>1){
+							top.layer.msg("不能进行多选,请重新选择。", {icon: 0});
+							return false;
+						}
+						$("#${id}Id").val(ids.join(",").replace(/u_/ig,""));
+						$("#${id}Name").val(names.join(","));
+						$("#${id}officeId").val(officeIds.join(","));
+						console.log(officeIds)
+						$("#${id}Name").focus();
+						top.layer.close(index);
+				    	       },
+    	cancel: function(index){ //或者使用btn2
+    	           //按钮【按钮二】的回调
+    	       }
+		});
+
+	});
+</script>

+ 6 - 0
src/main/webapp/webpage/modules/workinvoice/workInvoiceAuditEnd.jsp

@@ -608,6 +608,12 @@
 					<input type="text"  readonly="true" value="${workInvoice.accountCheckingUserName}"  class="form-control layui-input" style="background-color: #f1f1f1" >
 				</div>
 			</div>
+			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label">对账地区:</label>
+				<div class="layui-input-block  with-icon">
+					<input type="text"  readonly="true" value="${workInvoice.area.name}"  class="form-control layui-input" style="background-color: #f1f1f1" >
+				</div>
+			</div>
 <%--			<div class="form-group layui-row">--%>
 <%--				<div class="form-group-label"><h2>审批意见</h2></div>--%>
 <%--				<div class="layui-item layui-col-sm8 lw6 with-textarea">--%>

+ 12 - 0
src/main/webapp/webpage/modules/workinvoice/workInvoiceForm.jsp

@@ -190,6 +190,11 @@
                     $(projectNum).val(d.projectNum);
                     $(clientName).val(d.clientName);
                     $(reportDataNum).val(d.reportDataNum);
+                    var areaId = $("#areaId").val();
+                    if(undefined ==areaId || null == areaId || '' == areaId){
+						$("#areaId").val(d.areaId);
+						$("#areaName").val(d.areaName);
+					}
 				}
                 })
         }
@@ -611,6 +616,13 @@
 										cssStyle="background-color: #fff" title="用户" url="/sys/office/treeDataAll?type=3" cssClass="form-control judgment layui-input" allowClear="true" notAllowSelectParent="true"/>
 					</div>
 				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label"><span class="require-item">*</span>对账地区:</label>
+					<div class="layui-input-block  with-icon">
+						<sys:treeselectArae id="area" name="area.id" value="${workInvoice.area.id}" labelName="area.name" labelValue="${workInvoice.area.name}"
+											cssStyle="background-color:#fff" title="区域" url="/sys/area/treeData" cssClass="form-control judgment layui-input" allowClear="true" notAllowSelectParent="false" isAll="true"/>
+					</div>
+				</div>
 			</div>
 			<div class="form-group layui-row">
 				<div class="form-group-label"><h2>发票明细</h2></div>

+ 102 - 23
src/main/webapp/webpage/modules/workinvoice/workInvoiceList.jsp

@@ -387,6 +387,54 @@
 			});
 
 		}
+		function cBlur(obj) {
+			var id = $("#accountCheckingUserId").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){
+							$("#accountCheckingUserId").val("");
+						}else{
+							if(data.body.data.id != id){
+								if(undefined != id && null != id && '' != id){
+									$("#accountCheckingUserId").val("");
+								}
+							}
+						}
+					}
+				});
+			}else{
+				$("#accountCheckingUserId").val("");
+			}
+
+		}
+		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("");
+			}
+
+		}
 	</script>
 	<style>
 		body{
@@ -419,6 +467,24 @@
 
 					<div class="commonQuery lw9">
 						<div class="layui-item query athird">
+							<label class="layui-form-label">发票申请编号:</label>
+							<div class="layui-input-block">
+								<form:input path="number" htmlEscape="false" maxlength="64"  class=" form-control layui-input"/>
+							</div>
+						</div>
+						<div class="layui-item query athird">
+							<label class="layui-form-label">开票日期:</label>
+							<div class="layui-input-block">
+								<input id="beginContractDate" name="beginContractDate" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group" style="background-color: #fff"
+									   value="<fmt:formatDate value="${workInvoice.beginContractDate}" pattern="yyyy-MM-dd"/>"/>
+								</input>
+								<span class="group-sep">-</span>
+								<input id="endContractDate" name="endContractDate" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group" style="background-color: #fff"
+									   value="<fmt:formatDate value="${workInvoice.endContractDate}" pattern="yyyy-MM-dd"/>"/>
+								</input>
+							</div>
+						</div>
+						<%--<div class="layui-item query athird">
 							<label class="layui-form-label">项目编号:</label>
 							<div class="layui-input-block">
 								<form:input path="project.projectId" htmlEscape="false" maxlength="64"  class=" form-control layui-input"/>
@@ -429,7 +495,7 @@
 							<div class="layui-input-block with-icon">
 								<form:input path="project.projectName" htmlEscape="false" maxlength="64"  class=" form-control layui-input"/>
 							</div>
-						</div>
+						</div>--%>
 						<div class="layui-item athird">
 							<div class="input-group">
 								<a href="#" id="moresee"><i class="glyphicon glyphicon-menu-down"></i></a>
@@ -442,30 +508,12 @@
 						<div style="    clear:both;"></div>
 					</div>
 					<div id="moresees" class="lw9" style="clear:both;display:none;">
-						<div class="layui-item query athird">
+						<%--<div class="layui-item query athird">
 							<label class="layui-form-label">报告号名称:</label>
 							<div class="layui-input-block with-icon">
 								<form:input path="project.reportData.number" htmlEscape="false" maxlength="64"  class=" form-control layui-input"/>
 							</div>
-						</div>
-						<div class="layui-item query athird">
-							<label class="layui-form-label">开票日期:</label>
-							<div class="layui-input-block">
-								<input id="beginContractDate" name="beginContractDate" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group" style="background-color: #fff"
-									   value="<fmt:formatDate value="${workInvoice.beginContractDate}" pattern="yyyy-MM-dd"/>"/>
-								</input>
-								<span class="group-sep">-</span>
-								<input id="endContractDate" name="endContractDate" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group" style="background-color: #fff"
-									   value="<fmt:formatDate value="${workInvoice.endContractDate}" pattern="yyyy-MM-dd"/>"/>
-								</input>
-							</div>
-						</div>
-						<div class="layui-item query athird">
-							<label class="layui-form-label">发票申请编号:</label>
-							<div class="layui-input-block">
-								<form:input path="number" htmlEscape="false" maxlength="64"  class=" form-control layui-input"/>
-							</div>
-						</div>
+						</div>--%>
 						<div class="layui-item query athird">
 							<label class="layui-form-label">经办人部门:</label>
 							<div class="layui-input-block with-icon">
@@ -476,7 +524,7 @@
 						<div class="layui-item query athird">
 							<label class="layui-form-label">经办人:</label>
 							<div class="layui-input-block with-icon">
-								<sys:inquireselectUser id="submitterId" name="submitterId" value="${workInvoice.submitterId}" labelName="submitterName" labelValue="${workInvoice.submitterName}" cssStyle="background-color: #fff"
+								<sys:inquireselectUserNotReadolnyTow id="submitter" name="submitterId" value="${workInvoice.submitterId}" labelName="submitterName" labelValue="${workInvoice.submitterName}" cssStyle="background-color: #fff"
 												title="用户" url="/sys/office/treeDataAll?type=3" cssClass="form-control layui-input" allowClear="true" notAllowSelectParent="true"/>
 							</div>
 						</div>
@@ -532,6 +580,26 @@
 								</form:select>
 							</div>
 						</div>
+						<div class="layui-item query athird">
+							<label class="layui-form-label">对账人:</label>
+							<div class="layui-input-block with-icon">
+								<sys:inquireselectUserNotReadolny id="accountCheckingUser" name="accountCheckingUserId" value="${workInvoice.accountCheckingUserId}" labelName="accountCheckingUserName" labelValue="${workInvoice.accountCheckingUserName}" 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:treeselectArae id="area" name="area.id" value="${workInvoice.area.id}" labelName="area.name" labelValue="${workInvoice.area.name}"
+													cssStyle="background-color:#fff" title="区域" url="/sys/area/treeData" cssClass="form-control layui-input" allowClear="true" notAllowSelectParent="false" isAll="true"/>
+							</div>
+						</div>
+						<div class="layui-item query athird">
+							<label class="layui-form-label">发票号:</label>
+							<div class="layui-input-block with-icon">
+								<form:input path="widNumber" htmlEscape="false"  class=" form-control layui-input"/>
+							</div>
+						</div>
 					</div>
 				</form:form>
 			</div>
@@ -539,11 +607,14 @@
 		<div class="full-width fl">
 			<div class=" contentShadow shadowLBR layui-form contentDetails">
 				<div class="nav-btns">
-					<div class="layui-btn-group">
+					<div class="layui-btn-group" style="float: left">
 						<shiro:hasPermission name="workinvoice:workInvoice:add">
 							<button class="layui-btn layui-btn-sm layui-bg-blue" title="发票管理" onclick="openDialogre('发票管理','${ctx}//workinvoice/workInvoice/form','95%','95%')">&nbsp;添加</button>
 						</shiro:hasPermission>
 						<button class="layui-btn layui-btn-sm layui-bg-green" data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"> 刷新</button>
+						<div class=" layui-btn-sm" style="float: right;width: 300px">
+							<span style="color: red">金额汇总(开票金额):${sumMoney}(元)</span>
+						</div>
 					</div>
 
 
@@ -603,6 +674,12 @@
 				,{field:'invoiceType',align:'center', title: '发票类型',  width:90,templet:function(d){
 						return "<span title='"+ d.invoiceType +"'>" + d.invoiceType + "</span>";
 					}}
+				,{field:'widNumber',align:'center', title: '发票号',  width:90,templet:function(d){
+						return "<span title='"+ d.widNumber +"'>" + d.widNumber + "</span>";
+					}}
+				,{field:'widTotalMoney',align:'center', title: '发票金额',  width:90,templet:function(d){
+						return "<span title='"+ d.widTotalMoney +"'>" + d.widTotalMoney + "</span>";
+					}}
                 <%--,{field:'reportNumber',align:'center', title: '报告号', minWidth:150,templet:function(d){--%>
 				<%--		&lt;%&ndash;return "<a class=\"attention-info\" title=\"" + d.reportNumber + "\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看报告信息', '${ctx}/ruralProject/ruralProjectMessage/modify?projectId=" + d.projectId + "&view=view','95%', '95%')\">" + d.reportNumber + "</a>";&ndash;%&gt;--%>
 				<%--		return d.reportNumber;--%>
@@ -716,6 +793,8 @@
                     ,"status":"${workInvoice.invoiceState}"
 					,"notifyFlag":"${workInvoice.notifyFlag}"
 					,"notifyId":"${workInvoice.notifyId}"
+					,"widNumber":"${workInvoice.widNumber}"
+					,"widTotalMoney":"${workInvoice.widTotalMoney}"
                     ,"money":"<fmt:formatNumber value="${workInvoice.money}" pattern="##0.00"/>"
                     ,"createDate":"<fmt:formatDate value="${workInvoice.createDate}" pattern="yyyy-MM-dd"/>"
                     ,"receiptMoneyDate":"<fmt:formatDate value="${workInvoice.receiptMoneyDate}" pattern="yyyy-MM-dd"/>"

+ 11 - 0
src/main/webapp/webpage/modules/workinvoice/workInvoiceModify.jsp

@@ -191,6 +191,10 @@
 					$(projectNum).val(d.projectNum);
 					$(clientName).val(d.clientName);
 					$(reportDataNum).val(d.reportDataNum);
+					if(undefined ==areaId || null == areaId || '' == areaId){
+						$("#areaId").val(d.areaId);
+						$("#areaName").val(d.areaName);
+					}
 				}
 			})
 		}
@@ -635,6 +639,13 @@
 										cssStyle="background-color: #fff" title="用户" url="/sys/office/treeDataAll?type=3" cssClass="form-control judgment layui-input" allowClear="true" notAllowSelectParent="true"/>
 					</div>
 				</div>
+				<div class="layui-item layui-col-sm6 lw6">
+					<label class="layui-form-label"><span class="require-item">*</span>对账地区:</label>
+					<div class="layui-input-block  with-icon">
+						<sys:treeselectArae id="area" name="area.id" value="${workInvoice.area.id}" labelName="area.name" labelValue="${workInvoice.area.name}"
+											cssStyle="background-color:#fff" title="区域" url="/sys/area/treeData" cssClass="form-control judgment layui-input" allowClear="true" notAllowSelectParent="false" isAll="true"/>
+					</div>
+				</div>
 			</div>
 			<div class="form-group layui-row">
 				<div class="form-group-label"><h2>发票明细</h2></div>

+ 6 - 0
src/main/webapp/webpage/modules/workinvoice/workInvoiceView.jsp

@@ -185,6 +185,12 @@
 						<input type="text"  readonly="true" value="${workInvoice.accountCheckingUserName}"  class="form-control layui-input" style="background-color: #f1f1f1" >
 					</div>
 				</div>
+				<div class="layui-item layui-col-sm6">
+					<label class="layui-form-label">对账地区:</label>
+					<div class="layui-input-block  with-icon">
+						<input type="text"  readonly="true" value="${workInvoice.area.name}"  class="form-control layui-input" style="background-color: #f1f1f1" >
+					</div>
+				</div>
 				<div class="layui-item layui-col-sm12">
 					<label class="layui-form-label">领票时间:</label>
 					<div class="layui-input-block">