| | |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.nio.charset.Charset; |
| | | import java.util.*; |
| | | |
| | | @RestController |
| | | public class BasDevpController extends BaseController { |
| | | |
| | | private static final Charset SQL_SERVER_VARCHAR_CHARSET = Charset.forName("GBK"); |
| | | |
| | | @Autowired |
| | | private BasDevpService basDevpService; |
| | |
| | | @ManagerAuth(memo = "站点添加") |
| | | public R add(BasDevp basDevp) { |
| | | normalizeInboundPriority(basDevp, null); |
| | | normalizeAndValidateForSave(basDevp); |
| | | basDevp.setModiUser(getUserId()); |
| | | basDevp.setModiTime(new Date()); |
| | | basDevp.setAppeUser(getUserId()); |
| | |
| | | return R.error("站点不存在"); |
| | | } |
| | | normalizeInboundPriority(basDevp, existing); |
| | | normalizeAndValidateForSave(basDevp); |
| | | basDevp.setModiUser(getUserId()); |
| | | basDevp.setModiTime(new Date()); |
| | | basDevpService.updateById(basDevp); |
| | |
| | | return R.ok(); |
| | | } |
| | | |
| | | private void normalizeAndValidateForSave(BasDevp basDevp) { |
| | | if (basDevp == null) { |
| | | return; |
| | | } |
| | | basDevp.setInEnable(normalizeYn("可入", basDevp.getInEnable())); |
| | | basDevp.setOutEnable(normalizeYn("可出", basDevp.getOutEnable())); |
| | | basDevp.setAutoing(normalizeYn("自动", basDevp.getAutoing())); |
| | | basDevp.setLoading(normalizeYn("有物", basDevp.getLoading())); |
| | | basDevp.setCanining(normalizeYn("能入", basDevp.getCanining())); |
| | | basDevp.setCanouting(normalizeYn("能出", basDevp.getCanouting())); |
| | | basDevp.setFronting(normalizeYn("fronting", basDevp.getFronting())); |
| | | basDevp.setRearing(normalizeYn("rearing", basDevp.getRearing())); |
| | | basDevp.setUping(normalizeYn("uping", basDevp.getUping())); |
| | | basDevp.setDowning(normalizeYn("downing", basDevp.getDowning())); |
| | | basDevp.setInreq1(normalizeYn("需求1", basDevp.getInreq1())); |
| | | basDevp.setInreq2(normalizeYn("需求2", basDevp.getInreq2())); |
| | | basDevp.setInOk(normalizeYn("in_ok", basDevp.getInOk())); |
| | | basDevp.setOutOk(normalizeYn("out_ok", basDevp.getOutOk())); |
| | | |
| | | validateVarcharLength("设备描述", basDevp.getDecDesc(), 30); |
| | | validateVarcharLength("备注", basDevp.getDevMk(), 1); |
| | | validateVarcharLength("条形码", basDevp.getBarcode(), 255); |
| | | validateVarcharLength("绑定库区", basDevp.getArea(), 255); |
| | | validateVarcharLength("第一优先池", basDevp.getInFirstCrnCsv(), 255); |
| | | validateVarcharLength("第二优先池", basDevp.getInSecondCrnCsv(), 255); |
| | | } |
| | | |
| | | private String normalizeYn(String label, String value) { |
| | | if (Cools.isEmpty(value)) { |
| | | return null; |
| | | } |
| | | String normalized = value.trim().toUpperCase(Locale.ROOT); |
| | | if ("Y".equals(normalized) || "1".equals(normalized) || "TRUE".equals(normalized) || "YES".equals(normalized)) { |
| | | return "Y"; |
| | | } |
| | | if ("N".equals(normalized) || "0".equals(normalized) || "FALSE".equals(normalized) || "NO".equals(normalized) || "OFF".equals(normalized) || "ON".equals(normalized)) { |
| | | return "N"; |
| | | } |
| | | throw new CoolException(label + "只能为Y或N"); |
| | | } |
| | | |
| | | private void validateVarcharLength(String label, String value, int maxBytes) { |
| | | if (value == null) { |
| | | return; |
| | | } |
| | | int bytes = value.getBytes(SQL_SERVER_VARCHAR_CHARSET).length; |
| | | if (bytes > maxBytes) { |
| | | throw new CoolException(label + "长度不能超过" + maxBytes + "字节"); |
| | | } |
| | | } |
| | | |
| | | private void normalizeInboundPriority(BasDevp basDevp, BasDevp existing) { |
| | | if (basDevp == null) { |
| | | return; |