全部开发者教程

企业级在线办公系统

在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);
    }
}