Heim >Java >javaLernprogramm >Wie implementiert man mit Java Funktionen des Mitarbeiterinformationsmanagementsystems?

Wie implementiert man mit Java Funktionen des Mitarbeiterinformationsmanagementsystems?

王林
王林nach vorne
2023-04-26 13:52:072335Durchsuche

1. Paging-Abfrage von Mitarbeiterinformationen

1. Wenn immer mehr Benutzer im System eine unvollständige Seitenanzeige haben, müssen wir Mitarbeiterinformationen durch Implementierung von Paging anzeigen:

2 Bevor Sie Code entwickeln, müssen Sie den Ausführungsprozess und die Geschäftslogik des Programms klären:

Wie implementiert man mit Java Funktionen des Mitarbeiterinformationsmanagementsystems?

Die Seite sendet eine Ajax-Anfrage und übermittelt die Paging-Abfrageparameter (Seite, Seitengröße, Name) an den Server-Server

Controller Empfangen Sie die von der Seite übermittelten Daten und rufen Sie die abgefragten Daten auf.
  • Der Dienst ruft den Mapper auf, um die Datenbank zu betreiben und die Paging-Daten abzufragen Die Paging-Daten werden über ElementUI weitergeleitet. Die Tabellenkomponente wird auf der Seite angezeigt
  • Tatsächlich werden die Paging-Parameter der Seite über das JSON-Format an das Backend übergeben, aber warum wird das Bild eingefügt? Der Grund dafür ist, dass das Frontend das Ergebnis nach dem Abfangen und erneuten Spleißen anfordert (der Frontend-Code wird nicht erneut beschrieben).

  • Paging-Plugin konfigurieren
  • 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;
        }
    }

    Controller-Ebene

       /**
         * 员工信息分页查询
         *
         * @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. Mitarbeiterstatus aktivieren oder deaktivieren
  • 1 Anforderungsanalyse

  • Mitarbeiterverwaltungslistenseite, Sie können einen Mitarbeiterstatus aktivieren oder deaktivieren. Mitarbeiter mit deaktivierten Konten können sich nicht beim System anmelden. Nach der Aktivierung können sie sich normal anmelden. Dieser Vorgang ist nur für Administratoren zulässig.

2 Code-EntwicklungWie implementiert man mit Java Funktionen des Mitarbeiterinformationsmanagementsystems?

Front-End-Kerncode

So stellen Sie sicher, dass nur der Administrator die Deaktivierungsschaltfläche auf der Seite sehen kann. Tatsächlich müssen Sie im Front-End nur die protokollierten Daten abrufen. im Konto, und treffen Sie dann eine Beurteilung des Benutzernamens:

Rufen Sie das Anmeldekonto ab, wenn die Seite initialisiert wird:

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

Die Spalte, die den Kontostatus anzeigt:

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

Übergeben Sie JSON-Daten an das Backend. Es muss deaktiviert werden Die Konto-ID und der Statuswert des Mitarbeiters werden an das Backend übertragen. Der Hauptcode des Frontends:

//状态修改
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)
		})
	})
},

Back-End-Kerncode

/**
 * 根据用户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("员工信息修改成功");
}

Tatsächlich hat der Test ergeben, dass dieser Code nicht erfolgreich geändert werden kann, da es sich um eine JS-Genauigkeit handelt Problem: JS erkennt den Long-Typ nur auf 16 Ziffern genau, und die ID ist eine vom Snowflake-Algorithmus generierte ID. Es gibt 19 Bits, was zu einem Verlust an ID-Präzision führt.

Code-Korrektur
So lösen Sie das obige Problem und konvertieren den Long-Typ der Seite in einen String. Spezifische Schritte:

JacksonObjectMapper zum Konvertieren von JSON-Daten verwenden

Erweitern Sie den Nachrichtenkonverter von SringMVC in der WebConfig-Konfigurationsklasse, um die Konvertierung von Java-Objekten in JSON-Daten zu spiegeln
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);
    }
}
Nach der Reparatur kann der Mitarbeiterstatus normal geändert werden, auch die ID wurde in ein String-Format geändert:

Das obige ist der detaillierte Inhalt vonWie implementiert man mit Java Funktionen des Mitarbeiterinformationsmanagementsystems?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen