Rumah  >  Artikel  >  Java  >  Bagaimana untuk menggunakan Java untuk melaksanakan fungsi sistem pengurusan maklumat pekerja?

Bagaimana untuk menggunakan Java untuk melaksanakan fungsi sistem pengurusan maklumat pekerja?

王林
王林ke hadapan
2023-04-26 13:52:072297semak imbas

1. Pertanyaan halaman maklumat pekerja

1. Analisis permintaan

Apabila semakin ramai pengguna dalam sistem memaparkan halaman yang tidak lengkap, kami perlu memaparkan maklumat pekerja melalui:

Bagaimana untuk menggunakan Java untuk melaksanakan fungsi sistem pengurusan maklumat pekerja?

2. Pembangunan Kod

Sebelum membangunkan kod, anda perlu menjelaskan proses pelaksanaan dan logik perniagaan program:

  • Halaman menghantar permintaan Ajax dan menyerahkan parameter pertanyaan halaman (halaman, saiz halaman, nama) kepada pelayan

  • Pengawal menerima data yang diserahkan oleh halaman. dan memanggil data yang ditanya

  • Perkhidmatan memanggil Mapper untuk mengendalikan pangkalan data dan data paging pertanyaan

  • Pengawal bertindak balas ke halaman dengan data paging yang ditanya

  • Halaman menerima data halaman dan memaparkannya pada halaman melalui komponen Jadual ElementUI

Bagaimana untuk menggunakan Java untuk melaksanakan fungsi sistem pengurusan maklumat pekerja?

Sebenarnya, parameter paging halaman adalah melalui JSON Nilai dihantar ke bahagian belakang dalam format permintaan, tetapi mengapa ia disambung dengan cara tanda soal ini dalam gambar? memintas permintaan dan kemudian replices hasilnya (kod bahagian hadapan tidak akan diterangkan lagi).

Konfigurasikan pemalam paging

package com.itheima.reggie.config;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
 * 配置Mybatis-plus分页插件
 * @author jektong
 * @date 2022年05月01日 0:08
 */
@Configuration
public class MybatisPlusConfig {
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
        MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
        mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
        return mybatisPlusInterceptor;
    }
}

Lapisan Pengawal

   /**
     * 员工信息分页查询
     *
     * @param page 当前页
     * @param pageSize 页码
     * @param name 关键字查询
     * @return
     */
    @GetMapping("/page")
    public R<Page> page(int page, int pageSize, String name) {
        log.info("page={},pageSize={},name={}", page, pageSize, name);
        // 构造分页构造器
        Page pageInfo = new Page(page, pageSize);
        // 构造条件
        LambdaQueryWrapper<Employee> queryWrapper = new LambdaQueryWrapper();
        queryWrapper.like(StringUtils.isNotEmpty(name), Employee::getName, name).or()
                .like(StringUtils.isNotEmpty(name),Employee::getUsername,name);
        // 添加排序
        queryWrapper.orderByDesc(Employee::getUpdateTime);
        // 执行查询
        employeeService.page(pageInfo, queryWrapper);
        return R.success(pageInfo);
    }

2 Dayakan atau lumpuhkan status pekerja

1 Analisis Keperluan

.

Halaman senarai pengurusan pekerja, anda boleh mendayakan atau melumpuhkan status pekerja. Pekerja dengan akaun yang dilumpuhkan tidak boleh log masuk ke sistem Setelah didayakan, mereka boleh log masuk seperti biasa. Operasi ini hanya dibenarkan untuk pentadbir.

2 Pembangunan Kod

Kod teras hadapan

Cara membuatnya supaya hanya pentadbir pentadbir boleh melihat butang dilumpuhkan pada halaman, sebenarnya, hanya maklumat log masuk diperlukan pada akaun bahagian hadapan, dan kemudian buat pertimbangan nama pengguna:

Dapatkan akaun log masuk apabila halaman dimulakan:

created() {
          this.init()
          this.user = JSON.parse(localStorage.getItem(&#39;userInfo&#39;)).username
        },

Lajur yang menunjukkan status akaun :

<el-table-column label="账号状态">
    <template slot-scope="scope">
        {{ String(scope.row.status) === &#39;0&#39; ? &#39;已禁用&#39; : &#39;正常&#39; }}
    </template>
</el-table-column>

Hantar data JSON ke bahagian belakang, dan hantar ID dan status akaun pekerja yang perlu dilumpuhkan ke bahagian belakang Kod bahagian hadapan utama:

//状态修改
statusHandle (row) {
	this.id = row.id
	this.status = row.status
	this.$confirm(&#39;确认调整该账号的状态?&#39;, &#39;提示&#39;, {
		&#39;confirmButtonText&#39;: &#39;确定&#39;,
		&#39;cancelButtonText&#39;: &#39;取消&#39;,
		&#39;type&#39;: &#39;warning&#39;
	}).then(() => {
		enableOrDisableEmployee({ &#39;id&#39;: this.id, &#39;status&#39;: !this.status ? 1 : 0 }).then(res => {
			console.log(&#39;enableOrDisableEmployee&#39;,res)
			if (String(res.code) === &#39;1&#39;) {
				this.$message.success(&#39;账号状态更改成功!&#39;)
				this.handleQuery()
			}
		}).catch(err => {
			this.$message.error(&#39;请求出错了:&#39; + err)
		})
	})
},
Kod teras belakang
/**
 * 根据用户ID去修改用户状态
 *  @param request
 *  @param employee
 *  @return
 */
@PostMapping
	public R<String> update(HttpServletRequest request, @RequestBody Employee employee){
	// 获取员工ID
	Long empId = (Long) request.getSession().getAttribute("employee");
	employee.setUpdateTime(LocalDateTime.now());
	employee.setUpdateUser(empId);
	employeeService.updateById(employee);
	return R.success("员工信息修改成功");
}

Malah, ujian mendapati kod ini tidak akan berjaya diubah suai kerana ia melibatkan isu ketepatan JS hanya boleh mengecam jenis Long dengan tepat hingga 16 digit, manakala ID yang dijana oleh algoritma kepingan salji mempunyai 19 digit, mengakibatkan kehilangan ketepatan ID.

Pembaikan Kod

Cara menyelesaikan masalah di atas dan menukar jenis Panjang halaman kepada rentetan. Langkah khusus:

  • Gunakan JacksonObjectMapper untuk menukar data JSON

  • Lanjutkan penukar mesej SringMVC dalam kelas konfigurasi WebConfig dan cerminkan objek Java kepada Penukaran data JSON

JacksonObjectMapper:

package com.itheima.reggie.common;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer;
import org.springframework.stereotype.Component;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import static com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES;
/**
 * 对象映射器:基于jackson将Java对象转为json,或者将json转为Java对象
 * 将JSON解析为Java对象的过程称为 [从JSON反序列化Java对象]
 * 从Java对象生成JSON的过程称为 [序列化Java对象到JSON]
 */
@Component
public class JacksonObjectMapper extends ObjectMapper {
    public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd";
    public static final String DEFAULT_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
    public static final String DEFAULT_TIME_FORMAT = "HH:mm:ss";
    public JacksonObjectMapper() {
         super();
        //收到未知属性时不报异常
        this.configure(FAIL_ON_UNKNOWN_PROPERTIES, false);
        //反序列化时,属性不存在的兼容处理
        this.getDeserializationConfig().withoutFeatures(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
        SimpleModule simpleModule = new SimpleModule()
                .addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT)))
                .addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_FORMAT)))
                .addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern(DEFAULT_TIME_FORMAT)))
                .addSerializer(BigInteger.class, ToStringSerializer.instance)
                .addSerializer(Long.class, ToStringSerializer.instance)
                .addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT)))
                .addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_FORMAT)))
                .addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern(DEFAULT_TIME_FORMAT)));
        //注册功能模块 例如,可以添加自定义序列化器和反序列化器
        this.registerModule(simpleModule);
    }
}

WebMVCConfig:

/**
     * 扩展MVC消息转换器
     * @param converters
     */
    @Override
    protected void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
        log.info("扩展消息转换器");
        // 创建消息转换器
        MappingJackson2HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter();
        // 设置对象转换器,底层使用Jackson将Java对象转为json
        messageConverter.setObjectMapper(new JacksonObjectMapper());
        // 将上面的消息转换器对象追加到MVC框架的转换器集合中
        converters.add(0,messageConverter);
    }

Selepas pembaikan, status pekerja boleh diubah suai seperti biasa, dan ID juga ditukar kepada format String:

Bagaimana untuk menggunakan Java untuk melaksanakan fungsi sistem pengurusan maklumat pekerja?

Atas ialah kandungan terperinci Bagaimana untuk menggunakan Java untuk melaksanakan fungsi sistem pengurusan maklumat pekerja?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam