add:呆料

This commit is contained in:
2024-05-31 13:17:57 +08:00
parent e446f8b743
commit fc545bdd40
28 changed files with 1249 additions and 167 deletions

View File

@@ -0,0 +1,116 @@
package org.nl.wms.early_manage.controller.early_deferral;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import org.nl.common.TableDataInfo;
import org.nl.common.domain.entity.PageQuery;
import org.nl.common.utils.IdUtil;
import org.nl.common.utils.SecurityUtils;
import org.nl.wms.base_manage.material.service.IMdMeMaterialbaseService;
import org.nl.wms.base_manage.material.service.dao.MdMeMaterialbase;
import org.nl.wms.early_manage.service.early_deferral.IAlmEarlyDeferralDetailService;
import org.nl.wms.early_manage.service.early_deferral.IAlmEarlyDeferralService;
import org.nl.wms.early_manage.service.early_deferral.dao.AlmEarlyDeferral;
import org.nl.wms.early_manage.service.early_deferral.dao.AlmEarlyDeferralDetail;
import org.nl.wms.early_manage.service.early_deferral.dto.AlmDeferralQuery;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.List;
/**
* <p>
* 前端控制器
* </p>
*
* @author generator
* @since 2024-05-31
*/
@RestController
@RequestMapping("/api/almEarlyDeferral")
public class AlmEarlyDeferralController {
@Autowired
private IAlmEarlyDeferralService almEarlyDeferralService;
@Autowired
private IAlmEarlyDeferralDetailService almEarlyDeferralDetailService;
@Autowired
private IMdMeMaterialbaseService materialbaseService;
@GetMapping
public ResponseEntity<Object> getAll(AlmDeferralQuery query, PageQuery page) {
return new ResponseEntity<>(TableDataInfo.build(almEarlyDeferralService.page(page.build(), query.build())), HttpStatus.OK);
}
@GetMapping("/dtl/{id}")
public ResponseEntity<Object> getDtl(@PathVariable String id) {
List<AlmEarlyDeferralDetail> list = almEarlyDeferralDetailService.list(new LambdaQueryWrapper<AlmEarlyDeferralDetail>().eq(AlmEarlyDeferralDetail::getDeferral_id, id));
JSONArray array = new JSONArray();
for (AlmEarlyDeferralDetail detail : list) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("deferral_id", detail.getDeferral_id());
jsonObject.put("material_id", detail.getMaterial_id());
MdMeMaterialbase materialbase = materialbaseService.getById(detail.getMaterial_id());
jsonObject.put("material_code", materialbase.getMaterial_code());
jsonObject.put("material_name", materialbase.getMaterial_name());
jsonObject.put("material_spec", materialbase.getMaterial_spec());
jsonObject.put("material_model", materialbase.getMaterial_model());
array.add(jsonObject);
}
return new ResponseEntity<>(array, HttpStatus.OK);
}
@PostMapping("/saveDtl")
public ResponseEntity<Object> saveDtl(@Validated @RequestBody JSONObject dto) {
String id = dto.getString("id");
LambdaUpdateWrapper<AlmEarlyDeferralDetail> luw = new LambdaUpdateWrapper<>();
luw.eq(AlmEarlyDeferralDetail::getDetail_id, id);
almEarlyDeferralDetailService.remove(luw);
JSONArray jsonArray = dto.getJSONArray("tableData");
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
String material_id = jsonObject.getString("material_id");
AlmEarlyDeferralDetail almEarlyDeferralDetail = new AlmEarlyDeferralDetail();
almEarlyDeferralDetail.setDetail_id(IdUtil.getStringId());
almEarlyDeferralDetail.setDeferral_id(id);
almEarlyDeferralDetail.setMaterial_id(material_id);
almEarlyDeferralDetailService.save(almEarlyDeferralDetail);
}
return new ResponseEntity<>(HttpStatus.CREATED);
}
@DeleteMapping("/delete")
public ResponseEntity<Object> delete(@RequestBody String[] ids) {
if (ids.length > 0) {
almEarlyDeferralService.removeByIds(Arrays.asList(ids));
}
return new ResponseEntity<>(HttpStatus.OK);
}
@PostMapping
public ResponseEntity<Object> create(@Validated @RequestBody JSONObject dto) {
AlmEarlyDeferral almEarlyDeferral = dto.toJavaObject(AlmEarlyDeferral.class);
almEarlyDeferral.setCreate_name(SecurityUtils.getCurrentNickName());
almEarlyDeferral.setId(IdUtil.getStringId());
almEarlyDeferral.setCreate_time(DateUtil.now());
almEarlyDeferralService.save(almEarlyDeferral);
return new ResponseEntity<>(HttpStatus.CREATED);
}
@PostMapping("/update")
public ResponseEntity<Object> update(@Validated @RequestBody JSONObject dto) {
AlmEarlyDeferral almEarlyDeferral = dto.toJavaObject(AlmEarlyDeferral.class);
almEarlyDeferral.setCreate_time(DateUtil.now());
almEarlyDeferralService.updateById(almEarlyDeferral);
return new ResponseEntity<>(HttpStatus.CREATED);
}
}

View File

@@ -0,0 +1,22 @@
package org.nl.wms.early_manage.controller.early_deferral;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 前端控制器
* </p>
*
* @author generator
* @since 2024-05-31
*/
@RestController
@RequestMapping("/api/almEarlyDeferralDetail")
public class AlmEarlyDeferralDetailController {
}

View File

@@ -0,0 +1,17 @@
package org.nl.wms.early_manage.notification;
/**
* @Description TODO
* @Author Gengby
* @Date 2024/5/31
*/
public class EmailNotification extends Notification {
public EmailNotification() {
}
@Override
public void send(String message) {
System.out.println("发送邮件内容:" + message);
}
}

View File

@@ -0,0 +1,11 @@
package org.nl.wms.early_manage.notification;
/**
* @Description TODO
* @Author Gengby
* @Date 2024/5/31
*/
public abstract class Notification {
public abstract void send(String message);
}

View File

@@ -0,0 +1,19 @@
package org.nl.wms.early_manage.notification;
/**
* @Description TODO
* @Author Gengby
* @Date 2024/5/31
*/
public class NotificationFactory {
public static Notification getNotification(String noticeType) {
switch (noticeType) {
case "1":
return new EmailNotification();
case "2":
return new WeChatNotification();
default:
throw new IllegalArgumentException("未知的通知类型: " + noticeType);
}
}
}

View File

@@ -0,0 +1,18 @@
package org.nl.wms.early_manage.notification;
/**
* @Description TODO
* @Author Gengby
* @Date 2024/5/31
*/
public class WeChatNotification extends Notification {
public WeChatNotification() {
}
@Override
public void send(String message) {
System.out.println("发送微信内容:" + message);
}
}

View File

@@ -0,0 +1,16 @@
package org.nl.wms.early_manage.service.early_deferral;
import com.baomidou.mybatisplus.extension.service.IService;
import org.nl.wms.early_manage.service.early_deferral.dao.AlmEarlyDeferralDetail;
/**
* <p>
* 服务类
* </p>
*
* @author generator
* @since 2024-05-31
*/
public interface IAlmEarlyDeferralDetailService extends IService<AlmEarlyDeferralDetail> {
}

View File

@@ -0,0 +1,17 @@
package org.nl.wms.early_manage.service.early_deferral;
import com.baomidou.mybatisplus.extension.service.IService;
import org.nl.wms.early_manage.service.early_deferral.dao.AlmEarlyDeferral;
/**
* <p>
* 服务类
* </p>
*
* @author generator
* @since 2024-05-31
*/
public interface IAlmEarlyDeferralService extends IService<AlmEarlyDeferral> {
}

View File

@@ -0,0 +1,44 @@
package org.nl.wms.early_manage.service.early_deferral.dao;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
*
* </p>
*
* @author generator
* @since 2024-05-31
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("alm_early_deferral")
public class AlmEarlyDeferral implements Serializable {
private static final long serialVersionUID = 1L;
private String id;
private String alm_name;
private String stor_code;
private Integer stay_days;
private String notice_type;
private String ext_json;
private Boolean is_used;
private String remark;
private String create_name;
private String create_time;
}

View File

@@ -0,0 +1,29 @@
package org.nl.wms.early_manage.service.early_deferral.dao;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
*
* </p>
*
* @author generator
* @since 2024-05-31
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("alm_early_deferral_detail")
public class AlmEarlyDeferralDetail implements Serializable {
private static final long serialVersionUID = 1L;
private String detail_id;
private String deferral_id;
private String material_id;
}

View File

@@ -0,0 +1,16 @@
package org.nl.wms.early_manage.service.early_deferral.dao.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.nl.wms.early_manage.service.early_deferral.dao.AlmEarlyDeferralDetail;
/**
* <p>
* Mapper 接口
* </p>
*
* @author generator
* @since 2024-05-31
*/
public interface AlmEarlyDeferralDetailMapper extends BaseMapper<AlmEarlyDeferralDetail> {
}

View File

@@ -0,0 +1,16 @@
package org.nl.wms.early_manage.service.early_deferral.dao.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.nl.wms.early_manage.service.early_deferral.dao.AlmEarlyDeferral;
/**
* <p>
* Mapper 接口
* </p>
*
* @author generator
* @since 2024-05-31
*/
public interface AlmEarlyDeferralMapper extends BaseMapper<AlmEarlyDeferral> {
}

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.nl.wms.early_manage.service.early_deferral.dao.mapper.AlmEarlyDeferralDetailMapper">
</mapper>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.nl.wms.early_manage.service.early_deferral.dao.mapper.AlmEarlyDeferralMapper">
</mapper>

View File

@@ -0,0 +1,26 @@
package org.nl.wms.early_manage.service.early_deferral.dto;
import lombok.Data;
import org.nl.common.domain.entity.BaseQuery;
import org.nl.common.domain.entity.QParam;
import org.nl.common.enums.QueryTEnum;
import org.nl.wms.early_manage.service.early_deferral.dao.AlmEarlyDeferral;
/*
* @author ZZQ
* @Date 2023/5/4 19:49
*/
@Data
public class AlmDeferralQuery extends BaseQuery<AlmEarlyDeferral> {
private String search;
private String stor_code;
@Override
public void paramMapping() {
super.doP.put("search", QParam.builder().k(new String[]{"alm_name"}).type(QueryTEnum.LK).build());
super.doP.put("stor_code", QParam.builder().k(new String[]{"stor_code"}).type(QueryTEnum.EQ).build());
}
}

View File

@@ -0,0 +1,20 @@
package org.nl.wms.early_manage.service.early_deferral.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.nl.wms.early_manage.service.early_deferral.IAlmEarlyDeferralDetailService;
import org.nl.wms.early_manage.service.early_deferral.dao.AlmEarlyDeferralDetail;
import org.nl.wms.early_manage.service.early_deferral.dao.mapper.AlmEarlyDeferralDetailMapper;
import org.springframework.stereotype.Service;
/**
* <p>
* 服务实现类
* </p>
*
* @author generator
* @since 2024-05-31
*/
@Service
public class AlmEarlyDeferralDetailServiceImpl extends ServiceImpl<AlmEarlyDeferralDetailMapper, AlmEarlyDeferralDetail> implements IAlmEarlyDeferralDetailService {
}

View File

@@ -0,0 +1,21 @@
package org.nl.wms.early_manage.service.early_deferral.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.nl.wms.early_manage.service.early_deferral.IAlmEarlyDeferralService;
import org.nl.wms.early_manage.service.early_deferral.dao.AlmEarlyDeferral;
import org.nl.wms.early_manage.service.early_deferral.dao.mapper.AlmEarlyDeferralMapper;
import org.springframework.stereotype.Service;
/**
* <p>
* 服务实现类
* </p>
*
* @author generator
* @since 2024-05-31
*/
@Service
public class AlmEarlyDeferralServiceImpl extends ServiceImpl<AlmEarlyDeferralMapper, AlmEarlyDeferral> implements IAlmEarlyDeferralService {
}

View File

@@ -6,6 +6,7 @@ import lombok.extern.slf4j.Slf4j;
import org.nl.common.publish.AbstraceListener;
import org.nl.common.utils.IdUtil;
import org.nl.wms.base_manage.vehicle.vehicleMater.service.IMdPbVehicleMaterService;
import org.nl.wms.early_manage.notification.NotificationFactory;
import org.nl.wms.early_manage.service.early_dtl.IAlmEarlyDtlService;
import org.nl.wms.early_manage.service.early_dtl.dao.AlmEarlyDtl;
import org.nl.wms.early_manage.service.early_inv.IAlmEarlyInvService;
@@ -62,7 +63,7 @@ public class EarlyEventListener extends AbstraceListener<EarlyEvent> {
almEarlyMsg.setStor_code(earlyInv.getStor_code());
almEarlyMsgService.save(almEarlyMsg);
//根据notice_type下发通知
System.out.println("下发通知");
NotificationFactory.getNotification(notice_type).send("");
}
}
}

View File

@@ -0,0 +1,74 @@
package org.nl.wms.early_manage.tasks;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.nl.common.utils.IdUtil;
import org.nl.wms.base_manage.vehicle.vehicleMater.service.IMdPbVehicleMaterService;
import org.nl.wms.base_manage.vehicle.vehicleMater.service.dao.MdPbVehicleMater;
import org.nl.wms.early_manage.notification.NotificationFactory;
import org.nl.wms.early_manage.service.early_deferral.IAlmEarlyDeferralDetailService;
import org.nl.wms.early_manage.service.early_deferral.IAlmEarlyDeferralService;
import org.nl.wms.early_manage.service.early_deferral.dao.AlmEarlyDeferral;
import org.nl.wms.early_manage.service.early_deferral.dao.AlmEarlyDeferralDetail;
import org.nl.wms.early_manage.service.early_msg.IAlmEarlyMsgService;
import org.nl.wms.early_manage.service.early_msg.dao.AlmEarlyMsg;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.stream.Collectors;
/**
* @Description TODO
* @Author Gengby
* @Date 2024/5/31
*/
@Component
public class AutoDeferralNotice {
@Autowired
private IAlmEarlyDeferralService almEarlyDeferralService;
@Autowired
private IAlmEarlyDeferralDetailService almEarlyDeferralDetailService;
@Autowired
private IMdPbVehicleMaterService mdPbVehicleMaterService;
@Autowired
private IAlmEarlyMsgService almEarlyMsgService;
public void run() {
LambdaQueryWrapper<AlmEarlyDeferral> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(AlmEarlyDeferral::getIs_used, "1");
List<AlmEarlyDeferral> list = almEarlyDeferralService.list(lambdaQueryWrapper);
for (AlmEarlyDeferral almEarlyDeferral : list) {
LambdaQueryWrapper<AlmEarlyDeferralDetail> lqw = new LambdaQueryWrapper<>();
lqw.eq(AlmEarlyDeferralDetail::getDeferral_id, almEarlyDeferral.getId());
List<AlmEarlyDeferralDetail> deferralDetails = almEarlyDeferralDetailService.list(lqw);
List<String> materialIds = deferralDetails.stream()
.map(detail -> detail.getMaterial_id())
.collect(Collectors.toList());
LambdaQueryWrapper<MdPbVehicleMater> mdPbVehicleMaterLambdaQueryWrapper = new LambdaQueryWrapper<>();
mdPbVehicleMaterLambdaQueryWrapper.in(MdPbVehicleMater::getMaterial_id, materialIds);
List<MdPbVehicleMater> mdPbVehicleMaters = mdPbVehicleMaterService.list(mdPbVehicleMaterLambdaQueryWrapper);
List<MdPbVehicleMater> filteredMdPbVehicleMaters = mdPbVehicleMaters.stream()
.filter(mater -> {
long daysBetween = DateUtil.betweenDay(DateUtil.parse(mater.getUpdate_time()), DateUtil.parse(DateUtil.now()), true);
return daysBetween > almEarlyDeferral.getStay_days();
})
.collect(Collectors.toList());
for (MdPbVehicleMater filteredMdPbVehicleMater : filteredMdPbVehicleMaters) {
AlmEarlyMsg almEarlyMsg = new AlmEarlyMsg();
almEarlyMsg.setId(IdUtil.getStringId());
almEarlyMsg.setEarly_type("2");
almEarlyMsg.setStor_code(almEarlyDeferral.getStor_code());
almEarlyMsg.setMaterial_id(filteredMdPbVehicleMater.getMaterial_id());
almEarlyMsg.setCreate_time(DateUtil.now());
almEarlyMsg.setQty(filteredMdPbVehicleMater.getQty().intValue());
almEarlyMsg.setCreate_time(DateUtil.now());
almEarlyMsg.setVehicle_code(filteredMdPbVehicleMater.getVehicle_code());
almEarlyMsg.setPcsn(filteredMdPbVehicleMater.getPcsn());
almEarlyMsgService.save(almEarlyMsg);
NotificationFactory.getNotification(almEarlyDeferral.getNotice_type()).send("");
}
}
}
}