自动化立体仓库 - WMS系统
pang.jiabao
23 小时以前 f8193b239dac7276cb9203af51ad9b424fa5e90d
发货时间限制
5个文件已修改
144 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/PlaController.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/ManPakOutMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/pla/sellout.html 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/pla2/sellout.html 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/pla3/sellout.html 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/PlaController.java
@@ -14,6 +14,7 @@
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.param.GlobleParameter;
import com.zy.asrs.entity.result.KeyValueVo;
import com.zy.asrs.mapper.ManPakOutMapper;
import com.zy.asrs.service.*;
import com.zy.asrs.utils.PlaExcelListener;
import com.zy.asrs.utils.SaasUtils;
@@ -36,6 +37,8 @@
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
@@ -234,11 +237,43 @@
        return R.ok(plaQtyService.getDeliveryDate());
    }
    @Resource
    private ManPakOutMapper manPakOutMapper;
    @RequestMapping(value = "/pla/sellout/auth")
    @ManagerAuth(memo = "sellout")
    @Transactional
    @Synchronized
    public R sellout(@RequestBody List<Pla> plas) {
        // 判断发货时间段内,是否超
        String pakoutTime = plas.get(0).getPakoutTime().split("\\(")[0];
        if (!Cools.isEmpty(pakoutTime)) {
            // 获取时间段内发货重量限额
            Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "MAX_WEIGHT_PER_HOUR").eq("status", 1));
            if (config != null) {
                pakoutTime = pakoutTime.split("\\(")[0].trim();
                DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
                // 解析
                LocalDateTime dateTime = LocalDateTime.parse(pakoutTime, formatter);
                // 当小时起点
                LocalDateTime startHour = dateTime.withMinute(0).withSecond(0);
                // 下一个小时
                LocalDateTime endHour = startHour.plusHours(1); // 自动处理跨天
                // 转回字符串
                String startStr = startHour.format(formatter); // 2026-01-28 23:00:00
                String endStr = endHour.format(formatter);     // 2026-01-29 00:00:00
                long anfme = manPakOutMapper.maxWeightPerHour(startStr, endStr);
                long weightMax = Long.parseLong(config.getValue());
                if (anfme + plas.get(0).getOrderWeight().longValue() > weightMax) {
                    throw new CoolException("超小时重量限额:" + weightMax + ",该小时发货量已有:" + anfme);
                }
            }
        }
        String orderNo = plas.get(0).getOrderNo();
        String maktx = plas.get(0).getBrand();
