change - 按收料通知单收料的数量限制入库、剩余出库数量提醒

master
yinq 13 hours ago
parent f722b78068
commit dbe44bba43

@ -162,7 +162,7 @@ public class WmsMobileController extends BaseController {
@Log(title = "原材料出库记录", businessType = BusinessType.CONFIRM)
@PostMapping(("/confirmRawOutstock"))
public AjaxResult confirmRawOutstock(@Validated @RequestBody WmsRawOutstockConfirmVo wmsRawOutstockConfirmVo) {
return toAjax(wmsRawOutstockService.confirmWmsRawOutstock(wmsRawOutstockConfirmVo));
return success(wmsRawOutstockService.confirmWmsRawOutstock(wmsRawOutstockConfirmVo));
}

@ -156,6 +156,32 @@ public class WmsRawInstock extends BaseEntity
*/
private String billNo;
/**
* ID
*/
private Long receiveBillId;
/**
*
*/
private BigDecimal actLandAmount;
public BigDecimal getActLandAmount() {
return actLandAmount;
}
public void setActLandAmount(BigDecimal actLandAmount) {
this.actLandAmount = actLandAmount;
}
public Long getReceiveBillId() {
return receiveBillId;
}
public void setReceiveBillId(Long receiveBillId) {
this.receiveBillId = receiveBillId;
}
public String getBillNo() {
return billNo;
}

@ -110,4 +110,12 @@ public interface WmsRawInstockMapper
public WmsRawInstock fourthFloorLatestInstockList();
/**
*
* @param materialBarcode
* @return
*/
WmsRawInstock selectPurchaseReceiveBillByBarcode(String materialBarcode);
}

