【项目小问题记录】都是一些非常非常小的问题,有一个记一个(二)

 

1、前端根据某个属性判断某一段代码是否显示(使用css来做判定)

 

代码如下,这里非常热衷于在前端定义一个hidden的input框,用来获取从后台传过来的 model.addAttribute()的字段,然后再使用var 去获得这个 字段的名称,来实现获取值,至于 前端是否显示,是通过 控制 .css属性来的,其实 同理的,当你想控制高度的时候使用 .style属性也能控制高度,后者经常被拿来作为 高度自动化调整。

 

例如说你定义了两个div,然后分别叫做  isSelectAppr 和 isSelectAppr1。

 

	//合同信息fieldset高度自适应
	$(function(){
		//如果合同状态为退回后呈核,不允许提交
		if(yfPublicNet_status == "0"){
			$("#isSelectAppr").css("display", "block");
			$("#isSelectAppr1").remove();
		}else{
			$("#isSelectAppr").remove();
			$("#isSelectAppr1").css("display", "block");
		}	
	})

 

 

2、model.addAttribute 如果你想要的话,它可以一直赋值赋很多

@Controller
@RequestMapping("/web/member")
public class MerchantWebController {

    @RequestMapping(value = "/update")
    public String update(Model model, Integer id) {
        Merchant merchant = new Merchant();
        merchant.setId(1);
        merchant.setMerchantAccount("2222");
        model.addAttribute(merchant); //直接设置dto
        model.addAttribute("id",id);  //设置单个值
        return "web/member/update";
    }
}

 

 

 

3、怎么样去做一个审批流

审批流顾名思义,就是当用户提出一个请求的时候,并不能马上到达对应的管理员那边去,它需要 上级不断地审核和通过,通过到了最后的一层的时候,才可以到 管理员那边去,因此在做审批流的时候,需要多两个表格。

其核心思想是,当定义一个 审批流当前到达节点 和 审批流下一个指向节点,当本地的用户等于下一个指向节点的时候,它就会显示在用户的待处理消息上。

 

加入说现在我们 要做公网端口映射的申请,用户新建审批流的时候,指定了所有的审核信息直到管理员前的最后一位,那此时就会有两个表格,一个表格记录的是 这整个的流程,包括第一位审批的人是谁,第二位是谁,表结构如下,默认的是最多只能添加六位审批人

 

 

 

第二个表格就是用来记录所有的审批信息,这里包括类

 

 

申请的公网端口的那条数据的id(不是端口号而是那条数据的主键)

申请人姓名

申请人部门

申请人的职务

申请人意见

该条申请的状态

下一个呈交人是谁

是否可用、是否删除、创建人id和时间、更新人的id和更新时间 ,以及公司的id。

 

 

怎么样将传递到自己的审核显示出来,也就是我的待处理信息,sql是这么写的。

	<!--查询当前登录人的待处理分配情况-->
	<select id="findSelfDictionary" resultType="map"  parameterType="map">
	select 
        .....
		
		left join do_department B
		on A.strDept=B.ID
		left join pm_project C
		on A.strOriginId=C.ID
		left join du_user D
		on A.updateUserId=D.ID
		<where>
			<if test="currentCompany != null and currentCompany != ''">
				AND A.companyId = #{currentCompany}
			</if>

			<if test="strName != null and strName != ''">
				AND A.strName like '%${strName}%'
			</if>	
			
			<if test="flag == null or flag == ''">
				AND A.id in (SELECT DISTINCT E.publicNetId FROM public_net_approve E where E.apprNext = #{apprNext})
			</if>

			<if test="flag != null and flag != ''">
				AND A.id in (SELECT DISTINCT E.publicNetId FROM public_net_approve E where E.apprNext = #{apprNext} and E.createDateTime >= A.updateDateTime)
			</if>
		</where>

   	    ORDER BY A.CREATEDATETIME DESC
	</select> 

 

其中flag为空的时候表示显示所有的数据,flag有值的时候表示只显示当前需要处理的数据。

因为我们在提交的时候,每提交一次就会在approve的表格中留下一栏数据,所以使用distinct 可以保证你。同样的一段申请,它只会显示一次,那怎么样让它知道这段申请是你当前需要处理的呢,其实我想过说,记录一下当前的用户和最后一个更新的用户指向的下一个用户是否 相等,结果发现它其实没有这个方法好用。

 

它是这样写的。

AND A.id in (SELECT DISTINCT E.publicNetId FROM public_net_approve E 
where E.apprNext = #{apprNext} and E.createDateTime >= A.updateDateTime)

每次我们都是先更新端口表(info 表),再更新申请通过表(approve表),有那么多条针对同一条申请的数据的话,只有当前最新一条交到你手上的申请(approve)是需要处理的,其他的申请产生时间都会比你那个要旧,因此通过时间比较就可以得到你想要的结果。

 

审批流之所以你觉得不会还因为它的前端你看不懂。

刚好今天也要改这个方面的bug,下次来一起说

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值