Browse Source

物料基本信息变更记录展示实体类问题修复

master_hella_20240701
赵雪冰 1 year ago
parent
commit
ba0950958d
  1. 61
      win-framework/win-common/src/main/java/com/win/framework/common/util/object/ObjectUtils.java
  2. 4
      win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/mysql/trends/TrendsMapper.java
  3. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/InspectRequestMainController.java
  4. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectRequest/InspectRequestMainService.java
  5. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectRequest/InspectRequestMainServiceImpl.java
  6. 5
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itembasic/ItembasicServiceImpl.java
  7. 82
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptJob/PurchasereceiptJobMainServiceImpl.java

61
win-framework/win-common/src/main/java/com/win/framework/common/util/object/ObjectUtils.java

@ -5,6 +5,8 @@ import cn.hutool.core.util.ReflectUtil;
import java.lang.reflect.Field;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.function.Consumer;
/**
@ -60,4 +62,63 @@ public class ObjectUtils {
return Arrays.asList(array).contains(obj);
}
/**
* 实体类比较
* @param orgObj
* @param newObj
* @return
*/
public static Map<String, Object> compareEntities(Object orgObj, Object newObj) {
// 如果两个对象引用相同,则返回空Map
Map<String, Object> differentProperties = new HashMap<>();
if (orgObj == newObj) {
return differentProperties;
}
// 如果其中一个对象为空,则返回空Map
if (orgObj == null || newObj == null) {
return differentProperties;
}
// 获取两个对象的类
Class<?> class1 = orgObj.getClass();
Class<?> class2 = newObj.getClass();
// 如果两个对象的类不同,则返回空Map
if (!class1.equals(class2)) {
return new HashMap<>();
}
// 获取对象的所有字段
Field[] fields = class1.getDeclaredFields();
// 遍历字段进行比较
for (Field field : fields) {
try {
// 设置字段可访问
field.setAccessible(true);
// 获取字段的名称
String fieldName = field.getName();
// 获取字段的值
Object value1 = field.get(orgObj);
Object value2 = field.get(newObj);
// 如果有一个值为空,或者两个值不相等,则将该属性及其值存入Map
if(value1 == null && value2 == null){
continue;
}
if(value1 == null && value2 != null){
differentProperties.put(fieldName,"null 变更为"+value2);
}
if(value1 != null && value2 == null){
differentProperties.put(fieldName,value1+"变更为null");
}
if (!value1.equals(value2)) {
differentProperties.put(fieldName, value1+"变更为"+value2);
}
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
// 返回包含不同值属性的Map
return differentProperties;
}
}

4
win-module-infra/win-module-infra-biz/src/main/java/com/win/module/infra/dal/mysql/trends/TrendsMapper.java

@ -24,7 +24,7 @@ public interface TrendsMapper extends BaseMapperX<TrendsDO> {
.eqIfPresent(TrendsDO::getTableId, reqVO.getTableId())
.eqIfPresent(TrendsDO::getType, reqVO.getType())
.betweenIfPresent(TrendsDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(TrendsDO::getId));
.orderByDesc(TrendsDO::getCreateTime));
}
default List<TrendsDO> selectList(TrendsExportReqVO reqVO) {
@ -33,7 +33,7 @@ public interface TrendsMapper extends BaseMapperX<TrendsDO> {
.eqIfPresent(TrendsDO::getTableId, reqVO.getTableId())
.eqIfPresent(TrendsDO::getType, reqVO.getType())
.betweenIfPresent(TrendsDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(TrendsDO::getId));
.orderByDesc(TrendsDO::getCreateTime));
}
}

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/inspectRequest/InspectRequestMainController.java

