在Emos系统中,除了系统自动生成的罚款单之外,我们还能手动添加罚款记录。本小节,我们去实现手动添加罚款记录的后端代码,如果没有问题,下节课就可以写前端代码了。
从界面上看,我们添加违纪罚款的时候,可以选择多个当事人,这个设计太人性化了。比如我们发现5名员工打架,我们不需要手动添加5条罚款记录。我们在弹窗页面填写好罚款信息,然后勾选这5名当事人,点击确定按钮,那么系统会自动生成5条罚款记录,不需要我们自己手动添加5条罚款记录。
一、编写持久层代码
在TbAmectDao.xml
文件中,定义SQL语句。
<insert id="insert" parameterType="com.example.emos.api.db.pojo.TbAmect">
INSERT INTO tb_amect
SET uuid = #{uuid},
user_id = #{userId},
amount = #{amount},
type_id = #{typeId},
reason = #{reason},
status = 1
</insert>
在TbAmectDao.java
接口中,声明DAO方法。
public interface TbAmectDao {
……
public int insert(TbAmect amect);
}
二、编写业务层代码
在AmectService.java
接口中,定义抽象业务方法。
public interface AmectService {
……
public int insert(ArrayList<TbAmect> list);
}
在AmectServiceImpl.java
类中,实现抽象业务方法。
public class AmectServiceImpl implements AmectService {
……
@Override
@Transactional
public int insert(ArrayList<TbAmect> list) {
list.forEach(one -> {
amectDao.insert(one);
});
return list.size();
}
}
三、编写Web层代码
创建InsertAmectForm.java
类,封装Ajax提交的数据。
@Data
@Schema(description = "添加罚款记录表单")
public class InsertAmectForm {
@NotEmpty(message = "userId不能为空")
@Schema(description = "用户ID")
private Integer[] userId;
@NotBlank(message = "amount不能为空")
@Pattern(regexp = "(^[1-9]([0-9]+)?(\\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\\.[0-9]([0-9])?$)", message = "amount内容不正确")
@Schema(description = "罚款金额")
private String amount;
@NotNull(message = "typeId不能为空")
@Min(value = 1, message = "typeId不能小于1")
@Schema(description = "罚款类型编号")
private Byte typeId;
@NotBlank(message = "reason不能为空")
@Length(max = 200, message = "reason不能超过200个字符")
@Schema(description = "罚款原因")
private String reason;
}
在AmectController.java
类中,定义Web方法。
public class AmectController {
……
@PostMapping("/insert")
@Operation(summary = "添加罚款记录")
@SaCheckPermission(value = {"ROOT", "AMECT:INSERT"}, mode = SaMode.OR)
public R insert(@Valid @RequestBody InsertAmectForm form) {
ArrayList<TbAmect> list = new ArrayList<>();
for (Integer userId : form.getUserId()) {
TbAmect amect = new TbAmect();
amect.setAmount(new BigDecimal(form.getAmount()));
amect.setTypeId(form.getTypeId());
amect.setReason(form.getReason());
amect.setUserId(userId);
amect.setUuid(IdUtil.simpleUUID());
list.add(amect);
}
int rows = amectService.insert(list);
return R.ok().put("rows", rows);
}
}