src/main/java/com/zy/asrs/mapper/ManPakOutMapper.java
@@ -5,6 +5,7 @@
import com.zy.asrs.entity.param.PakOutDTO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;
import java.util.Date;
@@ -21,4 +22,7 @@
    int selectPakOutCount(@Param("docnum") String docnum,@Param("stime") Date stime, @Param("etime") Date etime,@Param("curr") Integer curr,@Param("limit") Integer limit,
                          @Param("userId") Long userId, @Param("custName") String custName, @Param("roleId") Long roleId);
    @Select("SELECT SUM(anfme) FROM man_pakout WHERE specs >= #{startStr} AND specs < #{endStr}")
    long maxWeightPerHour(@Param("startStr") String startStr,@Param("endStr") String endStr);
}
src/main/webapp/views/pla/sellout.html
@@ -193,9 +193,42 @@
        var table = layui.table;
        var laydate = layui.laydate;
        // 日期时间选择器
        function getNowStr() {
            var d = new Date();
            return d.getFullYear() + '-' +
                String(d.getMonth() + 1).padStart(2, '0') + '-' +
                String(d.getDate()).padStart(2, '0') + ' ' +
                String(d.getHours()).padStart(2, '0') + ':' +
                String(d.getMinutes()).padStart(2, '0') + ':' +
                String(d.getSeconds()).padStart(2, '0');
        }
        laydate.render({
            elem: '#pakoutTime',
            type: 'datetime'
            type: 'datetime',
            min: getNowStr(),    // 今天及以后
            maxTime: '17:00:00', // 每天最大时间
            done: function(value){
                if (!value) return;
                var d = new Date(value.replace(/-/g,'/'));
                var now = new Date();
                // 今天必须晚于当前时间
                if(d.getTime() < now.getTime()){
                    layer.msg('今天选择的时间必须晚于当前时间');
                    document.getElementById('pakoutTime').value = '';
                    return;
                }
                // 时间限制 08:00 - 17:00
                var h = d.getHours();
                var m = d.getMinutes();
                var s = d.getSeconds();
                if(h < 8 || h > 17 || (h === 17 && (m > 0 || s > 0))){
                    layer.msg('只能选择 08:00 - 17:00 的时间');
                    document.getElementById('pakoutTime').value = '';
                }
            }
        });
        form.on('submit(edit)', function () {
src/main/webapp/views/pla2/sellout.html
@@ -191,9 +191,42 @@
        var table = layui.table;
        var laydate = layui.laydate;
        // 日期时间选择器
        function getNowStr() {
            var d = new Date();
            return d.getFullYear() + '-' +
                String(d.getMonth() + 1).padStart(2, '0') + '-' +
                String(d.getDate()).padStart(2, '0') + ' ' +
                String(d.getHours()).padStart(2, '0') + ':' +
                String(d.getMinutes()).padStart(2, '0') + ':' +
                String(d.getSeconds()).padStart(2, '0');
        }
        laydate.render({
            elem: '#pakoutTime',
            type: 'datetime'
            type: 'datetime',
            min: getNowStr(),    // 今天及以后
            maxTime: '17:00:00', // 每天最大时间
            done: function(value){
                if (!value) return;
                var d = new Date(value.replace(/-/g,'/'));
                var now = new Date();
                // 今天必须晚于当前时间
                if(d.getTime() < now.getTime()){
                    layer.msg('今天选择的时间必须晚于当前时间');
                    document.getElementById('pakoutTime').value = '';
                    return;
                }
                // 时间限制 08:00 - 17:00
                var h = d.getHours();
                var m = d.getMinutes();
                var s = d.getSeconds();
                if(h < 8 || h > 17 || (h === 17 && (m > 0 || s > 0))){
                    layer.msg('只能选择 08:00 - 17:00 的时间');
                    document.getElementById('pakoutTime').value = '';
                }
            }
        });
        form.on('submit(edit)', function () {
src/main/webapp/views/pla3/sellout.html
@@ -191,9 +191,42 @@
        var table = layui.table;
        var laydate = layui.laydate;
        // 日期时间选择器
        function getNowStr() {
            var d = new Date();
            return d.getFullYear() + '-' +
                String(d.getMonth() + 1).padStart(2, '0') + '-' +
                String(d.getDate()).padStart(2, '0') + ' ' +
                String(d.getHours()).padStart(2, '0') + ':' +
                String(d.getMinutes()).padStart(2, '0') + ':' +
                String(d.getSeconds()).padStart(2, '0');
        }
        laydate.render({
            elem: '#pakoutTime',
            type: 'datetime'
            type: 'datetime',
            min: getNowStr(),    // 今天及以后
            maxTime: '17:00:00', // 每天最大时间
            done: function(value){
                if (!value) return;
                var d = new Date(value.replace(/-/g,'/'));
                var now = new Date();
                // 今天必须晚于当前时间
                if(d.getTime() < now.getTime()){
                    layer.msg('今天选择的时间必须晚于当前时间');
                    document.getElementById('pakoutTime').value = '';
                    return;
                }
                // 时间限制 08:00 - 17:00
                var h = d.getHours();
                var m = d.getMinutes();
                var s = d.getSeconds();
                if(h < 8 || h > 17 || (h === 17 && (m > 0 || s > 0))){
                    layer.msg('只能选择 08:00 - 17:00 的时间');
                    document.getElementById('pakoutTime').value = '';
                }
            }
        });
        form.on('submit(edit)', function () {