@ -56,7 +56,7 @@ public class InspectRequestMainController {
@PostMapping("/create")
@Operation(summary = "创建检验申请主")
@PreAuthorize("@ss.hasPermission('wms:inspect-request-main:create')")
public CommonResult<Long> createInspectRequestMain(@Valid @RequestBody InspectRequestMainCreateReqVO createReqVO) {
public CommonResult<String> createInspectRequestMain(@Valid @RequestBody InspectRequestMainCreateReqVO createReqVO) {
return success(inspectRequestMainService.createInspectRequestMain(createReqVO));
}

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectRequest/InspectRequestMainService.java

@ -22,7 +22,7 @@ public interface InspectRequestMainService {
* @param createReqVO 创建信息
* @return 编号
*/
Long createInspectRequestMain(@Valid InspectRequestMainCreateReqVO createReqVO);
String createInspectRequestMain(@Valid InspectRequestMainCreateReqVO createReqVO);
/**
* 更新检验申请主

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectRequest/InspectRequestMainServiceImpl.java

@ -112,7 +112,7 @@ public class InspectRequestMainServiceImpl implements InspectRequestMainService
@Override
@Transactional
public Long createInspectRequestMain(InspectRequestMainCreateReqVO createReqVO) {
public String createInspectRequestMain(InspectRequestMainCreateReqVO createReqVO) {
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("InspectRequest");
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("InspectRequest","到货检验申请");
InspectRequestMainDO mainDO = this.validatorMain(createReqVO, businesstypeDO, requestsettingDO);
@ -142,7 +142,7 @@ public class InspectRequestMainServiceImpl implements InspectRequestMainService
this.generateJob(mainDO, subDOList);
}
trendsApi.createTrends(requestsettingDO.getId(), "InspectRequest", "增加了到货校验申请", TrendsTypeEnum.CREATE);
return mainDO.getId();
return mainDO.getNumber();
}
@Override

5
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itembasic/ItembasicServiceImpl.java

@ -7,6 +7,7 @@ import com.google.common.annotations.VisibleForTesting;
import com.win.framework.common.exception.ServiceException;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult;
import com.win.framework.common.util.object.ObjectUtils;
import com.win.framework.datapermission.core.util.DataPermissionUtils;
import com.win.framework.mybatis.core.util.QueryWrapperUtils;
import com.win.module.infra.api.trends.TrendsApi;
@ -31,6 +32,7 @@ import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.win.module.wms.enums.ErrorCodeConstants.*;
@ -71,8 +73,9 @@ public class ItembasicServiceImpl implements ItembasicService {
, updateReqVO.getValidityDays(), updateReqVO.getAvailable());
// 更新
ItembasicDO itembasic = this.getItembasic(updateReqVO.getId());
trendsApi.createTrends(updateReqVO.getId(), "basicItembasic", itembasic.toString(), TrendsTypeEnum.UPDATE);
ItembasicDO updateObj = ItembasicConvert.INSTANCE.convert(updateReqVO);
Map<String, Object> difMap = ObjectUtils.compareEntities(itembasic,updateObj);
trendsApi.createTrends(updateReqVO.getId(), "basicItembasic", difMap.toString(), TrendsTypeEnum.UPDATE);
itembasicMapper.updateById(updateObj);
}

82
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptJob/PurchasereceiptJobMainServiceImpl.java

@ -392,7 +392,6 @@ public class PurchasereceiptJobMainServiceImpl implements PurchasereceiptJobMain
if(!purchaseshortageDetailDOList.isEmpty()) {
purchaseshortageDetailMapper.insertBatch(purchaseshortageDetailDOList);
}
//先判断每个物品是否免检
List<String> dedpulicationItem = new ArrayList<>(itemCodeSet);
//是否是免检物品Map
@ -409,7 +408,6 @@ public class PurchasereceiptJobMainServiceImpl implements PurchasereceiptJobMain
}
}
}
//增加库存事务
transactionService.createTransaction(transactionCreateReqVOList);
List<String> typeList = new ArrayList<>();
@ -427,8 +425,31 @@ public class PurchasereceiptJobMainServiceImpl implements PurchasereceiptJobMain
}
//移除预计入
expectinService.deleteExpectinByJobNumber(purchasereceiptJobMainDO.getNumber());
//变更记录
trendsApi.createTrends(purchasereceiptJobMainDO.getId(), "purchasereceiptJob", "执行了采购收货任务", TrendsTypeEnum.UPDATE);
//消息通知
NotifySendSingleToRoleReqDTO notifySendSingleToRoleReqDTO = new NotifySendSingleToRoleReqDTO();
notifySendSingleToRoleReqDTO.setRoleId(1L);
notifySendSingleToRoleReqDTO.setTemplateCode("createJob");
Map<String, Object> templateParams = new HashMap<>();
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String dateTime = LocalDateTime.now().format(fmt);
templateParams.put("name","采购收货任务");
templateParams.put("dateTime", dateTime);
templateParams.put("number", purchasereceiptJobMainDO.getNumber());
notifySendSingleToRoleReqDTO.setTemplateParams(templateParams);
notifyMessageSendApi.sendMessageToRole(notifySendSingleToRoleReqDTO);
// 创建检验申请
this.createInspectRequest(purchasereceiptRecordMainDO, purchasereceiptRecordDetailDOList);
// 创建上架申请
this.createPutawayRequest(purchasereceiptRecordMainDO, purchasereceiptRecordDetailDOList, exemptSet);
return number;
}
//全检,抽检,挑选---检验申请 // 采购收货记录 生成后 创建 到货检验申请
public String createInspectRequest(PurchasereceiptRecordMainDO purchasereceiptRecordMainDO, List<PurchasereceiptRecordDetailDO> purchasereceiptRecordDetailDOList) {
//全检,抽检,挑选---检验申请 // 采购收货记录 生成后 创建 到货检验申请
SwitchDO switchDO1 = switchService.selectSwitchExist("CreateInspectRequestAfterPurchaseReceiptRecordCreated");
//采购收货记录 生成后 创建 到货检验申请
// 配置是否是TRUE
@ -436,17 +457,19 @@ public class PurchasereceiptJobMainServiceImpl implements PurchasereceiptJobMain
//按物料号和批次分组
Map<String, List<PurchasereceiptRecordDetailDO>> listMap = new HashMap<>();
for(PurchasereceiptRecordDetailDO purchasereceiptRecordDetailDO : purchasereceiptRecordDetailDOList) {
// 不是免检的物品
if(!exemptSet.contains(purchasereceiptRecordDetailDO.getItemCode())) {
//采购收货记录 生成后免检物料 创建 上架申请
String key = purchasereceiptRecordDetailDO.getItemCode() + "_" + purchasereceiptRecordDetailDO.getFromBatch();
List<PurchasereceiptRecordDetailDO> list = listMap.get(key);
if(list == null) {
list = new ArrayList<>();
}
list.add(purchasereceiptRecordDetailDO);
listMap.put(key, list);
RuleRespVO ruleRespVO = ruleService.inspect(purchasereceiptRecordMainDO.getSupplierCode(), purchasereceiptRecordDetailDO.getItemCode());
JSONObject jsonObject = JSONUtil.parseObj(ruleRespVO.getConfiguration());
if("EXEMPT".equals(jsonObject.getStr("InspectType"))) {
//如果是免检
continue;
}
String key = purchasereceiptRecordDetailDO.getItemCode() + "_" + purchasereceiptRecordDetailDO.getFromBatch();
List<PurchasereceiptRecordDetailDO> list = listMap.get(key);
if(list == null) {
list = new ArrayList<>();
}
list.add(purchasereceiptRecordDetailDO);
listMap.put(key, list);
}
//组装到货检验数据
for(String mapKey : listMap.keySet()) {
@ -457,7 +480,7 @@ public class PurchasereceiptJobMainServiceImpl implements PurchasereceiptJobMain
InspectRequestMainCreateReqVO inspectRequestMainCreateReqVO = new InspectRequestMainCreateReqVO();
String inspectRecordNumber = serialNumberApi.generateCode(RuleCodeEnum.INSPECT_RECORD.getCode());
inspectRequestMainCreateReqVO.setNumber(inspectRecordNumber);
inspectRequestMainCreateReqVO.setPurchaseReceiptRecordNumber(number);
inspectRequestMainCreateReqVO.setPurchaseReceiptRecordNumber(purchasereceiptRecordMainDO.getNumber());
inspectRequestMainCreateReqVO.setSupplierCode(purchasereceiptRecordMainDO.getSupplierCode());
inspectRequestMainCreateReqVO.setItemCode(recordDetailDO.getItemCode());
inspectRequestMainCreateReqVO.setBatch(recordDetailDO.getToBatch());
@ -488,10 +511,14 @@ public class PurchasereceiptJobMainServiceImpl implements PurchasereceiptJobMain
}
inspectRequestMainCreateReqVO.setSubList(inspectRequestDetailCreateReqVOList);
//创建检验申请
inspectRequestMainService.createInspectRequestMain(inspectRequestMainCreateReqVO);
String inspectNumber = inspectRequestMainService.createInspectRequestMain(inspectRequestMainCreateReqVO);
return inspectNumber;
}
}
return null;
}
public String createPutawayRequest(PurchasereceiptRecordMainDO purchasereceiptRecordMainDO, List<PurchasereceiptRecordDetailDO> purchasereceiptRecordDetailDOList, Set<String> exemptSet) {
//免检--上架申请 (采购收货记录 生成后免检物品 创建 上架申请)
SwitchDO switchDO2 = switchService.selectSwitchExist("ExemptItemCreatePutawayRequestAfterPurchaseReceiptRecordCreated");
//采购收货记录 生成后免检物料 创建 上架申请
@ -503,7 +530,10 @@ public class PurchasereceiptJobMainServiceImpl implements PurchasereceiptJobMain
putawayRequestMainCreateReqVO.setToWarehouseCode(null);
List<PutawayRequestDetailCreateReqVO> putawayRequestDetailCreateReqVOList = new ArrayList<>();
for(PurchasereceiptRecordDetailDO purchasereceiptRecordDetailDO : purchasereceiptRecordDetailDOList) {
if(exemptSet.contains(purchasereceiptRecordDetailDO.getItemCode())){
RuleRespVO ruleRespVO = ruleService.inspect(purchasereceiptRecordMainDO.getSupplierCode(), purchasereceiptRecordDetailDO.getItemCode());
JSONObject jsonObject = JSONUtil.parseObj(ruleRespVO.getConfiguration());
if("EXEMPT".equals(jsonObject.getStr("InspectType"))) {
//如果是免检
PutawayRequestDetailCreateReqVO putawayRequestDetailCreateReqVO = new PutawayRequestDetailCreateReqVO();
BeanUtils.copyProperties(purchasereceiptRecordDetailDO, putawayRequestDetailCreateReqVO);
putawayRequestDetailCreateReqVO.setFromOwnerCode(purchasereceiptRecordDetailDO.getToOwnerCode());
@ -522,26 +552,14 @@ public class PurchasereceiptJobMainServiceImpl implements PurchasereceiptJobMain
putawayRequestMainCreateReqVO.setId(null).setCreator(null).setCreateTime(null).setUpdater(null).setUpdateTime(null);
putawayRequestMainCreateReqVO.setConcurrencyStamp(1);
putawayRequestMainCreateReqVO.setSubList(putawayRequestDetailCreateReqVOList);
putawayRequestMainService.createPutawayRequestMain(putawayRequestMainCreateReqVO);
String putawayNumber = putawayRequestMainService.createPutawayRequestMain(putawayRequestMainCreateReqVO);
return putawayNumber;
}
}
//变更记录
trendsApi.createTrends(purchasereceiptJobMainDO.getId(), "purchasereceiptJob", "执行了采购收货任务", TrendsTypeEnum.UPDATE);
//消息通知
NotifySendSingleToRoleReqDTO notifySendSingleToRoleReqDTO = new NotifySendSingleToRoleReqDTO();
notifySendSingleToRoleReqDTO.setRoleId(1L);
notifySendSingleToRoleReqDTO.setTemplateCode("createJob");
Map<String, Object> templateParams = new HashMap<>();
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String dateTime = LocalDateTime.now().format(fmt);
templateParams.put("name","采购收货任务");
templateParams.put("dateTime", dateTime);
templateParams.put("number", purchasereceiptJobMainDO.getNumber());
notifySendSingleToRoleReqDTO.setTemplateParams(templateParams);
notifyMessageSendApi.sendMessageToRole(notifySendSingleToRoleReqDTO);
return number;
return null;
}
@Override
public Long getPurchasereceiptJobCount() {
QueryWrapper<PurchasereceiptJobMainDO> queryWrapper = new QueryWrapper<>();

Loading…
Cancel
Save