@ -85,7 +85,7 @@ public interface IWmsRawOutstockService
* @param wmsRawOutstockConfirmVo
* @return
*/
public int confirmWmsRawOutstock(WmsRawOutstockConfirmVo wmsRawOutstockConfirmVo);
public String confirmWmsRawOutstock(WmsRawOutstockConfirmVo wmsRawOutstockConfirmVo);
/**
* 使

@ -1,6 +1,7 @@
package com.hw.wms.service.impl;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Date;
import java.util.List;
@ -10,6 +11,7 @@ import com.hw.common.core.constant.WmsConstants;
import com.hw.common.core.domain.R;
import com.hw.common.core.exception.ServiceException;
import com.hw.common.core.utils.DateUtils;
import com.hw.common.core.utils.StringUtils;
import com.hw.common.core.utils.uuid.Seq;
import com.hw.common.security.utils.SecurityUtils;
import com.hw.mes.api.RemoteMesService;
@ -152,6 +154,7 @@ public class WmsRawInstockServiceImpl implements IWmsRawInstockService {
@Transactional(rollbackFor = Exception.class)
@Override
public BigDecimal insertWmsRawInstock(WmsRawInstockVo wmsRawInstockVo) {
WmsRawInstock wmsRawInstock = new WmsRawInstock();
String materialBarcode = wmsRawInstockVo.getMaterialBarcode();
R<MesBaseBarcodeInfo> baseBarcodeInfoR = remoteMesService.getBarcode(materialBarcode, SecurityConstants.INNER);
if (baseBarcodeInfoR == null) {
@ -190,9 +193,23 @@ public class WmsRawInstockServiceImpl implements IWmsRawInstockService {
}
}
//按收料通知单收料的数量限制入库
WmsRawInstock checkRawInstock = wmsRawInstockMapper.selectPurchaseReceiveBillByBarcode(materialBarcode);
if (StringUtils.isNotNull(checkRawInstock) && StringUtils.isNotNull(checkRawInstock.getReceiveBillId())){
wmsRawInstock.setReceiveBillId(checkRawInstock.getReceiveBillId());
BigDecimal actLandAmount = checkRawInstock.getActLandAmount();
if (instockAmount.subtract(actLandAmount).compareTo(BigDecimal.ZERO) > 0) {
throw new ServiceException("入库数量超出收料通知单数量(" + actLandAmount.setScale(2, RoundingMode.HALF_UP) + ",无法入库!");
}
//可入库数量
BigDecimal availableAmount = actLandAmount.subtract(checkRawInstock.getInstockAmount());
if (instockAmount.subtract(availableAmount).compareTo(BigDecimal.ZERO) > 0) {
throw new ServiceException("可入库数量为" + checkRawInstock.getActLandAmount().setScale(2, RoundingMode.HALF_UP) + ",无法入库!");
}
}
Date currentDate = new Date();
String userName = SecurityUtils.getLoginUser() == null ? SecurityUtils.getUsername() : SecurityUtils.getLoginUser().getNickname();
WmsRawInstock wmsRawInstock = new WmsRawInstock();
wmsRawInstock.setTaskCode(Seq.getId(Seq.rawInstockSeqType, Seq.rawInstockSeqCode));
wmsRawInstock.setWarehouseId(baseLocation.getWarehouseId());
wmsRawInstock.setLocationCode(locationCode);

@ -35,6 +35,7 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.client.RestTemplate;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
import java.util.stream.Collectors;
@ -299,11 +300,12 @@ public class WmsRawOutstockServiceImpl implements IWmsRawOutstockService {
*/
@Transactional(rollbackFor = Exception.class)
@Override
public int confirmWmsRawOutstock(WmsRawOutstockConfirmVo wmsRawOutstockConfirmVo) {
public String confirmWmsRawOutstock(WmsRawOutstockConfirmVo wmsRawOutstockConfirmVo) {
Long rawOutstockId = wmsRawOutstockConfirmVo.getRawOutstockDetailId();
String locationCode = wmsRawOutstockConfirmVo.getLocationCode();
String materialBarcode = wmsRawOutstockConfirmVo.getInstockBatch();//在此是物料条码,不是批次码
BigDecimal outstockAmount = wmsRawOutstockConfirmVo.getOutstockAmount();
String result = "操作成功";
if (outstockAmount.compareTo(BigDecimal.ZERO) <= 0) {
throw new ServiceException("数量需大于0");
}
@ -353,14 +355,14 @@ public class WmsRawOutstockServiceImpl implements IWmsRawOutstockService {
}
WmsRawOutstockDetail queryRawOutstockDetail = new WmsRawOutstockDetail();
queryRawOutstockDetail.setRawOutstockId(wmsRawOutstock.getRawOutstockId());
queryRawOutstockDetail.setLocationCode(locationCode);
queryRawOutstockDetail.setMaterialBarcode(materialBarcode);
int rawOutstockDetailCount = wmsRawOutstockDetailMapper.selectCountOfWmsRawOutstockDetail(queryRawOutstockDetail);
if (rawOutstockDetailCount > 0) {
throw new ServiceException("此物料已经出库,不能重复出库");
}
// WmsRawOutstockDetail queryRawOutstockDetail = new WmsRawOutstockDetail();
// queryRawOutstockDetail.setRawOutstockId(wmsRawOutstock.getRawOutstockId());
// queryRawOutstockDetail.setLocationCode(locationCode);
// queryRawOutstockDetail.setMaterialBarcode(materialBarcode);
// int rawOutstockDetailCount = wmsRawOutstockDetailMapper.selectCountOfWmsRawOutstockDetail(queryRawOutstockDetail);
// if (rawOutstockDetailCount > 0 && !batchFlag.equals(MesConstants.IS_BATCH)) {
// throw new ServiceException("此物料已经出库,不能重复出库");
// }
// if (wmsRawOutstockDetail.getQualityStatus() != null
// && !wmsRawOutstockDetail.getQualityStatus().equals(WmsConstants.WMS_QUALITY_STATUS_PASS)) {
@ -376,6 +378,10 @@ public class WmsRawOutstockServiceImpl implements IWmsRawOutstockService {
throw new ServiceException("出库数量不能大于" + planOutstockAmount.subtract(hadOutstockAmount));
}
if (updatedOutstockAmount.compareTo(planOutstockAmount) < 0) {
result = "剩余出库数量:" + planOutstockAmount.subtract(updatedOutstockAmount).setScale(2, RoundingMode.HALF_UP);
}
Date currentDate = new Date();
String userName = SecurityUtils.getLoginUser() == null ? SecurityUtils.getUsername() : SecurityUtils.getLoginUser().getNickname();
@ -399,7 +405,7 @@ public class WmsRawOutstockServiceImpl implements IWmsRawOutstockService {
//rawstock的trigger中更新stocktotal的占用数量和库存数量
return 1;
return result;
}
public WmsRawOutstock getWmsRawOutstock(WmsBaseLocation baseLocation, MesBaseBarcodeInfo baseBarcodeInfo) {

@ -44,10 +44,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="fsBillId" column="fs_bill_id" />
<result property="fsId" column="fs_id" />
<result property="billNo" column="bill_no" />
<result property="receiveBillId" column="receive_bill_id" />
<result property="actLandAmount" column="act_land_amount" />
</resultMap>
<sql id="selectWmsRawInstockVo">
select raw_instock_id, task_code, warehouse_id, location_code, po_no, operation_type, instock_type, material_id, material_barcode, material_batch_code, pallet_info_code, instock_amount, execute_status, erp_status, erp_amount, apply_by, apply_date, machine_name, quality_status, update_by, update_date, begin_time, end_time from wms_raw_instock
select raw_instock_id, task_code, warehouse_id, location_code, po_no, operation_type, instock_type, material_id, material_barcode, material_batch_code, pallet_info_code, instock_amount, execute_status, erp_status, erp_amount, apply_by, apply_date, machine_name, quality_status, update_by, update_date, begin_time, end_time, receive_bill_id from wms_raw_instock
</sql>
<select id="selectWmsRawInstockList" parameterType="WmsRawInstock" resultMap="WmsRawInstockResult">
@ -104,6 +106,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="updateDate != null">update_date,</if>
<if test="beginTime != null">begin_time,</if>
<if test="endTime != null">end_time,</if>
<if test="receiveBillId != null">receive_bill_id,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="taskCode != null">#{taskCode},</if>
@ -131,6 +134,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="updateDate != null">#{updateDate},</if>
<if test="beginTime != null">#{beginTime},</if>
<if test="endTime != null">#{endTime},</if>
<if test="receiveBillId != null">#{receiveBillId},</if>
</trim>
</insert>
@ -159,6 +163,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="updateDate != null">update_date = #{updateDate},</if>
<if test="beginTime != null">begin_time = #{beginTime},</if>
<if test="endTime != null">end_time = #{endTime},</if>
<if test="receiveBillId != null">receive_bill_id = #{receiveBillId},</if>
</trim>
where raw_instock_id = #{rawInstockId}
</update>
@ -340,4 +345,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
and x.apply_date > now() - interval 1 year
</select>
<select id="selectPurchaseReceiveBillByBarcode" parameterType="WmsRawInstock" resultMap="WmsRawInstockResult">
select bbi.barcode_info material_barcode,
bbi.receive_bill_id,
mprb.act_land_amount,
(select IF(SUM(instock_amount) IS NULL, 0, SUM(instock_amount))
from wms_raw_instock wr
where wr.receive_bill_id = bbi.receive_bill_id) instock_amount
from mes_base_barcode_info bbi
left join mes_purchase_receive_bill mprb on mprb.receive_bill_id = bbi.receive_bill_id
where bbi.barcode_info = #{materialBarcode}
limit 1
</select>
</mapper>

Loading…
Cancel
Save