diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/common/domain/handler/IsoToLocalDateTimeStringDeserializer.java b/nladmin-system/nlsso-server/src/main/java/org/nl/common/domain/handler/IsoToLocalDateTimeStringDeserializer.java new file mode 100644 index 0000000..83eadb7 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/common/domain/handler/IsoToLocalDateTimeStringDeserializer.java @@ -0,0 +1,33 @@ +package org.nl.common.domain.handler; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonDeserializer; + +import java.io.IOException; +import java.time.Instant; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; + +/** + * 时区转换 + * + * @author gbx + * @since 2025-06-27 + */ +public class IsoToLocalDateTimeStringDeserializer extends JsonDeserializer { + private static final DateTimeFormatter FORMATTER = + DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.of("Asia/Shanghai")); + + @Override + public String deserialize(JsonParser p, DeserializationContext ctxt) + throws IOException { + String isoString = p.getText(); + try { + Instant instant = Instant.parse(isoString); + return FORMATTER.format(instant); + } catch (Exception e) { + return isoString; + } + } +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/common/domain/query/PageQuery.java b/nladmin-system/nlsso-server/src/main/java/org/nl/common/domain/query/PageQuery.java index 300991c..6d45e16 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/common/domain/query/PageQuery.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/common/domain/query/PageQuery.java @@ -63,25 +63,45 @@ public class PageQuery implements Serializable { Page page = new Page<>(pageNum, pageSize); if (StringUtils.isNotEmpty(sort)){ String[] split = sort.split(","); - for (int i = 0; i < (split.length & ~1); i=i+2) { + for (int i = 0; i < (split.length & ~1); i = i + 2) { String col = split[i]; OrderItem item = new OrderItem(); item.setColumn(col); - item.setAsc(split[i+1].toLowerCase(Locale.ROOT).equals("asc")); + item.setAsc(split[i + 1].toLowerCase(Locale.ROOT).equals("asc")); page.addOrder(item); } } return page; } - public Page build(Class r) { + public static void trimStringFields(Object obj) { + if (obj == null) { + return; + } + Field[] fields = obj.getClass().getDeclaredFields(); + for (Field field : fields) { + if (field.getType() == String.class) { + field.setAccessible(true); + try { + String value = (String) field.get(obj); + if (value != null) { + field.set(obj, value.trim().toUpperCase()); + } + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } + } + } + + public Page build(Class r) { Integer pageNum = ObjectUtil.defaultIfNull(getPage(), DEFAULT_PAGE_NUM); Integer pageSize = ObjectUtil.defaultIfNull(getSize(), DEFAULT_PAGE_SIZE); if (pageNum <= 0) { pageNum = DEFAULT_PAGE_NUM; } Page page = new Page<>(pageNum, pageSize); - if (StringUtils.isNotEmpty(sort)){ + if (StringUtils.isNotEmpty(sort)) { String[] split = sort.split(","); for (int i = 0; i < (split.length & ~1); i=i+2) { String col = split[i]; diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/DateUtil.java b/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/DateUtil.java index a80fd28..2316c83 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/DateUtil.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/DateUtil.java @@ -157,4 +157,17 @@ public class DateUtil { public static LocalDateTime parseLocalDateTimeFormatyMdHms(String localDateTime) { return LocalDateTime.from(DFY_MD_HMS.parse(localDateTime)); } + + /** + * 字符串转 yyyy-MM-dd + * + * @param localDateTime / + * @return / + */ + public static String parseLocalDateTimeFormatYmd(String localDateTime) { + if (localDateTime == null || localDateTime.length() < 10) { + return localDateTime; + } + return localDateTime.substring(0, 10); + } } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/form_data/controller/PmFormDataController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/form_data/controller/PmFormDataController.java index 41ec608..5cd7d85 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/form_data/controller/PmFormDataController.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/form_data/controller/PmFormDataController.java @@ -2,16 +2,21 @@ package org.nl.wms.pm_manage.form_data.controller; import cn.dev33.satoken.annotation.SaIgnore; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.parser.Feature; import com.alibaba.fastjson.serializer.SerializerFeature; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import org.apache.commons.lang3.ObjectUtils; import org.nl.common.base.TableDataInfo; import org.nl.common.domain.query.PageQuery; +import org.nl.common.exception.BadRequestException; import org.nl.common.logging.annotation.Log; import org.nl.common.utils.SecurityUtils; +import org.nl.wms.basedata_manage.service.dao.BsrealStorattr; +import org.nl.wms.basedata_manage.service.dao.MdPbMeasureunit; import org.nl.wms.pm_manage.form_data.service.IPmFormDataService; import org.nl.wms.pm_manage.form_data.service.dao.dao.PmFormData; import org.nl.wms.pm_manage.form_data.service.dao.dto.PmFormDataParam; @@ -67,17 +72,8 @@ public class PmFormDataController { @PutMapping() @Log("修改单据结构") @Transactional(rollbackFor = Exception.class) - public ResponseEntity update(@RequestBody JSONObject param) { - //逻辑判断:如果有数据了则不允许修改 - String s = param.toString(SerializerFeature.SortField); - PmFormData pmFormData = JSONObject.parseObject(s, PmFormData.class, Feature.OrderedField); - //生产入库单存在报工数超过合格数,需要人工修改正确报工数=合格数,进行手动回传 - String id = pmFormData.getId(); - PmFormData entity = iPmFormDataService.getById(id); - entity.setRemark(pmFormData.getRemark()); - entity.setUpdate_name(SecurityUtils.getCurrentUserId()); - entity.setUpdate_time(DateUtil.now()); - iPmFormDataService.updateById(entity); + public ResponseEntity update(@RequestBody PmFormDataParam params) { + iPmFormDataService.update(params); return new ResponseEntity<>(HttpStatus.OK); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/form_data/service/IPmFormDataService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/form_data/service/IPmFormDataService.java index 6f62c21..5b87193 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/form_data/service/IPmFormDataService.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/form_data/service/IPmFormDataService.java @@ -29,6 +29,14 @@ public interface IPmFormDataService extends IService { */ void create(PmFormDataParam params); + + /** + * 编辑 + * @param params 对象实体 + */ + void update(PmFormDataParam params); + + List getByType(String from_type); Object queryAll(FormDataQuery query, PageQuery page); diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/dao/PmFormData.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/dao/PmFormData.java index cd4e92d..ce008f9 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/dao/PmFormData.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/dao/PmFormData.java @@ -2,8 +2,10 @@ package org.nl.wms.pm_manage.form_data.service.dao.dao; import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import lombok.Data; import lombok.EqualsAndHashCode; +import org.nl.common.domain.handler.IsoToLocalDateTimeStringDeserializer; import java.io.Serializable; import java.math.BigDecimal; @@ -29,7 +31,14 @@ public class PmFormData extends Model { */ @TableId(value = "id", type = IdType.NONE) private String id; - + /** + * 仓库编号 + */ + private String stor_id; + /** + * 仓库信息 + */ + private String stor_name; /** * 编号 diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/dto/PmFormDataParam.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/dto/PmFormDataParam.java index 4aadf1e..3e38820 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/dto/PmFormDataParam.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/dto/PmFormDataParam.java @@ -1,7 +1,9 @@ package org.nl.wms.pm_manage.form_data.service.dao.dto; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import lombok.*; +import org.nl.common.domain.handler.IsoToLocalDateTimeStringDeserializer; import org.nl.common.domain.query.BaseQuery; import org.nl.wms.pm_manage.form_data.service.dao.dao.PmFormData; @@ -32,6 +34,14 @@ public class PmFormDataParam extends BaseQuery { * 单据状态 */ private String status; + /** + * 仓库编号 + */ + private String stor_id; + /** + * 仓库信息 + */ + private String stor_name; /** * 单据类型 */ @@ -39,6 +49,7 @@ public class PmFormDataParam extends BaseQuery { /** * 源单单据日期 */ + @JsonDeserialize(using = IsoToLocalDateTimeStringDeserializer.class) private String source_form_date; /** * 物料code diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/mapper/xml/PmFormDataMapper.xml b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/mapper/xml/PmFormDataMapper.xml index 5a9a1d3..762092b 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/mapper/xml/PmFormDataMapper.xml +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/mapper/xml/PmFormDataMapper.xml @@ -15,6 +15,8 @@ + + @@ -128,17 +130,15 @@ and code LIKE '%${query.code}' - - and source_form_date = #{query.bill_code} - - - and md_me_materialbase.material_code like '%${query.mater}%' + + and (md_me_materialbase.material_code LIKE '%${query.material_code}%' + or md_me_materialbase.material_name LIKE '%${query.material_code}%') - and pm_form_data.create_time >= #{query.start_time} + and pm_form_data.source_form_date >= #{query.start_time} - and #{query.end_time} >= pm_form_data.create_time + and #{query.end_time} >= pm_form_data.source_form_date and pm_form_data.status IN diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/form_data/service/dto/FormDataQuery.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/form_data/service/dto/FormDataQuery.java index 88acdc0..1e7f931 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/form_data/service/dto/FormDataQuery.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/form_data/service/dto/FormDataQuery.java @@ -21,11 +21,10 @@ public class FormDataQuery extends BaseQuery { private String search; private String pcsn; private String parent_id; - private String mater; + private String material_code; private String[] status; private String start_time; private String end_time; - private Map form_query; @Override diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/form_data/service/dto/PmFormDataDto.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/form_data/service/dto/PmFormDataDto.java index 445f41d..e46a90f 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/form_data/service/dto/PmFormDataDto.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/form_data/service/dto/PmFormDataDto.java @@ -18,170 +18,121 @@ import java.util.List; @Data public class PmFormDataDto implements Serializable { - private static final long serialVersionUID = 1L; - - /** - * 业务单据单据id - */ - private String id; - /** - * 单据编码 - */ - private String code; - /** - * 对应流程实例id - */ - private String proc_inst_id; + private static final long serialVersionUID = -7739291296662381396L; /** - * 业务单据编号 + * 主键 */ - private String source_form_id; + private String id; /** - * 业务单据编号 + * 编号 */ - private String source_form_type; - + private String code; /** - * 业务单据日期 + * 单据状态 */ - private String source_form_date; - + private String status; /** * 单据类型 */ private String form_type; - - /** - * 业务单据状态 - */ - private String status; - - /** - * 业务单据状态 - */ - private String bill_status; - /** - * 物料状态 + * 源单单据日期 */ - private String material_status; - /** - * 业务单据状态 - */ - private String remark; - - /** - * 创建id - */ - private String create_time; - - /** - * 创建id - */ - private String create_name; - - /** - * 物料id - */ - private String material_id; - /** - * 物料name - */ - private String material_name; + private String source_form_date; /** * 物料code */ private String material_code; + /** - * 物料spec + * 物料规格 */ private String material_spec; /** - * 物料单重 + * 物料 */ - private String net_weight; - /** - * 单据编号 - */ - private String billNo; + private String material_name; /** - * 源单编号 + * 净重 */ - private String srcBillNo; + private String net_weight; /** - * 条码 - */ - private String bar_code; - /** - * 数量 - */ - private BigDecimal qty; - /** - * 冻结数量 + * 批次号 */ - private BigDecimal frozen_qty; - + private String pcsn; /** - * 库存数量 + * 计划数量 */ - private BigDecimal sto_qty; + private BigDecimal plan_qty; /** * 数量 */ - private BigDecimal plan_qty; + private BigDecimal qty; /** - * 已分配数量 + * 分配数量 */ private BigDecimal assign_qty; /** * 实际数量 */ private BigDecimal actual_qty; - /** - * 单位 + * 单据累计数量 + */ + private BigDecimal total_qty; + /** + * 数量单位 */ private String unit_id; /** * 单位名称 */ private String unit_name; + /** + * 载具信息 + */ + private String vehicle_code; /** - * 批次号 + * 仓库 */ - private String pcsn; + private String stor_name; /** - * 批次号 + * 载具组盘id */ - private String product_area; - + private String vehicle_id; /** - * 是否删除 + * 自定义表单字段 */ - private String is_delete; + private String form_data; /** - * 载具 + * 创建id */ - private String vehicle_code; + private String create_time; /** - * 载具组盘id + * 创建id */ - private String vehicle_id; + private String create_name; /** - * 出库单据号 + * 修改时间 */ - private String prd_ppbom_no; - + private String update_time; /** - * 自定义表单字段 + * 修改人 */ - private JSONObject form_data; - + private String update_name; + /** + * 说明 + */ + private String remark; + /** + * 是否完结 + */ + private Integer is_finish; /** * 关联上级表单id diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/form_data/service/impl/PmFormDataServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/form_data/service/impl/PmFormDataServiceImpl.java index 5fd10a2..4a418b8 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/form_data/service/impl/PmFormDataServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/form_data/service/impl/PmFormDataServiceImpl.java @@ -2,6 +2,7 @@ package org.nl.wms.pm_manage.form_data.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.pagehelper.Page; @@ -11,11 +12,14 @@ import org.apache.commons.lang3.StringUtils; import org.nl.common.base.TableDataInfo; import org.nl.common.domain.query.PageQuery; import org.nl.common.exception.BadRequestException; +import org.nl.common.utils.CodeUtil; import org.nl.common.utils.CopyUtil; import org.nl.common.utils.IdUtil; import org.nl.common.utils.SecurityUtils; -import org.nl.wms.basedata_manage.service.IMdMeMaterialbaseService; -import org.nl.wms.basedata_manage.service.IStructattrService; +import org.nl.wms.basedata_manage.service.IBsrealStorattrService; +import org.nl.wms.basedata_manage.service.IMdPbMeasureunitService; +import org.nl.wms.basedata_manage.service.dao.BsrealStorattr; +import org.nl.wms.basedata_manage.service.dao.MdPbMeasureunit; import org.nl.wms.pm_manage.form_data.service.IPmFormDataService; import org.nl.wms.pm_manage.form_data.service.dao.dao.PmFormData; import org.nl.wms.pm_manage.form_data.service.dao.dto.PmFormDataParam; @@ -23,7 +27,6 @@ import org.nl.wms.pm_manage.form_data.service.dao.mapper.PmFormDataMapper; import org.nl.wms.pm_manage.form_data.service.dto.FormDataQuery; import org.nl.wms.pm_manage.form_data.service.dto.PmFormDataDto; import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; @@ -36,6 +39,8 @@ import java.util.List; import java.util.Map; import java.util.stream.Collectors; +import static org.nl.common.domain.query.PageQuery.trimStringFields; + /** *

* 表单信息表 服务实现类 @@ -57,15 +62,13 @@ import java.util.stream.Collectors; @Slf4j public class PmFormDataServiceImpl extends ServiceImpl implements IPmFormDataService { - @Autowired - private IMdMeMaterialbaseService iMdMeMaterialbaseService; - @Resource private PmFormDataMapper pmFormDataMapper; - @Autowired - private IStructattrService iStIvtStructattrService; - + @Resource + private IMdPbMeasureunitService iMdPbMeasureunitService; + @Resource + private IBsrealStorattrService iBsrealStorattrService; @Override public Integer syncFormData(String form_type, String dataString) { @@ -82,13 +85,44 @@ public class PmFormDataServiceImpl extends ServiceImpl().eq(MdPbMeasureunit::getMeasure_unit_id, params.getUnit_id())); + if (ObjectUtil.isEmpty(mdPbMeasureunit)) { + throw new BadRequestException("没有该计量单位信息"); + } + BsrealStorattr bsrealStorattr = iBsrealStorattrService.findById(params.getStor_id()); + if (ObjectUtil.isEmpty(bsrealStorattr)) { + throw new BadRequestException("没有该仓库信息"); + } + params.setStor_name(bsrealStorattr.getStor_name()); + params.setUnit_name(mdPbMeasureunit.getUnit_name()); + pmFormDataMapper.insert(getBasicInfo(params, true)); + } - - - pmFormDataMapper.insert(getBasicInfo(params, true)); + /** + * 编辑 + * + * @param params 对象实体 + */ + @Override + public void update(PmFormDataParam params) { + params.setSource_form_date(org.nl.common.utils.DateUtil.parseLocalDateTimeFormatYmd(params.getSource_form_date())); + MdPbMeasureunit mdPbMeasureunit = iMdPbMeasureunitService.getOne(new LambdaQueryWrapper().eq(MdPbMeasureunit::getMeasure_unit_id, params.getUnit_id())); + if (ObjectUtil.isEmpty(mdPbMeasureunit)) { + throw new BadRequestException("没有该计量单位信息"); + } + BsrealStorattr bsrealStorattr = iBsrealStorattrService.findById(params.getStor_id()); + if (ObjectUtil.isEmpty(bsrealStorattr)) { + throw new BadRequestException("没有该仓库信息"); + } + params.setStor_name(bsrealStorattr.getStor_name()); + params.setUnit_name(mdPbMeasureunit.getUnit_name()); + pmFormDataMapper.updateById(getBasicInfo(params, false)); } + @Override public Object queryAll(FormDataQuery query, PageQuery pageQuery) { Page page = PageHelper.startPage(pageQuery.getPage() + 1, pageQuery.getSize()); @@ -121,21 +155,8 @@ public class PmFormDataServiceImpl extends ServiceImpl queryTree(FormDataQuery query, PageQuery pageQuery) { Page page = PageHelper.startPage(pageQuery.getPage() + 1, pageQuery.getSize()); page.setOrderBy("id DESC"); - if (ObjectUtil.isNotEmpty(query.getMater()) || ObjectUtil.isNotEmpty(query.getPcsn()) || ObjectUtil.isNotEmpty(query.getBill_code())) { - if (ObjectUtil.isNotEmpty(query.getPcsn())) { - query.setPcsn(query.getPcsn().trim()); - } - if (ObjectUtil.isNotEmpty(query.getMater())) { - query.setMater(query.getMater().trim()); - } - if (ObjectUtil.isNotEmpty(query.getBill_code())) { - query.setBill_code(query.getBill_code().trim()); - } - } + trimStringFields(query); List pmFormDataList = this.baseMapper.queryTree2(query); - if (ObjectUtil.isNotEmpty(pmFormDataList)) { - handleFormDataList(pmFormDataList, query); - } com.baomidou.mybatisplus.extension.plugins.pagination.Page dtoPage = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(page.getPages(), page.getPageSize(), page.getTotal()); dtoPage.setRecords(pmFormDataList); return dtoPage; @@ -150,13 +171,9 @@ public class PmFormDataServiceImpl extends ServiceImpl> childMap = childs.stream().collect(Collectors.groupingBy(PmFormDataDto::getParent_id)); for (PmFormDataDto dataDto : pmFormDataDtos) { - String productArea = dataDto.getForm_data().getString("product_area"); - dataDto.setProduct_area(productArea); List children = childMap.get(dataDto.getId()); if (children != null) { for (PmFormDataDto child : children) { - String childProductArea = child.getForm_data().getString("product_area"); - child.setProduct_area(childProductArea); if (child.getPlan_qty() != null && child.getAssign_qty().compareTo(BigDecimal.ZERO) == 0) { BigDecimal total = child.getPlan_qty().subtract(child.getAssign_qty().add(child.getActual_qty() == null ? BigDecimal.ZERO : child.getActual_qty())); child.setQty(total.compareTo(BigDecimal.ZERO) > 0 ? total : BigDecimal.ZERO); @@ -165,13 +182,6 @@ public class PmFormDataServiceImpl extends ServiceImpl 备        注: + + +