及时库存排序查询,复核添加尺寸字段,物料导入提示错误
This commit is contained in:
+28
-10
@@ -473,18 +473,36 @@ public class MaterialBaseInfoApplicationService {
|
||||
fillClassifyTypeAndUnit(row);
|
||||
|
||||
Object result = systemServiceFeign.getPackList(null, row.getPackName(), row.getOrganizationId());
|
||||
if (result == null) {
|
||||
errors.append("第").append(rowNum).append("行:包装规格查询无返回,请稍后重试或检查系统服务;");
|
||||
continue;
|
||||
}
|
||||
Map<String, Object> resultMap = JSON.parseObject(JSONObject.toJSONString(result), new TypeReference<Map<String, Object>>() {});
|
||||
List<Map<String, Object>> rowsPack = extractTableDataRows(resultMap);
|
||||
Map<String, Object> stringObjectMap = rowsPack.get(0);
|
||||
if (stringObjectMap != null){
|
||||
String packCode = stringObjectMap.get("packCode") == null ? "" : String.valueOf(stringObjectMap.get("packCode"));
|
||||
row.setPackCode(packCode);
|
||||
String packId = stringObjectMap.get("packId") == null ? "" : String.valueOf(stringObjectMap.get("packId"));
|
||||
row.setPackId(Long.valueOf(packId));
|
||||
String unitName = stringObjectMap.get("unitName") == null ? "" : String.valueOf(stringObjectMap.get("unitName"));
|
||||
row.setUnitCode("EA");
|
||||
row.setUnitName(unitName);
|
||||
if (CollectionUtils.isEmpty(rowsPack)) {
|
||||
if (StringUtils.isNotBlank(row.getPackName())) {
|
||||
errors.append("第").append(rowNum).append("行:包装规格「").append(row.getPackName()).append("」不存在或未在系统中维护,请先在主数据维护该包装;");
|
||||
} else {
|
||||
errors.append("第").append(rowNum).append("行:包装规格未填写,或系统中无匹配的包装数据,请填写正确的包装规格名称;");
|
||||
}
|
||||
continue;
|
||||
}
|
||||
Map<String, Object> stringObjectMap = rowsPack.get(0);
|
||||
if (stringObjectMap == null) {
|
||||
errors.append("第").append(rowNum).append("行:包装规格查询结果为空,请检查包装主数据;");
|
||||
continue;
|
||||
}
|
||||
String packCode = stringObjectMap.get("packCode") == null ? "" : String.valueOf(stringObjectMap.get("packCode"));
|
||||
row.setPackCode(packCode);
|
||||
String packId = stringObjectMap.get("packId") == null ? "" : String.valueOf(stringObjectMap.get("packId"));
|
||||
if (StringUtils.isBlank(packId) || !StringUtils.isNumeric(packId)) {
|
||||
errors.append("第").append(rowNum).append("行:包装规格数据异常(缺少包装ID),请检查系统包装主数据;");
|
||||
continue;
|
||||
}
|
||||
row.setPackId(Long.valueOf(packId));
|
||||
String unitName = stringObjectMap.get("unitName") == null ? "" : String.valueOf(stringObjectMap.get("unitName"));
|
||||
row.setUnitCode("EA");
|
||||
row.setUnitName(unitName);
|
||||
|
||||
MaterialBaseInfoDO materialBaseInfoDO = new MaterialBaseInfoDO();
|
||||
BeanUtils.copyProperties(row, materialBaseInfoDO);
|
||||
@@ -496,7 +514,7 @@ public class MaterialBaseInfoApplicationService {
|
||||
Long materialBaseInfoId = materialBaseInfoDO.getMaterialBaseInfoId();
|
||||
|
||||
//商品规则批次
|
||||
if (StringUtils.isNotBlank(row.getBatchRuleNameImport())){
|
||||
if (StringUtils.isNotBlank(row.getBatchRuleNameImport())) {
|
||||
MaterialGoodsRuleDO materialGoodsRuleDO = new MaterialGoodsRuleDO();
|
||||
Object batchListByName = systemServiceFeign.getBatchListByName(row.getBatchRuleNameImport(), row.getOrganizationId());
|
||||
Map<String, Object> batchListByNameMap = JSON.parseObject(JSONObject.toJSONString(batchListByName), new TypeReference<Map<String, Object>>() {});
|
||||
|
||||
+4
@@ -210,6 +210,7 @@ public class ReviewOrderDomainService {
|
||||
d.setMaterialCode(line.getMaterialCode());
|
||||
d.setMaterialName(line.getMaterialName());
|
||||
d.setBarCode(line.getBarCode());
|
||||
d.setSize(line.getSize());
|
||||
d.setUnitCode(line.getUnitCode());
|
||||
d.setUnitName(line.getUnitName());
|
||||
d.setLotNo(line.getLotNo());
|
||||
@@ -272,6 +273,9 @@ public class ReviewOrderDomainService {
|
||||
if (!StringUtils.hasText(d.getBarCode())) {
|
||||
d.setBarCode(outMd.getBarCode());
|
||||
}
|
||||
if (!StringUtils.hasText(d.getSize()) && StringUtils.hasText(outMd.getSize())) {
|
||||
d.setSize(outMd.getSize());
|
||||
}
|
||||
if (d.getMaterialBaseInfoId() == null) {
|
||||
d.setMaterialBaseInfoId(outMd.getMaterialBaseInfoId());
|
||||
}
|
||||
|
||||
@@ -42,6 +42,10 @@ public class ReviewMaterialDetail extends BaseVOEntity {
|
||||
|
||||
private String barCode;
|
||||
|
||||
@ApiModelProperty("尺寸")
|
||||
@TableField("SIZE")
|
||||
private String size;
|
||||
|
||||
private String unitCode;
|
||||
|
||||
private String unitName;
|
||||
|
||||
+3
@@ -49,6 +49,9 @@ public class ReviewMaterialDetailPO extends BaseVOEntity {
|
||||
@ApiModelProperty("物料条码")
|
||||
private String barCode;
|
||||
|
||||
@ApiModelProperty("尺寸")
|
||||
private String size;
|
||||
|
||||
@ApiModelProperty("单位代码")
|
||||
private String unitCode;
|
||||
|
||||
|
||||
+20
@@ -134,4 +134,24 @@ public class ImmediateInventoryPO {
|
||||
@ApiModelProperty("LOT编号")
|
||||
@Excel(name = "LOT编号")
|
||||
private String lotNumber;
|
||||
|
||||
@ApiModelProperty("库存更新时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date inventoryUpdateTime;
|
||||
|
||||
@ApiModelProperty("拣货明细最近更新时间(本库存相关已拣货明细)")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date pickLastUpdateTime;
|
||||
|
||||
@ApiModelProperty("复核明细最近更新时间(本库存相关复核条件内明细)")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date checkLastUpdateTime;
|
||||
|
||||
@ApiModelProperty("列表排序用时间(库存/拣货/复核三者最晚)")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date latestChangeTime;
|
||||
}
|
||||
+15
@@ -1,8 +1,11 @@
|
||||
package com.mhd.wms.interfaces.facadeApi.statementStatistics;
|
||||
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import com.mhd.common.core.constant.HttpStatus;
|
||||
import com.mhd.common.core.utils.PageUtils;
|
||||
import com.mhd.common.core.web.page.PageDomain;
|
||||
import com.mhd.common.core.web.page.TableSupport;
|
||||
import com.mhd.common.core.web.page.TableDataInfo;
|
||||
import com.mhd.wms.application.service.statementStatistics.StatementStatisticsService;
|
||||
import com.mhd.wms.domain.statementStatistics.po.ImmediateInventoryPO;
|
||||
@@ -100,6 +103,18 @@ public class StatementStatisticsApi {
|
||||
PageUtils.startPage();
|
||||
}
|
||||
|
||||
/**
|
||||
* 即时库存分页:不注入 PageHelper 的 orderBy,保证仅使用 SQL 中的倒序(时间由晚到早)。
|
||||
*/
|
||||
private void startPageImmediateInventory()
|
||||
{
|
||||
PageDomain pageDomain = TableSupport.buildPageRequest();
|
||||
Integer pageNum = pageDomain.getPageNum();
|
||||
Integer pageSize = pageDomain.getPageSize();
|
||||
Boolean reasonable = pageDomain.getReasonable();
|
||||
PageHelper.startPage(pageNum, pageSize, "").setReasonable(reasonable);
|
||||
}
|
||||
|
||||
/**
|
||||
* 响应请求分页数据
|
||||
*/
|
||||
|
||||
@@ -540,6 +540,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<result property="topOrganizationId" column="top_organization_id" />
|
||||
<result property="inOrderNumber" column="in_order_number" />
|
||||
<result property="lotNumber" column="lot_number" />
|
||||
<result property="inventoryUpdateTime" column="inventory_update_time" />
|
||||
<result property="pickLastUpdateTime" column="pick_last_update_time" />
|
||||
<result property="checkLastUpdateTime" column="check_last_update_time" />
|
||||
<result property="latestChangeTime" column="latest_change_time" />
|
||||
</resultMap>
|
||||
<select id="queryImmediateInventoryList" parameterType="com.mhd.wms.domain.statementStatistics.todo.ImmediateInventoryDO"
|
||||
resultMap="queryImmediateInventoryListResult">
|
||||
@@ -653,7 +657,66 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
a.organization_name,
|
||||
a.top_organization_id,
|
||||
a.batch_number,
|
||||
a.in_order_number,a.lot_number
|
||||
a.in_order_number,
|
||||
a.lot_number,
|
||||
a.update_time inventory_update_time,
|
||||
(
|
||||
SELECT MAX(c.update_time)
|
||||
FROM picking_material_detail c
|
||||
LEFT JOIN picking_order d ON c.picking_order_number = d.PICKING_ORDER_NUMBER
|
||||
left join STOCK_OUT_ORDER e ON d.ORDER_NUMBER = e.OUT_ORDER_NUMBER
|
||||
WHERE
|
||||
c.del_flag = 1 and d.STATUS = 3 and e.STATUS = 7
|
||||
AND d.warehouse_id = a.warehouse_id
|
||||
AND (a.shipper_id IS NULL OR d.shipper_id = a.shipper_id)
|
||||
AND c.material_base_info_id = a.material_base_info_id
|
||||
AND c.MATERIAL_INVENTORY_ID = a.MATERIAL_INVENTORY_ID
|
||||
) pick_last_update_time,
|
||||
(
|
||||
SELECT MAX(c.update_time)
|
||||
FROM OUT_MATERIAL_DETAIL c
|
||||
LEFT JOIN STOCK_OUT_ORDER d ON c.OUT_ORDER_NUMBER = d.OUT_ORDER_NUMBER
|
||||
LEFT JOIN HANDOVER_TASK_ORDER e ON d.OUT_ORDER_NUMBER = e.ORDER_NUMBER
|
||||
WHERE
|
||||
d.CHECK_STATUS in (2,3) and e.STATUS = 1 and d.STATUS in (8,12)
|
||||
AND d.DEL_FLAG = 1
|
||||
AND c.DEL_FLAG = 1
|
||||
and e.del_flag = 1
|
||||
AND d.warehouse_id = a.warehouse_id
|
||||
AND (a.shipper_id IS NULL OR d.shipper_id = a.shipper_id)
|
||||
AND c.material_base_info_id = a.material_base_info_id
|
||||
AND c.MATERIAL_INVENTORY_ID = a.MATERIAL_INVENTORY_ID
|
||||
) check_last_update_time,
|
||||
GREATEST(
|
||||
IFNULL(a.update_time, '1970-01-01 00:00:00'),
|
||||
IFNULL((
|
||||
SELECT MAX(c.update_time)
|
||||
FROM picking_material_detail c
|
||||
LEFT JOIN picking_order d ON c.picking_order_number = d.PICKING_ORDER_NUMBER
|
||||
left join STOCK_OUT_ORDER e ON d.ORDER_NUMBER = e.OUT_ORDER_NUMBER
|
||||
WHERE
|
||||
c.del_flag = 1 and d.STATUS = 3 and e.STATUS = 7
|
||||
AND d.warehouse_id = a.warehouse_id
|
||||
AND (a.shipper_id IS NULL OR d.shipper_id = a.shipper_id)
|
||||
AND c.material_base_info_id = a.material_base_info_id
|
||||
AND c.MATERIAL_INVENTORY_ID = a.MATERIAL_INVENTORY_ID
|
||||
), '1970-01-01 00:00:00'),
|
||||
IFNULL((
|
||||
SELECT MAX(c.update_time)
|
||||
FROM OUT_MATERIAL_DETAIL c
|
||||
LEFT JOIN STOCK_OUT_ORDER d ON c.OUT_ORDER_NUMBER = d.OUT_ORDER_NUMBER
|
||||
LEFT JOIN HANDOVER_TASK_ORDER e ON d.OUT_ORDER_NUMBER = e.ORDER_NUMBER
|
||||
WHERE
|
||||
d.CHECK_STATUS in (2,3) and e.STATUS = 1 and d.STATUS in (8,12)
|
||||
AND d.DEL_FLAG = 1
|
||||
AND c.DEL_FLAG = 1
|
||||
and e.del_flag = 1
|
||||
AND d.warehouse_id = a.warehouse_id
|
||||
AND (a.shipper_id IS NULL OR d.shipper_id = a.shipper_id)
|
||||
AND c.material_base_info_id = a.material_base_info_id
|
||||
AND c.MATERIAL_INVENTORY_ID = a.MATERIAL_INVENTORY_ID
|
||||
), '1970-01-01 00:00:00')
|
||||
) latest_change_time
|
||||
FROM
|
||||
material_inventory a
|
||||
left join material_base_info b on a.material_base_info_id=b.material_base_info_id
|
||||
@@ -925,6 +988,36 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<if test="freezeQuantityEnd != null ">
|
||||
and a.freeze_quantity < #{freezeQuantityEnd}
|
||||
</if>
|
||||
ORDER BY GREATEST(
|
||||
IFNULL(a.update_time, '1970-01-01 00:00:00'),
|
||||
IFNULL((
|
||||
SELECT MAX(c.update_time)
|
||||
FROM picking_material_detail c
|
||||
LEFT JOIN picking_order d ON c.picking_order_number = d.PICKING_ORDER_NUMBER
|
||||
left join STOCK_OUT_ORDER e ON d.ORDER_NUMBER = e.OUT_ORDER_NUMBER
|
||||
WHERE
|
||||
c.del_flag = 1 and d.STATUS = 3 and e.STATUS = 7
|
||||
AND d.warehouse_id = a.warehouse_id
|
||||
AND (a.shipper_id IS NULL OR d.shipper_id = a.shipper_id)
|
||||
AND c.material_base_info_id = a.material_base_info_id
|
||||
AND c.MATERIAL_INVENTORY_ID = a.MATERIAL_INVENTORY_ID
|
||||
), '1970-01-01 00:00:00'),
|
||||
IFNULL((
|
||||
SELECT MAX(c.update_time)
|
||||
FROM OUT_MATERIAL_DETAIL c
|
||||
LEFT JOIN STOCK_OUT_ORDER d ON c.OUT_ORDER_NUMBER = d.OUT_ORDER_NUMBER
|
||||
LEFT JOIN HANDOVER_TASK_ORDER e ON d.OUT_ORDER_NUMBER = e.ORDER_NUMBER
|
||||
WHERE
|
||||
d.CHECK_STATUS in (2,3) and e.STATUS = 1 and d.STATUS in (8,12)
|
||||
AND d.DEL_FLAG = 1
|
||||
AND c.DEL_FLAG = 1
|
||||
and e.del_flag = 1
|
||||
AND d.warehouse_id = a.warehouse_id
|
||||
AND (a.shipper_id IS NULL OR d.shipper_id = a.shipper_id)
|
||||
AND c.material_base_info_id = a.material_base_info_id
|
||||
AND c.MATERIAL_INVENTORY_ID = a.MATERIAL_INVENTORY_ID
|
||||
), '1970-01-01 00:00:00')
|
||||
) DESC, a.material_inventory_id DESC
|
||||
</select>
|
||||
|
||||
<select id="selectOneByWhere" parameterType="com.mhd.wms.domain.statementStatistics.todo.ImmediateInventoryDO"
|
||||
|
||||
@@ -48,6 +48,7 @@
|
||||
<result property="materialCode" column="material_code"/>
|
||||
<result property="materialName" column="material_name"/>
|
||||
<result property="barCode" column="bar_code"/>
|
||||
<result property="size" column="SIZE"/>
|
||||
<result property="unitCode" column="unit_code"/>
|
||||
<result property="unitName" column="unit_name"/>
|
||||
<result property="pendingReviewQty" column="pending_review_qty"/>
|
||||
@@ -229,6 +230,7 @@
|
||||
d.material_code,
|
||||
d.material_name,
|
||||
d.bar_code,
|
||||
d.SIZE,
|
||||
d.unit_code,
|
||||
d.unit_name,
|
||||
d.pending_review_qty,
|
||||
|
||||
Reference in New Issue
Block a user